blob: 1fca11bff3781a9ba70713de66b296c0afeeaf97 [file] [log] [blame]
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00001/*
2 * Copyright (C) 2000 Francois Gouget
3 *
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.
8 *
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.
13 *
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
Jonathan Ernst360a3f92006-05-18 14:49:52 +020016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Alexandre Julliard0799c1a2002-03-09 23:29:33 +000017 */
18
Francois Gouget552fddc2000-11-08 05:06:10 +000019#ifndef __WINE_RPCDCE_H
20#define __WINE_RPCDCE_H
21
Peter Lemenkov66f839d2005-11-14 11:20:30 +000022#ifdef __cplusplus
23extern "C" {
24#endif
25
Mike McCormackcdf631f2004-09-02 20:09:10 +000026#ifndef IN
27#define IN
28#endif
29#ifndef OUT
30#define OUT
31#endif
32#ifndef OPTIONAL
33#define OPTIONAL
34#endif
35
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +000036#ifndef GUID_DEFINED
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +000037#include <guiddef.h>
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +000038#endif
39
Ove Kaaven01bdccb2002-12-18 02:21:38 +000040#ifndef UUID_DEFINED
41#define UUID_DEFINED
42typedef GUID UUID;
43#endif
44
Francois Gouget4794dc02006-10-13 02:19:15 +020045typedef unsigned char* RPC_CSTR;
46typedef unsigned short* RPC_WSTR;
Francois Gouget552fddc2000-11-08 05:06:10 +000047typedef void* RPC_AUTH_IDENTITY_HANDLE;
48typedef void* RPC_AUTHZ_HANDLE;
49typedef void* RPC_IF_HANDLE;
50typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
51typedef RPC_BINDING_HANDLE handle_t;
52#define rpc_binding_handle_t RPC_BINDING_HANDLE
53#define RPC_MGR_EPV void
54
Ove Kaaven0dac9722001-10-14 16:15:37 +000055typedef struct _RPC_BINDING_VECTOR
56{
57 unsigned long Count;
58 RPC_BINDING_HANDLE BindingH[1];
Francois Gouget02236f02004-09-08 01:27:24 +000059} RPC_BINDING_VECTOR;
Ove Kaaven0dac9722001-10-14 16:15:37 +000060#define rpc_binding_vector_t RPC_BINDING_VECTOR
61
62typedef struct _UUID_VECTOR
63{
64 unsigned long Count;
65 UUID *Uuid[1];
Francois Gouget02236f02004-09-08 01:27:24 +000066} UUID_VECTOR;
Ove Kaaven0dac9722001-10-14 16:15:37 +000067#define uuid_vector_t UUID_VECTOR
68
69typedef struct _RPC_IF_ID
70{
71 UUID Uuid;
72 unsigned short VersMajor;
73 unsigned short VersMinor;
74} RPC_IF_ID;
75
Mike McCormackf0c49da2006-04-19 17:25:02 +090076typedef struct
77{
78 unsigned long Count;
79 RPC_IF_ID *IfId[1];
80} RPC_IF_ID_VECTOR;
81
Hans Leidekkere5114742008-09-23 13:30:57 +020082typedef struct
83{
84 unsigned int Count;
85 unsigned long Stats[1];
86} RPC_STATS_VECTOR;
87
Mike McCormacka0f86232006-04-19 17:25:21 +090088typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
89
90#define RPC_C_EP_ALL_ELTS 0
91#define RPC_C_EP_MATCH_BY_IF 1
92#define RPC_C_EP_MATCH_BY_OBJ 2
93#define RPC_C_EP_MATCH_BY_BOTH 3
94
95#define RPC_C_VERS_ALL 1
96#define RPC_C_VERS_COMPATIBLE 2
97#define RPC_C_VERS_EXACT 3
98#define RPC_C_VERS_MAJOR_ONLY 4
99#define RPC_C_VERS_UPTO 5
100
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000101#define RPC_C_BINDING_INFINITE_TIMEOUT 10
102#define RPC_C_BINDING_MIN_TIMEOUT 0
103#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
104#define RPC_C_BINDING_MAX_TIMEOUT 9
105
106#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
107
108#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
109#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
110
111/* RPC_POLICY EndpointFlags */
112#define RPC_C_BIND_TO_ALL_NICS 0x1
113#define RPC_C_USE_INTERNET_PORT 0x1
114#define RPC_C_USE_INTRANET_PORT 0x2
115#define RPC_C_DONT_FAIL 0x4
116
117/* RPC_POLICY EndpointFlags specific to the Falcon/RPC transport */
118#define RPC_C_MQ_TEMPORARY 0x0000
119#define RPC_C_MQ_PERMANENT 0x0001
120#define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
121#define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
122#define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
123#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
124#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
125
Mike McCormack9b98cb52006-04-28 13:42:23 +0900126#define RPC_C_AUTHN_LEVEL_DEFAULT 0
127#define RPC_C_AUTHN_LEVEL_NONE 1
128#define RPC_C_AUTHN_LEVEL_CONNECT 2
129#define RPC_C_AUTHN_LEVEL_CALL 3
130#define RPC_C_AUTHN_LEVEL_PKT 4
131#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
132#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
133
134#define RPC_C_AUTHN_NONE 0
135#define RPC_C_AUTHN_DCE_PRIVATE 1
136#define RPC_C_AUTHN_DCE_PUBLIC 2
137#define RPC_C_AUTHN_DEC_PUBLIC 4
138#define RPC_C_AUTHN_GSS_NEGOTIATE 9
139#define RPC_C_AUTHN_WINNT 10
140#define RPC_C_AUTHN_GSS_SCHANNEL 14
141#define RPC_C_AUTHN_GSS_KERBEROS 16
142#define RPC_C_AUTHN_DPA 17
143#define RPC_C_AUTHN_MSN 18
144#define RPC_C_AUTHN_DIGEST 21
145#define RPC_C_AUTHN_MQ 100
146#define RPC_C_AUTHN_DEFAULT 0xffffffff
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000147
Kai Blin533419c2008-06-23 09:52:23 +0200148#define RPC_C_AUTHZ_NONE 0
149#define RPC_C_AUTHZ_NAME 1
150#define RPC_C_AUTHZ_DCE 2
151#define RPC_C_AUTHZ_DEFAULT 0xffffffff
152
Rob Shearmanf9df13c2007-02-12 13:27:36 +0000153/* values for RPC_SECURITY_QOS*::ImpersonationType */
Rob Shearman433993e2006-11-08 20:47:39 +0000154#define RPC_C_IMP_LEVEL_DEFAULT 0
155#define RPC_C_IMP_LEVEL_ANONYMOUS 1
156#define RPC_C_IMP_LEVEL_IDENTIFY 2
157#define RPC_C_IMP_LEVEL_IMPERSONATE 3
158#define RPC_C_IMP_LEVEL_DELEGATE 4
159
160/* values for RPC_SECURITY_QOS*::IdentityTracking */
161#define RPC_C_QOS_IDENTIFY_STATIC 0
162#define RPC_C_QOS_IDENTIFY_DYNAMIC 1
163
164/* flags for RPC_SECURITY_QOS*::Capabilities */
165#define RPC_C_QOS_CAPABILITIES_DEFAULT 0x0
166#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 0x1
167#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC 0x2
168#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 0x4
169
170/* values for RPC_SECURITY_QOS*::Version */
171#define RPC_C_SECURITY_QOS_VERSION 1
172#define RPC_C_SECURITY_QOS_VERSION_1 1
173#define RPC_C_SECURITY_QOS_VERSION_2 2
174
175/* flags for RPC_SECURITY_QOS_V2::AdditionalSecurityInfoType */
176#define RPC_C_AUTHN_INFO_TYPE_HTTP 1
177
178/* flags for RPC_HTTP_TRANSPORT_CREDENTIALS::Flags */
179#define RPC_C_HTTP_FLAG_USE_SSL 0x1
180#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 0x2
181
182/* values for RPC_HTTP_TRANSPORT_CREDENTIALS::AuthenticationTarget */
183#define RPC_C_HTTP_AUTHN_TARGET_SERVER 1
184#define RPC_C_HTTP_AUTHN_TARGET_PROXY 2
185
186#define RPC_C_HTTP_AUTHN_SCHEME_BASIC 0x01
187#define RPC_C_HTTP_AUTHN_SCHEME_NTLM 0x02
188#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT 0x04
189#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST 0x08
190#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x10
191
Mike McCormackcdf631f2004-09-02 20:09:10 +0000192typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN( RPC_IF_HANDLE InterfaceUuid, void *Context );
Patrik Stridvall395e8ba2002-02-05 18:09:29 +0000193typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)();
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000194
Vincent Béron9a624912002-05-31 23:06:46 +0000195typedef struct _RPC_POLICY
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000196{
Mike McCormackcdf631f2004-09-02 20:09:10 +0000197 unsigned int Length;
198 unsigned long EndpointFlags;
199 unsigned long NICFlags;
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000200} RPC_POLICY, *PRPC_POLICY;
201
Kai Blin17fa0ff2005-08-22 09:16:50 +0000202typedef struct _SEC_WINNT_AUTH_IDENTITY_W
203{
Francois Gougetadf52cd2006-05-12 00:22:21 +0200204 unsigned short* User;
Kai Blin17fa0ff2005-08-22 09:16:50 +0000205 unsigned long UserLength;
Francois Gougetadf52cd2006-05-12 00:22:21 +0200206 unsigned short* Domain;
Kai Blin17fa0ff2005-08-22 09:16:50 +0000207 unsigned long DomainLength;
Francois Gougetadf52cd2006-05-12 00:22:21 +0200208 unsigned short* Password;
Kai Blin17fa0ff2005-08-22 09:16:50 +0000209 unsigned long PasswordLength;
210 unsigned long Flags;
211} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
212
213typedef struct _SEC_WINNT_AUTH_IDENTITY_A
214{
Francois Gougetadf52cd2006-05-12 00:22:21 +0200215 unsigned char* User;
Kai Blin17fa0ff2005-08-22 09:16:50 +0000216 unsigned long UserLength;
Francois Gougetadf52cd2006-05-12 00:22:21 +0200217 unsigned char* Domain;
Kai Blin17fa0ff2005-08-22 09:16:50 +0000218 unsigned long DomainLength;
Francois Gougetadf52cd2006-05-12 00:22:21 +0200219 unsigned char* Password;
Kai Blin17fa0ff2005-08-22 09:16:50 +0000220 unsigned long PasswordLength;
221 unsigned long Flags;
222} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
223
Rob Shearman433993e2006-11-08 20:47:39 +0000224typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W
225{
226 SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
227 unsigned long Flags;
228 unsigned long AuthenticationTarget;
229 unsigned long NumberOfAuthnSchemes;
230 unsigned long *AuthnSchemes;
231 unsigned short *ServerCertificateSubject;
232} RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W;
233
234typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A
235{
236 SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
237 unsigned long Flags;
238 unsigned long AuthenticationTarget;
239 unsigned long NumberOfAuthnSchemes;
240 unsigned long *AuthnSchemes;
241 unsigned char *ServerCertificateSubject;
242} RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A;
243
Mike McCormack4e49c382006-04-26 22:44:07 +0900244typedef struct _RPC_SECURITY_QOS {
245 unsigned long Version;
246 unsigned long Capabilities;
247 unsigned long IdentityTracking;
248 unsigned long ImpersonationType;
249} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
250
Rob Shearman433993e2006-11-08 20:47:39 +0000251typedef struct _RPC_SECURITY_QOS_V2_W
252{
253 unsigned long Version;
254 unsigned long Capabilities;
255 unsigned long IdentityTracking;
256 unsigned long ImpersonationType;
257 unsigned long AdditionalSecurityInfoType;
258 union
259 {
260 RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
261 } u;
262} RPC_SECURITY_QOS_V2_W, *PRPC_SECURITY_QOS_V2_W;
263
264typedef struct _RPC_SECURITY_QOS_V2_A
265{
266 unsigned long Version;
267 unsigned long Capabilities;
268 unsigned long IdentityTracking;
269 unsigned long ImpersonationType;
270 unsigned long AdditionalSecurityInfoType;
271 union
272 {
273 RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
274 } u;
275} RPC_SECURITY_QOS_V2_A, *PRPC_SECURITY_QOS_V2_A;
276
Kai Blin17fa0ff2005-08-22 09:16:50 +0000277#define _SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(_SEC_WINNT_AUTH_IDENTITY_)
278#define SEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(SEC_WINNT_AUTH_IDENTITY_)
279#define PSEC_WINNT_AUTH_IDENTITY WINELIB_NAME_AW(PSEC_WINNT_AUTH_IDENTITY_)
280
Rob Shearman433993e2006-11-08 20:47:39 +0000281#define RPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(RPC_HTTP_TRANSPORT_CREDENTIALS_)
282#define PRPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_)
283#define _RPC_HTTP_TRANSPORT_CREDENTIALS_ WINELIB_NAME_AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_)
284
285#define RPC_SECURITY_QOS_V2 WINELIB_NAME_AW(RPC_SECURITY_QOS_V2_)
286#define PRPC_SECURITY_QOS_V2 WINELIB_NAME_AW(PRPC_SECURITY_QOS_V2_)
287#define _RPC_SECURITY_QOS_V2 WINELIB_NAME_AW(_RPC_SECURITY_QOS_V2_)
288
Kai Blin17fa0ff2005-08-22 09:16:50 +0000289/* SEC_WINNT_AUTH Flags */
290#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
291#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
292
Ove Kaaven29b30612002-08-09 01:11:39 +0000293/* RpcServerRegisterIfEx Flags */
Rob Shearmand6503212008-06-09 22:36:19 +0100294#define RPC_IF_AUTOLISTEN 0x01
295#define RPC_IF_OLE 0x02
296#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x04
297#define RPC_IF_ALLOW_SECURE_ONLY 0x08
298#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x10
299#define RPC_IF_ALLOW_LOCAL_ONLY 0x20
300#define RPC_IF_SEC_NO_CACHE 0x40
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000301
Francois Gouget4794dc02006-10-13 02:19:15 +0200302RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS e, RPC_CSTR buffer);
303RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS e, RPC_WSTR buffer);
Bill Medlandbf420212004-12-23 11:29:54 +0000304#define DceErrorInqText WINELIB_NAME_AW(DceErrorInqText)
305
Rob Shearmanc8a802e2007-12-13 16:11:06 +0000306RPCRTAPI DECLSPEC_NORETURN void RPC_ENTRY
Ove Kaaven882fc032003-01-31 03:21:11 +0000307 RpcRaiseException( RPC_STATUS exception );
308
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000309RPCRTAPI RPC_STATUS RPC_ENTRY
Ove Kaaven0dac9722001-10-14 16:15:37 +0000310 RpcBindingCopy( RPC_BINDING_HANDLE SourceBinding, RPC_BINDING_HANDLE* DestinationBinding );
311
312RPCRTAPI RPC_STATUS RPC_ENTRY
Patrik Stridvall5038c042002-01-31 21:47:34 +0000313 RpcBindingFree( RPC_BINDING_HANDLE* Binding );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000314
315RPCRTAPI RPC_STATUS RPC_ENTRY
Ove Kaaven29b30612002-08-09 01:11:39 +0000316 RpcBindingInqObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
317RPCRTAPI RPC_STATUS RPC_ENTRY
Rob Shearmand6503212008-06-09 22:36:19 +0100318 RpcBindingInqOption( RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR *OptionValue );
319RPCRTAPI RPC_STATUS RPC_ENTRY
Ove Kaaven29b30612002-08-09 01:11:39 +0000320 RpcBindingReset( RPC_BINDING_HANDLE Binding );
321RPCRTAPI RPC_STATUS RPC_ENTRY
322 RpcBindingSetObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
Gregory M. Turneradd18f72003-11-21 22:14:42 +0000323RPCRTAPI RPC_STATUS RPC_ENTRY
Rob Shearmand6503212008-06-09 22:36:19 +0100324 RpcBindingSetOption( RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR OptionValue );
325RPCRTAPI RPC_STATUS RPC_ENTRY
Gregory M. Turneradd18f72003-11-21 22:14:42 +0000326 RpcObjectSetType( UUID* ObjUuid, UUID* TypeUuid );
Ove Kaaven29b30612002-08-09 01:11:39 +0000327
328RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200329 RpcBindingFromStringBindingA( RPC_CSTR StringBinding, RPC_BINDING_HANDLE* Binding );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000330RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200331 RpcBindingFromStringBindingW( RPC_WSTR StringBinding, RPC_BINDING_HANDLE* Binding );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000332#define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
333
334RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200335 RpcBindingToStringBindingA( RPC_BINDING_HANDLE Binding, RPC_CSTR *StringBinding );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000336RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200337 RpcBindingToStringBindingW( RPC_BINDING_HANDLE Binding, RPC_WSTR *StringBinding );
Rob Shearmanf5af8f62008-08-14 09:14:17 +0100338#define RpcBindingToStringBinding WINELIB_NAME_AW(RpcBindingToStringBinding)
Ove Kaaven0dac9722001-10-14 16:15:37 +0000339
340RPCRTAPI RPC_STATUS RPC_ENTRY
341 RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector );
342
343RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200344 RpcStringBindingComposeA( RPC_CSTR ObjUuid, RPC_CSTR Protseq, RPC_CSTR NetworkAddr,
345 RPC_CSTR Endpoint, RPC_CSTR Options, RPC_CSTR *StringBinding );
Ove Kaaven29b30612002-08-09 01:11:39 +0000346RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200347 RpcStringBindingComposeW( RPC_WSTR ObjUuid, RPC_WSTR Protseq, RPC_WSTR NetworkAddr,
348 RPC_WSTR Endpoint, RPC_WSTR Options, RPC_WSTR *StringBinding );
Ove Kaaven29b30612002-08-09 01:11:39 +0000349#define RpcStringBindingCompose WINELIB_NAME_AW(RpcStringBindingCompose)
350
351RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200352 RpcStringBindingParseA( RPC_CSTR StringBinding, RPC_CSTR *ObjUuid, RPC_CSTR *Protseq,
353 RPC_CSTR *NetworkAddr, RPC_CSTR *Endpoint, RPC_CSTR *NetworkOptions );
Ove Kaaven29b30612002-08-09 01:11:39 +0000354RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200355 RpcStringBindingParseW( RPC_WSTR StringBinding, RPC_WSTR *ObjUuid, RPC_WSTR *Protseq,
356 RPC_WSTR *NetworkAddr, RPC_WSTR *Endpoint, RPC_WSTR *NetworkOptions );
Ove Kaaven29b30612002-08-09 01:11:39 +0000357#define RpcStringBindingParse WINELIB_NAME_AW(RpcStringBindingParse)
358
359RPCRTAPI RPC_STATUS RPC_ENTRY
360 RpcEpResolveBinding( RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec );
361
362RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget02236f02004-09-08 01:27:24 +0000363 RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
Francois Gouget4794dc02006-10-13 02:19:15 +0200364 UUID_VECTOR* UuidVector, RPC_CSTR Annotation );
Ove Kaaven29b30612002-08-09 01:11:39 +0000365RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget02236f02004-09-08 01:27:24 +0000366 RpcEpRegisterW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
Francois Gouget4794dc02006-10-13 02:19:15 +0200367 UUID_VECTOR* UuidVector, RPC_WSTR Annotation );
Ove Kaaven29b30612002-08-09 01:11:39 +0000368#define RpcEpRegister WINELIB_NAME_AW(RpcEpRegister)
369
370RPCRTAPI RPC_STATUS RPC_ENTRY
371 RpcEpRegisterNoReplaceA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
Francois Gouget4794dc02006-10-13 02:19:15 +0200372 UUID_VECTOR* UuidVector, RPC_CSTR Annotation );
Ove Kaaven29b30612002-08-09 01:11:39 +0000373RPCRTAPI RPC_STATUS RPC_ENTRY
374 RpcEpRegisterNoReplaceW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
Francois Gouget4794dc02006-10-13 02:19:15 +0200375 UUID_VECTOR* UuidVector, RPC_WSTR Annotation );
Ove Kaaven29b30612002-08-09 01:11:39 +0000376#define RpcEpRegisterNoReplace WINELIB_NAME_AW(RpcEpRegisterNoReplace)
377
378RPCRTAPI RPC_STATUS RPC_ENTRY
379 RpcEpUnregister( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
380 UUID_VECTOR* UuidVector );
381
382RPCRTAPI RPC_STATUS RPC_ENTRY
Ove Kaaven0dac9722001-10-14 16:15:37 +0000383 RpcServerInqBindings( RPC_BINDING_VECTOR** BindingVector );
384
385RPCRTAPI RPC_STATUS RPC_ENTRY
Mike McCormackcdf631f2004-09-02 20:09:10 +0000386 RpcServerListen( unsigned int MinimumCallThreads, unsigned int MaxCalls, unsigned int DontWait );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000387
Rob Shearmand6503212008-06-09 22:36:19 +0100388RPCRTAPI RPC_STATUS RPC_ENTRY
389 RpcMgmtEnableIdleCleanup( void );
390
Francois Gouget4fddc5e2007-11-13 20:50:35 +0100391RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout(LONG);
392
Ove Kaaven0dac9722001-10-14 16:15:37 +0000393RPCRTAPI RPC_STATUS RPC_ENTRY
Greg Turner034e4df2002-10-18 03:56:56 +0000394 RpcMgmtWaitServerListen( void );
395
396RPCRTAPI RPC_STATUS RPC_ENTRY
Greg Turner3eafbfc2002-10-31 22:45:12 +0000397 RpcMgmtStopServerListening( RPC_BINDING_HANDLE Binding );
398
399RPCRTAPI RPC_STATUS RPC_ENTRY
Maarten Lankhorstc77f02c2008-05-23 09:35:35 -0700400 RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding);
401
402RPCRTAPI RPC_STATUS RPC_ENTRY
Mike McCormackf0c49da2006-04-19 17:25:02 +0900403 RpcMgmtInqIfIds( RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR** IfIdVector );
404
405RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100406 RpcMgmtEpEltInqBegin( RPC_BINDING_HANDLE EpBinding, ULONG InquiryType, RPC_IF_ID *IfId,
407 ULONG VersOption, UUID *ObjectUuid, RPC_EP_INQ_HANDLE *InquiryContext);
Mike McCormacka0f86232006-04-19 17:25:21 +0900408
409RPCRTAPI RPC_STATUS RPC_ENTRY
Rob Shearmand6503212008-06-09 22:36:19 +0100410 RpcMgmtSetComTimeout( RPC_BINDING_HANDLE Binding, unsigned int Timeout );
411
412RPCRTAPI RPC_STATUS RPC_ENTRY
413 RpcMgmtSetServerStackSize( ULONG ThreadStackSize );
414
415RPCRTAPI RPC_STATUS RPC_ENTRY
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000416 RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv );
Vincent Béron9a624912002-05-31 23:06:46 +0000417
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000418RPCRTAPI RPC_STATUS RPC_ENTRY
419 RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
Mike McCormackcdf631f2004-09-02 20:09:10 +0000420 unsigned int Flags, unsigned int MaxCalls, RPC_IF_CALLBACK_FN* IfCallbackFn );
Vincent Béron9a624912002-05-31 23:06:46 +0000421
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000422RPCRTAPI RPC_STATUS RPC_ENTRY
423 RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv,
Mike McCormackcdf631f2004-09-02 20:09:10 +0000424 unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn );
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000425
Greg Turner3eafbfc2002-10-31 22:45:12 +0000426RPCRTAPI RPC_STATUS RPC_ENTRY
Mike McCormackcdf631f2004-09-02 20:09:10 +0000427 RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, unsigned int WaitForCallsToComplete );
Greg Turner3eafbfc2002-10-31 22:45:12 +0000428
429RPCRTAPI RPC_STATUS RPC_ENTRY
430 RpcServerUnregisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, int RundownContextHandles );
431
Greg Turnerb71535e2002-10-21 23:41:35 +0000432
433RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200434 RpcServerUseProtseqA(RPC_CSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
Greg Turnerb71535e2002-10-21 23:41:35 +0000435RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200436 RpcServerUseProtseqW(RPC_WSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor);
Greg Turnerb71535e2002-10-21 23:41:35 +0000437#define RpcServerUseProtseq WINELIB_NAME_AW(RpcServerUseProtseq)
438
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000439RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200440 RpcServerUseProtseqEpA( RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor );
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000441RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200442 RpcServerUseProtseqEpW( RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000443#define RpcServerUseProtseqEp WINELIB_NAME_AW(RpcServerUseProtseqEp)
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000444
445RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200446 RpcServerUseProtseqEpExA( RPC_CSTR Protseq, unsigned int MaxCalls, RPC_CSTR Endpoint, void *SecurityDescriptor,
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000447 PRPC_POLICY Policy );
448RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200449 RpcServerUseProtseqEpExW( RPC_WSTR Protseq, unsigned int MaxCalls, RPC_WSTR Endpoint, void *SecurityDescriptor,
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000450 PRPC_POLICY Policy );
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000451#define RpcServerUseProtseqEpEx WINELIB_NAME_AW(RpcServerUseProtseqEpEx)
452
453RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100454 RpcServerRegisterAuthInfoA( RPC_CSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
Mike McCormackcdf631f2004-09-02 20:09:10 +0000455 void *Arg );
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000456RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100457 RpcServerRegisterAuthInfoW( RPC_WSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
Mike McCormackcdf631f2004-09-02 20:09:10 +0000458 void *Arg );
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000459#define RpcServerRegisterAuthInfo WINELIB_NAME_AW(RpcServerRegisterAuthInfo)
460
461RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100462 RpcBindingSetAuthInfoExA( RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel,
463 ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr,
Mike McCormack4e49c382006-04-26 22:44:07 +0900464 RPC_SECURITY_QOS *SecurityQos );
465
466RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100467 RpcBindingSetAuthInfoExW( RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel,
468 ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr,
Mike McCormack4e49c382006-04-26 22:44:07 +0900469 RPC_SECURITY_QOS *SecurityQos );
470#define RpcBindingSetAuthInfoEx WINELIB_NAME_AW(RpcBindingSetAuthInfoEx)
471
472RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100473 RpcBindingSetAuthInfoA( RPC_BINDING_HANDLE Binding, RPC_CSTR ServerPrincName, ULONG AuthnLevel,
474 ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr );
Mike McCormack4e49c382006-04-26 22:44:07 +0900475
476RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100477 RpcBindingSetAuthInfoW( RPC_BINDING_HANDLE Binding, RPC_WSTR ServerPrincName, ULONG AuthnLevel,
478 ULONG AuthnSvc, RPC_AUTH_IDENTITY_HANDLE AuthIdentity, ULONG AuthzSvr );
Mike McCormack4e49c382006-04-26 22:44:07 +0900479#define RpcBindingSetAuthInfo WINELIB_NAME_AW(RpcBindingSetAuthInfo)
480
481RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100482 RpcBindingInqAuthInfoExA( RPC_BINDING_HANDLE Binding, RPC_CSTR * ServerPrincName, ULONG *AuthnLevel,
483 ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc,
484 ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS );
Mike McCormack4e49c382006-04-26 22:44:07 +0900485
486RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100487 RpcBindingInqAuthInfoExW( RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel,
488 ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc,
489 ULONG RpcQosVersion, RPC_SECURITY_QOS *SecurityQOS );
Mike McCormack4e49c382006-04-26 22:44:07 +0900490#define RpcBindingInqAuthInfoEx WINELIB_NAME_AW(RpcBindingInqAuthInfoEx)
491
492RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100493 RpcBindingInqAuthInfoA( RPC_BINDING_HANDLE Binding, RPC_CSTR * ServerPrincName, ULONG *AuthnLevel,
494 ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc );
Mike McCormack4e49c382006-04-26 22:44:07 +0900495
496RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget62662d22007-02-06 10:18:02 +0100497 RpcBindingInqAuthInfoW( RPC_BINDING_HANDLE Binding, RPC_WSTR *ServerPrincName, ULONG *AuthnLevel,
498 ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc );
Mike McCormack4e49c382006-04-26 22:44:07 +0900499#define RpcBindingInqAuthInfo WINELIB_NAME_AW(RpcBindingInqAuthInfo)
500
Francois Gouget4fddc5e2007-11-13 20:50:35 +0100501RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThread(void*);
Rob Shearmanf15287d2008-03-17 13:10:14 +0000502RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThreadEx(void*,LONG);
Francois Gouget4fddc5e2007-11-13 20:50:35 +0100503
Mike McCormack4e49c382006-04-26 22:44:07 +0900504RPCRTAPI RPC_STATUS RPC_ENTRY
Rob Shearmand6503212008-06-09 22:36:19 +0100505 RpcImpersonateClient( RPC_BINDING_HANDLE Binding );
506
507RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200508 RpcNetworkIsProtseqValidA( RPC_CSTR protseq );
Mike Hearneca464b2004-01-20 23:36:50 +0000509RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200510 RpcNetworkIsProtseqValidW( RPC_WSTR protseq );
Filip Navara24935292004-04-14 04:28:27 +0000511#define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
Mike Hearneca464b2004-01-20 23:36:50 +0000512
513RPCRTAPI RPC_STATUS RPC_ENTRY
Rob Shearmand6503212008-06-09 22:36:19 +0100514 RpcRevertToSelf( void );
515RPCRTAPI RPC_STATUS RPC_ENTRY
516 RpcRevertToSelfEx( RPC_BINDING_HANDLE Binding );
517
518RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200519 RpcStringFreeA(RPC_CSTR* String);
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000520RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200521 RpcStringFreeW(RPC_WSTR* String);
Ove Kaaven0dac9722001-10-14 16:15:37 +0000522#define RpcStringFree WINELIB_NAME_AW(RpcStringFree)
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000523
Ove Kaaven0dac9722001-10-14 16:15:37 +0000524RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200525 UuidToStringA( UUID* Uuid, RPC_CSTR* StringUuid );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000526RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200527 UuidToStringW( UUID* Uuid, RPC_WSTR* StringUuid );
Ove Kaaven0dac9722001-10-14 16:15:37 +0000528#define UuidToString WINELIB_NAME_AW(UuidToString)
Peter Hunnisett8cec3cff2001-07-11 20:19:06 +0000529
Ove Kaaven29b30612002-08-09 01:11:39 +0000530RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200531 UuidFromStringA( RPC_CSTR StringUuid, UUID* Uuid );
Ove Kaaven29b30612002-08-09 01:11:39 +0000532RPCRTAPI RPC_STATUS RPC_ENTRY
Francois Gouget4794dc02006-10-13 02:19:15 +0200533 UuidFromStringW( RPC_WSTR StringUuid, UUID* Uuid );
Ove Kaaven29b30612002-08-09 01:11:39 +0000534#define UuidFromString WINELIB_NAME_AW(UuidFromString)
535
536RPCRTAPI RPC_STATUS RPC_ENTRY
537 UuidCreate( UUID* Uuid );
538RPCRTAPI RPC_STATUS RPC_ENTRY
539 UuidCreateSequential( UUID* Uuid );
540RPCRTAPI RPC_STATUS RPC_ENTRY
541 UuidCreateNil( UUID* Uuid );
542RPCRTAPI signed int RPC_ENTRY
543 UuidCompare( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
544RPCRTAPI int RPC_ENTRY
545 UuidEqual( UUID* Uuid1, UUID* Uuid2, RPC_STATUS* Status_ );
Huw D M Davies2356fbc2001-09-07 15:25:51 +0000546RPCRTAPI unsigned short RPC_ENTRY
Ove Kaaven0dac9722001-10-14 16:15:37 +0000547 UuidHash(UUID* Uuid, RPC_STATUS* Status_ );
Ove Kaaven29b30612002-08-09 01:11:39 +0000548RPCRTAPI int RPC_ENTRY
549 UuidIsNil( UUID* Uuid, RPC_STATUS* Status_ );
Huw D M Davies2356fbc2001-09-07 15:25:51 +0000550
Peter Lemenkov66f839d2005-11-14 11:20:30 +0000551#ifdef __cplusplus
552}
553#endif
554
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +0000555#include <rpcdcep.h>
Francois Gouget552fddc2000-11-08 05:06:10 +0000556
557#endif /*__WINE_RPCDCE_H */