2 * Copyright (C) 2000 Francois Gouget
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef __WINE_RPCDCE_H
20 #define __WINE_RPCDCE_H
45 typedef void* RPC_AUTH_IDENTITY_HANDLE;
46 typedef void* RPC_AUTHZ_HANDLE;
47 typedef void* RPC_IF_HANDLE;
48 typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
49 typedef RPC_BINDING_HANDLE handle_t;
50 #define rpc_binding_handle_t RPC_BINDING_HANDLE
51 #define RPC_MGR_EPV void
53 typedef struct _RPC_BINDING_VECTOR
56 RPC_BINDING_HANDLE BindingH[1];
58 #define rpc_binding_vector_t RPC_BINDING_VECTOR
60 typedef struct _UUID_VECTOR
65 #define uuid_vector_t UUID_VECTOR
67 typedef struct _RPC_IF_ID
70 unsigned short VersMajor;
71 unsigned short VersMinor;
80 #define RPC_C_BINDING_INFINITE_TIMEOUT 10
81 #define RPC_C_BINDING_MIN_TIMEOUT 0
82 #define RPC_C_BINDING_DEFAULT_TIMEOUT 5
83 #define RPC_C_BINDING_MAX_TIMEOUT 9
85 #define RPC_C_CANCEL_INFINITE_TIMEOUT -1
87 #define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
88 #define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
90 /* RPC_POLICY EndpointFlags */
91 #define RPC_C_BIND_TO_ALL_NICS 0x1
92 #define RPC_C_USE_INTERNET_PORT 0x1
93 #define RPC_C_USE_INTRANET_PORT 0x2
94 #define RPC_C_DONT_FAIL 0x4
96 /* RPC_POLICY EndpointFlags specific to the Falcon/RPC transport */
97 #define RPC_C_MQ_TEMPORARY 0x0000
98 #define RPC_C_MQ_PERMANENT 0x0001
99 #define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
100 #define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
101 #define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
102 #define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
103 #define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
106 typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN( RPC_IF_HANDLE InterfaceUuid, void *Context );
107 typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)();
109 typedef struct _RPC_POLICY
112 unsigned long EndpointFlags;
113 unsigned long NICFlags;
114 } RPC_POLICY, *PRPC_POLICY;
116 typedef struct _SEC_WINNT_AUTH_IDENTITY_W
118 unsigned short __RPC_FAR* User;
119 unsigned long UserLength;
120 unsigned short __RPC_FAR* Domain;
121 unsigned long DomainLength;
122 unsigned short __RPC_FAR* Password;
123 unsigned long PasswordLength;
125 } SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
127 typedef struct _SEC_WINNT_AUTH_IDENTITY_A
129 unsigned char __RPC_FAR* User;
130 unsigned long UserLength;
131 unsigned char __RPC_FAR* Domain;
132 unsigned long DomainLength;
133 unsigned char __RPC_FAR* Password;
134 unsigned long PasswordLength;
136 } SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
138 #define _SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(_SEC_WINNT_AUTH_IDENTITY_)
139 #define SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(SEC_WINNT_AUTH_IDENTITY_)
140 #define PSEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_)
142 /* SEC_WINNT_AUTH Flags */
143 #define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
144 #define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
146 /* RpcServerRegisterIfEx Flags */
147 #define RPC_IF_AUTOLISTEN 0x1
148 #define RPC_IF_OLE 0x2
149 #define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x4
150 #define RPC_IF_ALLOW_SECURE_ONLY 0x8
152 RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS e, unsigned char *buffer);
153 RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS e, unsigned short *buffer);
154 #define DceErrorInqText WINELIB_NAME_AW(DceErrorInqText)
156 RPCRTAPI void RPC_ENTRY
157 RpcRaiseException( RPC_STATUS exception );
159 RPCRTAPI RPC_STATUS RPC_ENTRY
160 RpcBindingCopy( RPC_BINDING_HANDLE SourceBinding, RPC_BINDING_HANDLE* DestinationBinding );
162 RPCRTAPI RPC_STATUS RPC_ENTRY
163 RpcBindingFree( RPC_BINDING_HANDLE* Binding );
165 RPCRTAPI RPC_STATUS RPC_ENTRY
166 RpcBindingInqObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
167 RPCRTAPI RPC_STATUS RPC_ENTRY
168 RpcBindingReset( RPC_BINDING_HANDLE Binding );
169 RPCRTAPI RPC_STATUS RPC_ENTRY
170 RpcBindingSetObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
171 RPCRTAPI RPC_STATUS RPC_ENTRY
172 RpcObjectSetType( UUID* ObjUuid, UUID* TypeUuid );
174 RPCRTAPI RPC_STATUS RPC_ENTRY
175 RpcBindingFromStringBindingA( unsigned char *StringBinding, RPC_BINDING_HANDLE* Binding );
176 RPCRTAPI RPC_STATUS RPC_ENTRY
177 RpcBindingFromStringBindingW( unsigned short *StringBinding, RPC_BINDING_HANDLE* Binding );
178 #define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
180 RPCRTAPI RPC_STATUS RPC_ENTRY
181 RpcBindingToStringBindingA( RPC_BINDING_HANDLE Binding, unsigned char **StringBinding );
182 RPCRTAPI RPC_STATUS RPC_ENTRY
183 RpcBindingToStringBindingW( RPC_BINDING_HANDLE Binding, unsigned short **StringBinding );
184 #define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
186 RPCRTAPI RPC_STATUS RPC_ENTRY
187 RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector );
189 RPCRTAPI RPC_STATUS RPC_ENTRY
190 RpcStringBindingComposeA( unsigned char *ObjUuid, unsigned char *Protseq, unsigned char *NetworkAddr,
191 unsigned char *Endpoint, unsigned char *Options, unsigned char **StringBinding );
192 RPCRTAPI RPC_STATUS RPC_ENTRY
193 RpcStringBindingComposeW( unsigned short *ObjUuid, unsigned short *Protseq, unsigned short *NetworkAddr,
194 unsigned short *Endpoint, unsigned short *Options, unsigned short **StringBinding );
195 #define RpcStringBindingCompose WINELIB_NAME_AW(RpcStringBindingCompose)
197 RPCRTAPI RPC_STATUS RPC_ENTRY
198 RpcStringBindingParseA( unsigned char *StringBinding, unsigned char **ObjUuid, unsigned char **Protseq,
199 unsigned char **NetworkAddr, unsigned char **Endpoint, unsigned char **NetworkOptions );
200 RPCRTAPI RPC_STATUS RPC_ENTRY
201 RpcStringBindingParseW( unsigned short *StringBinding, unsigned short **ObjUuid, unsigned short **Protseq,
202 unsigned short **NetworkAddr, unsigned short **Endpoint, unsigned short **NetworkOptions );
203 #define RpcStringBindingParse WINELIB_NAME_AW(RpcStringBindingParse)
205 RPCRTAPI RPC_STATUS RPC_ENTRY
206 RpcEpResolveBinding( RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec );
208 RPCRTAPI RPC_STATUS RPC_ENTRY
209 RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
210 UUID_VECTOR* UuidVector, unsigned char *Annotation );
211 RPCRTAPI RPC_STATUS RPC_ENTRY
212 RpcEpRegisterW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
213 UUID_VECTOR* UuidVector, unsigned short *Annotation );
214 #define RpcEpRegister WINELIB_NAME_AW(RpcEpRegister)
216 RPCRTAPI RPC_STATUS RPC_ENTRY
217 RpcEpRegisterNoReplaceA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
218 UUID_VECTOR* UuidVector, unsigned char *Annotation );
219 RPCRTAPI RPC_STATUS RPC_ENTRY
220 RpcEpRegisterNoReplaceW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
221 UUID_VECTOR* UuidVector, unsigned short *Annotation );
222 #define RpcEpRegisterNoReplace WINELIB_NAME_AW(RpcEpRegisterNoReplace)
224 RPCRTAPI RPC_STATUS RPC_ENTRY
225 RpcEpUnregister( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
226 UUID_VECTOR* UuidVector );
228 RPCRTAPI RPC_STATUS RPC_ENTRY
229 RpcServerInqBindings( RPC_BINDING_VECTOR** BindingVector );
231 RPCRTAPI RPC_STATUS RPC_ENTRY
232 RpcServerListen( unsigned int MinimumCallThreads, unsigned int MaxCalls, unsigned int DontWait );
234 RPCRTAPI RPC_STATUS RPC_ENTRY
235 RpcMgmtWaitServerListen( void );
237 RPCRTAPI RPC_STATUS RPC_ENTRY
238 RpcMgmtStopServerListening( RPC_BINDING_HANDLE Binding );
240 RPCRTAPI RPC_STATUS RPC_ENTRY
241 RpcMgmtInqIfIds( RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR** IfIdVector );
243 RPCRTAPI RPC_STATUS RPC_ENTRY
244 RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv );
246 RPCRTAPI RPC_STATUS RPC_ENTRY
247 RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
248 unsigned int Flags, unsigned int MaxCalls, RPC_IF_CALLBACK_FN* IfCallbackFn );
250 RPCRTAPI RPC_STATUS RPC_ENTRY
251 RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
252 unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn );
254 RPCRTAPI RPC_STATUS RPC_ENTRY
255 RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, unsigned int WaitForCallsToComplete );
257 RPCRTAPI RPC_STATUS RPC_ENTRY
258 RpcServerUnregisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, int RundownContextHandles );
261 RPCRTAPI RPC_STATUS RPC_ENTRY
262 RpcServerUseProtseqA(unsigned char *Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
263 RPCRTAPI RPC_STATUS RPC_ENTRY
264 RpcServerUseProtseqW(unsigned short *Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
265 #define RpcServerUseProtseq WINELIB_NAME_AW(RpcServerUseProtseq)
267 RPCRTAPI RPC_STATUS RPC_ENTRY
268 RpcServerUseProtseqEpA( unsigned char *Protseq, unsigned int MaxCalls, unsigned char *Endpoint, void *SecurityDescriptor );
269 RPCRTAPI RPC_STATUS RPC_ENTRY
270 RpcServerUseProtseqEpW( unsigned short *Protseq, unsigned int MaxCalls, unsigned short *Endpoint, void *SecurityDescriptor );
271 #define RpcServerUseProtseqEp WINELIB_NAME_AW(RpcServerUseProtseqEp)
273 RPCRTAPI RPC_STATUS RPC_ENTRY
274 RpcServerUseProtseqEpExA( unsigned char *Protseq, unsigned int MaxCalls, unsigned char *Endpoint, void *SecurityDescriptor,
275 PRPC_POLICY Policy );
276 RPCRTAPI RPC_STATUS RPC_ENTRY
277 RpcServerUseProtseqEpExW( unsigned short *Protseq, unsigned int MaxCalls, unsigned short *Endpoint, void *SecurityDescriptor,
278 PRPC_POLICY Policy );
279 #define RpcServerUseProtseqEpEx WINELIB_NAME_AW(RpcServerUseProtseqEpEx)
281 RPCRTAPI RPC_STATUS RPC_ENTRY
282 RpcServerRegisterAuthInfoA( unsigned char *ServerPrincName, unsigned long AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
284 RPCRTAPI RPC_STATUS RPC_ENTRY
285 RpcServerRegisterAuthInfoW( unsigned short *ServerPrincName, unsigned long AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
287 #define RpcServerRegisterAuthInfo WINELIB_NAME_AW(RpcServerRegisterAuthInfo)
289 RPCRTAPI RPC_STATUS RPC_ENTRY
290 RpcNetworkIsProtseqValidA( unsigned char *protseq );
291 RPCRTAPI RPC_STATUS RPC_ENTRY
292 RpcNetworkIsProtseqValidW( unsigned short *protseq );
293 #define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
295 RPCRTAPI RPC_STATUS RPC_ENTRY
296 RpcStringFreeA(unsigned char** String);
297 RPCRTAPI RPC_STATUS RPC_ENTRY
298 RpcStringFreeW(unsigned short** String);
299 #define RpcStringFree WINELIB_NAME_AW(RpcStringFree)
301 RPCRTAPI RPC_STATUS RPC_ENTRY
302 UuidToStringA( UUID* Uuid, unsigned char** StringUuid );
303 RPCRTAPI RPC_STATUS RPC_ENTRY
304 UuidToStringW( UUID* Uuid, unsigned short** StringUuid );
305 #define UuidToString WINELIB_NAME_AW(UuidToString)
307 RPCRTAPI RPC_STATUS RPC_ENTRY
308 UuidFromStringA( unsigned char* StringUuid, UUID* Uuid );
309 RPCRTAPI RPC_STATUS RPC_ENTRY
310 UuidFromStringW( unsigned short* StringUuid, UUID* Uuid );
311 #define UuidFromString WINELIB_NAME_AW(UuidFromString)
313 RPCRTAPI RPC_STATUS RPC_ENTRY
314 UuidCreate( UUID* Uuid );
315 RPCRTAPI RPC_STATUS RPC_ENTRY
316 UuidCreateSequential( UUID* Uuid );
317 RPCRTAPI RPC_STATUS RPC_ENTRY
318 UuidCreateNil( UUID* Uuid );
319 RPCRTAPI signed int RPC_ENTRY
320 UuidCompare( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
321 RPCRTAPI int RPC_ENTRY
322 UuidEqual( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
323 RPCRTAPI unsigned short RPC_ENTRY
324 UuidHash(UUID* Uuid, RPC_STATUS* Status_ );
325 RPCRTAPI int RPC_ENTRY
326 UuidIsNil( UUID* Uuid, RPC_STATUS* Status_ );
334 #endif /*__WINE_RPCDCE_H */