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
;
74 #define RPC_C_BINDING_INFINITE_TIMEOUT 10
75 #define RPC_C_BINDING_MIN_TIMEOUT 0
76 #define RPC_C_BINDING_DEFAULT_TIMEOUT 5
77 #define RPC_C_BINDING_MAX_TIMEOUT 9
79 #define RPC_C_CANCEL_INFINITE_TIMEOUT -1
81 #define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
82 #define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
84 /* RPC_POLICY EndpointFlags */
85 #define RPC_C_BIND_TO_ALL_NICS 0x1
86 #define RPC_C_USE_INTERNET_PORT 0x1
87 #define RPC_C_USE_INTRANET_PORT 0x2
88 #define RPC_C_DONT_FAIL 0x4
90 /* RPC_POLICY EndpointFlags specific to the Falcon/RPC transport */
91 #define RPC_C_MQ_TEMPORARY 0x0000
92 #define RPC_C_MQ_PERMANENT 0x0001
93 #define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
94 #define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
95 #define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
96 #define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
97 #define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
100 typedef RPC_STATUS RPC_ENTRY
RPC_IF_CALLBACK_FN( RPC_IF_HANDLE InterfaceUuid
, void *Context
);
101 typedef void (__RPC_USER
*RPC_AUTH_KEY_RETRIEVAL_FN
)();
103 typedef struct _RPC_POLICY
106 unsigned long EndpointFlags
;
107 unsigned long NICFlags
;
108 } RPC_POLICY
, *PRPC_POLICY
;
110 typedef struct _SEC_WINNT_AUTH_IDENTITY_W
112 unsigned short __RPC_FAR
* User
;
113 unsigned long UserLength
;
114 unsigned short __RPC_FAR
* Domain
;
115 unsigned long DomainLength
;
116 unsigned short __RPC_FAR
* Password
;
117 unsigned long PasswordLength
;
119 } SEC_WINNT_AUTH_IDENTITY_W
, *PSEC_WINNT_AUTH_IDENTITY_W
;
121 typedef struct _SEC_WINNT_AUTH_IDENTITY_A
123 unsigned char __RPC_FAR
* User
;
124 unsigned long UserLength
;
125 unsigned char __RPC_FAR
* Domain
;
126 unsigned long DomainLength
;
127 unsigned char __RPC_FAR
* Password
;
128 unsigned long PasswordLength
;
130 } SEC_WINNT_AUTH_IDENTITY_A
, *PSEC_WINNT_AUTH_IDENTITY_A
;
132 #define _SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(_SEC_WINNT_AUTH_IDENTITY_)
133 #define SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(SEC_WINNT_AUTH_IDENTITY_)
134 #define PSEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_)
136 /* SEC_WINNT_AUTH Flags */
137 #define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
138 #define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
140 /* RpcServerRegisterIfEx Flags */
141 #define RPC_IF_AUTOLISTEN 0x1
142 #define RPC_IF_OLE 0x2
143 #define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x4
144 #define RPC_IF_ALLOW_SECURE_ONLY 0x8
146 RPC_STATUS RPC_ENTRY
DceErrorInqTextA(RPC_STATUS e
, unsigned char *buffer
);
147 RPC_STATUS RPC_ENTRY
DceErrorInqTextW(RPC_STATUS e
, unsigned short *buffer
);
148 #define DceErrorInqText WINELIB_NAME_AW(DceErrorInqText)
150 RPCRTAPI
void RPC_ENTRY
151 RpcRaiseException( RPC_STATUS exception
);
153 RPCRTAPI RPC_STATUS RPC_ENTRY
154 RpcBindingCopy( RPC_BINDING_HANDLE SourceBinding
, RPC_BINDING_HANDLE
* DestinationBinding
);
156 RPCRTAPI RPC_STATUS RPC_ENTRY
157 RpcBindingFree( RPC_BINDING_HANDLE
* Binding
);
159 RPCRTAPI RPC_STATUS RPC_ENTRY
160 RpcBindingInqObject( RPC_BINDING_HANDLE Binding
, UUID
* ObjectUuid
);
161 RPCRTAPI RPC_STATUS RPC_ENTRY
162 RpcBindingReset( RPC_BINDING_HANDLE Binding
);
163 RPCRTAPI RPC_STATUS RPC_ENTRY
164 RpcBindingSetObject( RPC_BINDING_HANDLE Binding
, UUID
* ObjectUuid
);
165 RPCRTAPI RPC_STATUS RPC_ENTRY
166 RpcObjectSetType( UUID
* ObjUuid
, UUID
* TypeUuid
);
168 RPCRTAPI RPC_STATUS RPC_ENTRY
169 RpcBindingFromStringBindingA( unsigned char *StringBinding
, RPC_BINDING_HANDLE
* Binding
);
170 RPCRTAPI RPC_STATUS RPC_ENTRY
171 RpcBindingFromStringBindingW( unsigned short *StringBinding
, RPC_BINDING_HANDLE
* Binding
);
172 #define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
174 RPCRTAPI RPC_STATUS RPC_ENTRY
175 RpcBindingToStringBindingA( RPC_BINDING_HANDLE Binding
, unsigned char **StringBinding
);
176 RPCRTAPI RPC_STATUS RPC_ENTRY
177 RpcBindingToStringBindingW( RPC_BINDING_HANDLE Binding
, unsigned short **StringBinding
);
178 #define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
180 RPCRTAPI RPC_STATUS RPC_ENTRY
181 RpcBindingVectorFree( RPC_BINDING_VECTOR
** BindingVector
);
183 RPCRTAPI RPC_STATUS RPC_ENTRY
184 RpcStringBindingComposeA( unsigned char *ObjUuid
, unsigned char *Protseq
, unsigned char *NetworkAddr
,
185 unsigned char *Endpoint
, unsigned char *Options
, unsigned char **StringBinding
);
186 RPCRTAPI RPC_STATUS RPC_ENTRY
187 RpcStringBindingComposeW( unsigned short *ObjUuid
, unsigned short *Protseq
, unsigned short *NetworkAddr
,
188 unsigned short *Endpoint
, unsigned short *Options
, unsigned short **StringBinding
);
189 #define RpcStringBindingCompose WINELIB_NAME_AW(RpcStringBindingCompose)
191 RPCRTAPI RPC_STATUS RPC_ENTRY
192 RpcStringBindingParseA( unsigned char *StringBinding
, unsigned char **ObjUuid
, unsigned char **Protseq
,
193 unsigned char **NetworkAddr
, unsigned char **Endpoint
, unsigned char **NetworkOptions
);
194 RPCRTAPI RPC_STATUS RPC_ENTRY
195 RpcStringBindingParseW( unsigned short *StringBinding
, unsigned short **ObjUuid
, unsigned short **Protseq
,
196 unsigned short **NetworkAddr
, unsigned short **Endpoint
, unsigned short **NetworkOptions
);
197 #define RpcStringBindingParse WINELIB_NAME_AW(RpcStringBindingParse)
199 RPCRTAPI RPC_STATUS RPC_ENTRY
200 RpcEpResolveBinding( RPC_BINDING_HANDLE Binding
, RPC_IF_HANDLE IfSpec
);
202 RPCRTAPI RPC_STATUS RPC_ENTRY
203 RpcEpRegisterA( RPC_IF_HANDLE IfSpec
, RPC_BINDING_VECTOR
* BindingVector
,
204 UUID_VECTOR
* UuidVector
, unsigned char *Annotation
);
205 RPCRTAPI RPC_STATUS RPC_ENTRY
206 RpcEpRegisterW( RPC_IF_HANDLE IfSpec
, RPC_BINDING_VECTOR
* BindingVector
,
207 UUID_VECTOR
* UuidVector
, unsigned short *Annotation
);
208 #define RpcEpRegister WINELIB_NAME_AW(RpcEpRegister)
210 RPCRTAPI RPC_STATUS RPC_ENTRY
211 RpcEpRegisterNoReplaceA( RPC_IF_HANDLE IfSpec
, RPC_BINDING_VECTOR
* BindingVector
,
212 UUID_VECTOR
* UuidVector
, unsigned char *Annotation
);
213 RPCRTAPI RPC_STATUS RPC_ENTRY
214 RpcEpRegisterNoReplaceW( RPC_IF_HANDLE IfSpec
, RPC_BINDING_VECTOR
* BindingVector
,
215 UUID_VECTOR
* UuidVector
, unsigned short *Annotation
);
216 #define RpcEpRegisterNoReplace WINELIB_NAME_AW(RpcEpRegisterNoReplace)
218 RPCRTAPI RPC_STATUS RPC_ENTRY
219 RpcEpUnregister( RPC_IF_HANDLE IfSpec
, RPC_BINDING_VECTOR
* BindingVector
,
220 UUID_VECTOR
* UuidVector
);
222 RPCRTAPI RPC_STATUS RPC_ENTRY
223 RpcServerInqBindings( RPC_BINDING_VECTOR
** BindingVector
);
225 RPCRTAPI RPC_STATUS RPC_ENTRY
226 RpcServerListen( unsigned int MinimumCallThreads
, unsigned int MaxCalls
, unsigned int DontWait
);
228 RPCRTAPI RPC_STATUS RPC_ENTRY
229 RpcMgmtWaitServerListen( void );
231 RPCRTAPI RPC_STATUS RPC_ENTRY
232 RpcMgmtStopServerListening( RPC_BINDING_HANDLE Binding
);
234 RPCRTAPI RPC_STATUS RPC_ENTRY
235 RpcServerRegisterIf( RPC_IF_HANDLE IfSpec
, UUID
* MgrTypeUuid
, RPC_MGR_EPV
* MgrEpv
);
237 RPCRTAPI RPC_STATUS RPC_ENTRY
238 RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec
, UUID
* MgrTypeUuid
, RPC_MGR_EPV
* MgrEpv
,
239 unsigned int Flags
, unsigned int MaxCalls
, RPC_IF_CALLBACK_FN
* IfCallbackFn
);
241 RPCRTAPI RPC_STATUS RPC_ENTRY
242 RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec
, UUID
* MgrTypeUuid
, RPC_MGR_EPV
* MgrEpv
,
243 unsigned int Flags
, unsigned int MaxCalls
, unsigned int MaxRpcSize
, RPC_IF_CALLBACK_FN
* IfCallbackFn
);
245 RPCRTAPI RPC_STATUS RPC_ENTRY
246 RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec
, UUID
* MgrTypeUuid
, unsigned int WaitForCallsToComplete
);
248 RPCRTAPI RPC_STATUS RPC_ENTRY
249 RpcServerUnregisterIfEx( RPC_IF_HANDLE IfSpec
, UUID
* MgrTypeUuid
, int RundownContextHandles
);
252 RPCRTAPI RPC_STATUS RPC_ENTRY
253 RpcServerUseProtseqA(unsigned char *Protseq
, unsigned int MaxCalls
, void *SecurityDescriptor
);
254 RPCRTAPI RPC_STATUS RPC_ENTRY
255 RpcServerUseProtseqW(unsigned short *Protseq
, unsigned int MaxCalls
, void *SecurityDescriptor
);
256 #define RpcServerUseProtseq WINELIB_NAME_AW(RpcServerUseProtseq)
258 RPCRTAPI RPC_STATUS RPC_ENTRY
259 RpcServerUseProtseqEpA( unsigned char *Protseq
, unsigned int MaxCalls
, unsigned char *Endpoint
, void *SecurityDescriptor
);
260 RPCRTAPI RPC_STATUS RPC_ENTRY
261 RpcServerUseProtseqEpW( unsigned short *Protseq
, unsigned int MaxCalls
, unsigned short *Endpoint
, void *SecurityDescriptor
);
262 #define RpcServerUseProtseqEp WINELIB_NAME_AW(RpcServerUseProtseqEp)
264 RPCRTAPI RPC_STATUS RPC_ENTRY
265 RpcServerUseProtseqEpExA( unsigned char *Protseq
, unsigned int MaxCalls
, unsigned char *Endpoint
, void *SecurityDescriptor
,
266 PRPC_POLICY Policy
);
267 RPCRTAPI RPC_STATUS RPC_ENTRY
268 RpcServerUseProtseqEpExW( unsigned short *Protseq
, unsigned int MaxCalls
, unsigned short *Endpoint
, void *SecurityDescriptor
,
269 PRPC_POLICY Policy
);
270 #define RpcServerUseProtseqEpEx WINELIB_NAME_AW(RpcServerUseProtseqEpEx)
272 RPCRTAPI RPC_STATUS RPC_ENTRY
273 RpcServerRegisterAuthInfoA( unsigned char *ServerPrincName
, unsigned long AuthnSvc
, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn
,
275 RPCRTAPI RPC_STATUS RPC_ENTRY
276 RpcServerRegisterAuthInfoW( unsigned short *ServerPrincName
, unsigned long AuthnSvc
, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn
,
278 #define RpcServerRegisterAuthInfo WINELIB_NAME_AW(RpcServerRegisterAuthInfo)
280 RPCRTAPI RPC_STATUS RPC_ENTRY
281 RpcNetworkIsProtseqValidA( unsigned char *protseq
);
282 RPCRTAPI RPC_STATUS RPC_ENTRY
283 RpcNetworkIsProtseqValidW( unsigned short *protseq
);
284 #define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
286 RPCRTAPI RPC_STATUS RPC_ENTRY
287 RpcStringFreeA(unsigned char** String
);
288 RPCRTAPI RPC_STATUS RPC_ENTRY
289 RpcStringFreeW(unsigned short** String
);
290 #define RpcStringFree WINELIB_NAME_AW(RpcStringFree)
292 RPCRTAPI RPC_STATUS RPC_ENTRY
293 UuidToStringA( UUID
* Uuid
, unsigned char** StringUuid
);
294 RPCRTAPI RPC_STATUS RPC_ENTRY
295 UuidToStringW( UUID
* Uuid
, unsigned short** StringUuid
);
296 #define UuidToString WINELIB_NAME_AW(UuidToString)
298 RPCRTAPI RPC_STATUS RPC_ENTRY
299 UuidFromStringA( unsigned char* StringUuid
, UUID
* Uuid
);
300 RPCRTAPI RPC_STATUS RPC_ENTRY
301 UuidFromStringW( unsigned short* StringUuid
, UUID
* Uuid
);
302 #define UuidFromString WINELIB_NAME_AW(UuidFromString)
304 RPCRTAPI RPC_STATUS RPC_ENTRY
305 UuidCreate( UUID
* Uuid
);
306 RPCRTAPI RPC_STATUS RPC_ENTRY
307 UuidCreateSequential( UUID
* Uuid
);
308 RPCRTAPI RPC_STATUS RPC_ENTRY
309 UuidCreateNil( UUID
* Uuid
);
310 RPCRTAPI
signed int RPC_ENTRY
311 UuidCompare( UUID
* Uuid1
, UUID
* Uuid2
, RPC_STATUS
* Status_
);
312 RPCRTAPI
int RPC_ENTRY
313 UuidEqual( UUID
* Uuid1
, UUID
* Uuid2
, RPC_STATUS
* Status_
);
314 RPCRTAPI
unsigned short RPC_ENTRY
315 UuidHash(UUID
* Uuid
, RPC_STATUS
* Status_
);
316 RPCRTAPI
int RPC_ENTRY
317 UuidIsNil( UUID
* Uuid
, RPC_STATUS
* Status_
);
325 #endif /*__WINE_RPCDCE_H */