OSDN Git Service

9e1ade98f247bc699f3d6161aa9425f6f75e117c
[mingw/mingw-org-wsl.git] / include / rpcdce.h
1 /**
2  * @file rpcdce.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _RPCDCE_H
25 #define _RPCDCE_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 #ifndef RPCRTAPI
34 #ifdef _RPCRT4_
35 #define RPCRTAPI
36 #else
37 #define RPCRTAPI DECLSPEC_IMPORT
38 #endif
39 #endif
40
41 #ifndef ___RPC_ENTRY__
42 #define ___RPC_ENTRY__ RPCRTAPI RPC_STATUS RPC_ENTRY
43 #endif
44 #ifndef ___RPC_VOID__
45 #define ___RPC_VOID__ RPCRTAPI void RPC_ENTRY
46 #endif
47 #ifndef ___RPC_INT__
48 #define ___RPC_INT__ RPCRTAPI int RPC_ENTRY
49 #endif
50 #ifndef ___RPC_USHORT__
51 #define ___RPC_USHORT__ RPCRTAPI unsigned short RPC_ENTRY
52 #endif
53 #ifndef ___RPC_LONG__
54 #define ___RPC_LONG__ RPCRTAPI long RPC_ENTRY
55 #endif
56 #ifndef ___RPC_ULONG__
57 #define ___RPC_ULONG__ RPCRTAPI unsigned long RPC_ENTRY
58 #endif
59
60 #ifndef _NO_W32_PSEUDO_MODIFIERS
61 #ifndef IN
62 #define IN
63 #endif
64 #ifndef OUT
65 #define OUT
66 #endif
67 #ifndef OPTIONAL
68 #define OPTIONAL
69 #endif
70 #endif /* ! _NO_W32_PSEUDO_MODIFIERS */
71
72 #ifndef DECLSPEC_NORETURN
73 #ifndef MIDL_PASS
74 #define DECLSPEC_NORETURN __declspec(noreturn)
75 #endif /* !MIDL_PASS */
76 #endif /* !DECLSPEC_NORETURN */
77
78 #include <specstrings.h>
79
80 typedef unsigned char * RPC_CSTR;
81
82 #if defined(RPC_USE_NATIVE_WCHAR) && defined(_NATIVE_WCHAR_T_DEFINED)
83 typedef wchar_t * RPC_WSTR;
84 typedef const wchar_t * RPC_CWSTR;
85 #else
86 typedef unsigned short * RPC_WSTR;
87 typedef const unsigned short * RPC_CWSTR;
88 #endif
89
90 typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
91 typedef RPC_BINDING_HANDLE handle_t;
92 #define rpc_binding_handle_t RPC_BINDING_HANDLE
93
94 #ifndef GUID_DEFINED
95 #include <guiddef.h>
96 #endif
97
98 #ifndef UUID_DEFINED
99 #define UUID_DEFINED
100 typedef GUID UUID;
101 #ifndef uuid_t
102 #define uuid_t UUID
103 #endif
104 #endif
105
106 typedef struct _RPC_BINDING_VECTOR {
107   unsigned long Count;
108   RPC_BINDING_HANDLE BindingH[1];
109 } RPC_BINDING_VECTOR;
110 #ifndef rpc_binding_vector_t
111 #define rpc_binding_vector_t RPC_BINDING_VECTOR
112 #endif
113
114 typedef struct _UUID_VECTOR {
115   unsigned long Count;
116   UUID *Uuid[1];
117 } UUID_VECTOR;
118 #ifndef uuid_vector_t
119 #define uuid_vector_t UUID_VECTOR
120 #endif
121
122 typedef void *RPC_IF_HANDLE;
123
124 #ifndef IFID_DEFINED
125 #define IFID_DEFINED
126 typedef struct _RPC_IF_ID {
127         UUID Uuid;
128         unsigned short VersMajor;
129         unsigned short VersMinor;
130 } RPC_IF_ID;
131 #endif
132
133 #define RPC_C_BINDING_INFINITE_TIMEOUT 10
134 #define RPC_C_BINDING_MIN_TIMEOUT 0
135 #define RPC_C_BINDING_DEFAULT_TIMEOUT 5
136 #define RPC_C_BINDING_MAX_TIMEOUT 9
137 #define RPC_C_CANCEL_INFINITE_TIMEOUT (-1)
138 #define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
139 #define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
140 #define RPC_C_BIND_TO_ALL_NICS 1
141 #define RPC_C_USE_INTERNET_PORT        0x1
142 #define RPC_C_USE_INTRANET_PORT        0x2
143 #define RPC_C_DONT_FAIL                0x4
144 #define RPC_C_RPCHTTP_USE_LOAD_BALANCE 0x8
145
146 #if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
147 #define RPC_C_MQ_TEMPORARY                 0x0000
148 #define RPC_C_MQ_PERMANENT                 0x0001
149 #define RPC_C_MQ_CLEAR_ON_OPEN             0x0002
150 #define RPC_C_MQ_USE_EXISTING_SECURITY     0x0004
151 #define RPC_C_MQ_AUTHN_LEVEL_NONE          0x0000
152 #define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
153 #define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY   0x0010
154 #define RPC_C_MQ_EXPRESS                  0
155 #define RPC_C_MQ_RECOVERABLE              1
156 #define RPC_C_MQ_JOURNAL_NONE             0
157 #define RPC_C_MQ_JOURNAL_DEADLETTER       1
158 #define RPC_C_MQ_JOURNAL_ALWAYS           2
159 #define RPC_C_OPT_MQ_DELIVERY             1
160 #define RPC_C_OPT_MQ_PRIORITY             2
161 #define RPC_C_OPT_MQ_JOURNAL              3
162 #define RPC_C_OPT_MQ_ACKNOWLEDGE          4
163 #define RPC_C_OPT_MQ_AUTHN_SERVICE        5
164 #define RPC_C_OPT_MQ_AUTHN_LEVEL          6
165 #define RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE  7
166 #define RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED  8
167 #endif /* (_WIN32_WINNT < _WIN32_WINNT_VISTA) */
168
169 #define RPC_C_OPT_BINDING_NONCAUSAL       9
170 #define RPC_C_OPT_SECURITY_CALLBACK      10
171 #define RPC_C_OPT_UNIQUE_BINDING         11
172
173 #if (_WIN32_WINNT < _WIN32_WINNT_WIN2K)
174 #define RPC_C_OPT_MAX_OPTIONS            12
175 #elif (_WIN32_WINNT < _WIN32_WINNT_WS03)
176 #define RPC_C_OPT_CALL_TIMEOUT           12
177 #define RPC_C_OPT_DONT_LINGER            13
178 #define RPC_C_OPT_MAX_OPTIONS            14
179 #else /* ! < WIN2K && ! < WS03 */
180 #define RPC_C_OPT_TRANS_SEND_BUFFER_SIZE  5
181 #define RPC_C_OPT_CALL_TIMEOUT           12
182 #define RPC_C_OPT_DONT_LINGER            13
183 #define RPC_C_OPT_TRUST_PEER             14
184 #define RPC_C_OPT_ASYNC_BLOCK            15
185 #define RPC_C_OPT_OPTIMIZE_TIME          16
186 #define RPC_C_OPT_MAX_OPTIONS            17
187 #endif /* (_WIN32_WINNT < _WIN32_WINNT_WIN2K) */
188
189 #define RPC_C_FULL_CERT_CHAIN 0x0001
190
191 #define RPC_MGR_EPV void
192 #define RPC_C_PARAM_MAX_PACKET_LENGTH 1
193 #define RPC_C_PARAM_BUFFER_LENGTH 2
194
195 #define RPC_C_STATS_CALLS_IN  0
196 #define RPC_C_STATS_CALLS_OUT 1
197 #define RPC_C_STATS_PKTS_IN   2
198 #define RPC_C_STATS_PKTS_OUT  3
199 #define RPC_IF_AUTOLISTEN                   0x0001
200 #define RPC_IF_OLE                          0x0002
201 #define RPC_IF_ALLOW_UNKNOWN_AUTHORITY      0x0004
202 #define RPC_IF_ALLOW_SECURE_ONLY            0x0008
203 #define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010
204 #define RPC_IF_ALLOW_LOCAL_ONLY             0x0020
205 #define RPC_IF_SEC_NO_CACHE                 0x0040
206 #define RPC_C_MGMT_INQ_IF_IDS         0
207 #define RPC_C_MGMT_INQ_PRINC_NAME     1
208 #define RPC_C_MGMT_INQ_STATS          2
209 #define RPC_C_MGMT_IS_SERVER_LISTEN   3
210 #define RPC_C_MGMT_STOP_SERVER_LISTEN 4
211 #define RPC_C_EP_ALL_ELTS      0
212 #define RPC_C_EP_MATCH_BY_IF   1
213 #define RPC_C_EP_MATCH_BY_OBJ  2
214 #define RPC_C_EP_MATCH_BY_BOTH 3
215 #define RPC_C_VERS_ALL        1
216 #define RPC_C_VERS_COMPATIBLE 2
217 #define RPC_C_VERS_EXACT      3
218 #define RPC_C_VERS_MAJOR_ONLY 4
219 #define RPC_C_VERS_UPTO       5
220 #define DCE_C_ERROR_STRING_LEN 256
221 #define RPC_C_PARM_MAX_PACKET_LENGTH 1
222 #define RPC_C_PARM_BUFFER_LENGTH     2
223 #define RPC_C_AUTHN_LEVEL_DEFAULT       0
224 #define RPC_C_AUTHN_LEVEL_NONE          1
225 #define RPC_C_AUTHN_LEVEL_CONNECT       2
226 #define RPC_C_AUTHN_LEVEL_CALL          3
227 #define RPC_C_AUTHN_LEVEL_PKT           4
228 #define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
229 #define RPC_C_AUTHN_LEVEL_PKT_PRIVACY   6
230 #define RPC_C_IMP_LEVEL_ANONYMOUS   1
231 #define RPC_C_IMP_LEVEL_IDENTIFY    2
232 #define RPC_C_IMP_LEVEL_IMPERSONATE 3
233 #define RPC_C_IMP_LEVEL_DELEGATE    4
234 #define RPC_C_QOS_IDENTITY_STATIC  0
235 #define RPC_C_QOS_IDENTITY_DYNAMIC 1
236 #define RPC_C_QOS_CAPABILITIES_DEFAULT     0
237 #define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
238 #define RPC_C_PROTECT_LEVEL_DEFAULT(RPC_C_AUTHN_LEVEL_DEFAULT)
239 #define RPC_C_PROTECT_LEVEL_NONE(RPC_C_AUTHN_LEVEL_NONE)
240 #define RPC_C_PROTECT_LEVEL_CONNECT(RPC_C_AUTHN_LEVEL_CONNECT)
241 #define RPC_C_PROTECT_LEVEL_CALL(RPC_C_AUTHN_LEVEL_CALL)
242 #define RPC_C_PROTECT_LEVEL_PKT(RPC_C_AUTHN_LEVEL_PKT)
243 #define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY(RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
244 #define RPC_C_PROTECT_LEVEL_PKT_PRIVACY(RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
245 #define RPC_C_AUTHN_NONE            0
246 #define RPC_C_AUTHN_DCE_PRIVATE     1
247 #define RPC_C_AUTHN_DCE_PUBLIC      2
248 #define RPC_C_AUTHN_DEC_PUBLIC      4
249 #define RPC_C_AUTHN_GSS_NEGOTIATE   9
250 #define RPC_C_AUTHN_WINNT          10
251 #define RPC_C_AUTHN_GSS_SCHANNEL   14
252 #define RPC_C_AUTHN_GSS_KERBEROS   16
253 #define RPC_C_AUTHN_DPA            17
254 #define RPC_C_AUTHN_MSN            18
255 #define RPC_C_AUTHN_NEGO_EXTENDER  30
256 #define RPC_C_AUTHN_PKU2U          31
257 #define PRC_C_AUTHN_MQ            100
258 #define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
259 #define RPC_C_NO_CREDENTIALS ((RPC_AUTH_IDENTITY_HANDLE) MAXUINT_PTR)
260 #define RPC_C_SECURITY_QOS_VERSION   1L
261 #define RPC_C_SECURITY_QOS_VERSION_1 1L
262
263 #define RPC_C_AUTHZ_NONE 0
264 #define RPC_C_AUTHZ_NAME 1
265 #define RPC_C_AUTHZ_DCE  2
266 #define RPC_C_AUTHZ_DEFAULT 0xFFFFFFFF
267
268 ___RPC_ENTRY__ RpcImpersonateClient(RPC_BINDING_HANDLE);
269 ___RPC_ENTRY__ RpcRevertToSelf(void);
270 ___RPC_ENTRY__ RpcRevertToSelfEx(RPC_BINDING_HANDLE);
271
272 typedef struct _RPC_POLICY {
273         unsigned int Length ;
274         unsigned long EndpointFlags ;
275         unsigned long NICFlags ;
276 } RPC_POLICY,*PRPC_POLICY ;
277
278 typedef void __RPC_USER RPC_OBJECT_INQ_FN(UUID*,UUID*,RPC_STATUS*);
279 typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN(RPC_IF_HANDLE,void*);
280 typedef void RPC_ENTRY RPC_SECURITY_CALLBACK_FN(void *);
281
282 typedef struct {
283         unsigned int Count;
284         unsigned long Stats[1];
285 } RPC_STATS_VECTOR;
286
287 typedef struct {
288         unsigned long Count;
289         RPC_IF_ID*IfId[1];
290 } RPC_IF_ID_VECTOR;
291
292 typedef void *RPC_AUTH_IDENTITY_HANDLE;
293 typedef void *RPC_AUTHZ_HANDLE;
294
295 typedef struct _RPC_SECURITY_QOS {
296         unsigned long Version;
297         unsigned long Capabilities;
298         unsigned long IdentityTracking;
299         unsigned long ImpersonationType;
300 } RPC_SECURITY_QOS,*PRPC_SECURITY_QOS;
301
302 #ifndef _AUTH_IDENTITY_DEFINED
303 #define _AUTH_IDENTITY_DEFINED
304
305 #define SEC_WINNT_AUTH_IDENTITY_ANSI    0x1
306 #define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
307
308 #if (_WIN32_WINNT >= _WIN32_WINNT_VISTA)
309 #define _AUTH_IDENTITY_A_DEFINED
310 #endif
311
312 typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
313         RPC_CSTR User;
314         unsigned long UserLength;
315         RPC_CSTR Domain;
316         unsigned long DomainLength;
317         RPC_CSTR Password;
318         unsigned long PasswordLength;
319         unsigned long Flags;
320 } SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A;
321
322 typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
323         RPC_WSTR User;
324         unsigned long UserLength;
325         RPC_WSTR Domain;
326         unsigned long DomainLength;
327         RPC_WSTR Password;
328         unsigned long PasswordLength;
329         unsigned long Flags;
330 } SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W;
331
332 #define SEC_WINNT_AUTH_IDENTITY __AW(SEC_WINNT_AUTH_IDENTITY_)
333 #define PSEC_WINNT_AUTH_IDENTITY __AW(PSEC_WINNT_AUTH_IDENTITY_)
334 #define _SEC_WINNT_AUTH_IDENTITY __AW(_SEC_WINNT_AUTH_IDENTITY_)
335
336 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
337 #define RPC_C_SECURITY_QOS_VERSION_2 2L
338 #define RPC_C_AUTHN_INFO_TYPE_HTTP 1
339 #define RPC_C_HTTP_AUTHN_TARGET_SERVER 1
340 #define RPC_C_HTTP_AUTHN_SCHEME_BASIC     0x00000001
341 #define RPC_C_HTTP_AUTHN_SCHEME_NTLM      0x00000002
342 #define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT  0x00000004
343 #define RPC_C_HTTP_AUTHN_SCHEME_DIGEST    0x00000008
344 #define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x00000010
345 #define RPC_C_HTTP_FLAG_USE_SSL 1
346 #define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 2
347
348 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A {
349   SEC_WINNT_AUTH_IDENTITY_A *TrasportCredentials;
350   unsigned long Flags;
351   unsigned long AuthenticationTarget;
352   unsigned long NumberOfAuthnSchemes;
353   unsigned long *AuthnSchemes;
354   RPC_CSTR ServerCertificateSubject;
355 } RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A
356
357 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W {
358   SEC_WINNT_AUTH_IDENTITY_W *TrasportCredentials;
359   unsigned long Flags;
360   unsigned long AuthenticationTarget;
361   unsigned long NumberOfAuthnSchemes;
362   unsigned long *AuthnSchemes;
363   RPC_WSTR ServerCertificateSubject;
364 } RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W
365
366 #define RPC_HTTP_TRANSPORT_CREDENTIALS __AW(RPC_HTTP_TRANSPORT_CREDENTIALS_)
367 #define PRPC_HTTP_TRANSPORT_CREDENTIALS __AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_)
368 #define _RPC_HTTP_TRANSPORT_CREDENTIALS __AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_)
369
370 typedef struct _RPC_SECURITY_QOS_V2_A {
371   unsigned long Version;
372   unsigned long Capabilities;
373   unsigned long IdentityTracking;
374   unsigned long ImpersonationType;
375   unsigned long AdditionalSecurityInfoType;
376   union {
377     RPC_HTTP_TRANSPORT_CREDENITIALS_A *HttpCredentials;
378   } u
379 } RPC_SECURITY_QOS_V2_A *PRPC_SECURITY_QOS_V2_A;
380
381 typedef struct _RPC_SECURITY_QOS_V2_W {
382   unsigned long Version;
383   unsigned long Capabilities;
384   unsigned long IdentityTracking;
385   unsigned long ImpersonationType;
386   unsigned long AdditionalSecurityInfoType;
387   union {
388     RPC_HTTP_TRANSPORT_CREDENITIALS_W *HttpCredentials;
389   } u
390 } RPC_SECURITY_QOS_V2_W *PRPC_SECURITY_QOS_V2_W;
391
392 #define RPC_SECURITY_QOS_V2 __AW(RPC_SECURITY_QOS_V2_)
393 #define PRPC_SECURITY_QOS_V2 __AW(PRPC_SECURITY_QOS_V2_)
394 #define _RPC_SECURITY_QOS_V2 __AW(_RPC_SECURITY_QOS_V2_)
395
396 typedef void (__RPC_USER * RPC_HTTP_PROXY_FREE_STRING) (RPC_WSTR String);
397
398 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WINXP) */
399
400 #if (_WIN32_WINNT >= _WIN32_WINNT_WS03)
401 #define RPC_C_HTTP_AUTHN_SCHEME_CERT      0x00010000
402 #define RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID 8
403 #define RPC_C_SECURITY_QOS_VERSION_3 3L
404
405 typedef struct _RPC_SECURITY_QOS_V3_A {
406   unsigned long Version;
407   unsigned long Capabilities;
408   unsigned long IdentityTracking;
409   unsigned long ImpersonationType;
410   unsigned long AdditionalSecurityInfoType;
411   union {
412     RPC_HTTP_TRANSPORT_CREDENITIALS_A *HttpCredentials;
413   } u
414   void *Sid;
415 } RPC_SECURITY_QOS_V3_A *PRPC_SECURITY_QOS_V3_A;
416
417 typedef struct _RPC_SECURITY_QOS_V3_W {
418   unsigned long Version;
419   unsigned long Capabilities;
420   unsigned long IdentityTracking;
421   unsigned long ImpersonationType;
422   unsigned long AdditionalSecurityInfoType;
423   union {
424     RPC_HTTP_TRANSPORT_CREDENITIALS_W *HttpCredentials;
425   } u
426   void *Sid;
427 } RPC_SECURITY_QOS_V3_W *PRPC_SECURITY_QOS_V3_W;
428
429 #define RPC_SECURITY_QOS_V3 __AW(RPC_SECURITY_QOS_V3_)
430 #define PRPC_SECURITY_QOS_V3 __AW(PRPC_SECURITY_QOS_V3_)
431 #define _RPC_SECURITY_QOS_V3 __AW(_RPC_SECURITY_QOS_V3_)
432
433 typedef enum _RPC_HTTP_REDIRECTOR_STAGE {
434   RPCHTTP_RS_REDIRECT = 1,
435   RPCHTTP_RS_ACCESS_1,
436   RPCHTTP_RS_SESSION,
437   RPCHTTP_RS_ACCESS_2,
438   RPCHTTP_RS_INTERFACE
439 } RPC_HTTP_REDIRECTORY_STAGE;
440
441 typedef RPC_STATUS (__RPC_USER * RPC_NEW_HTTP_PROXY_CHANNEL) (
442   RPC_HTTP_REDIRECTOR_STAGE RedirectorStage,
443   RPC_WSTR ServerName,
444   RPC_WSTR ServerPort,
445   RPC_WSTR RemoteUser,
446   RPC_WSTR AuthType,
447   void * SessionId,
448   void * Interface,
449   void * Reserved,
450   unsigned long Flags,
451   RPC_WSTR * NewServerName,
452   RPC_WSTR * NewServerPort
453 );
454
455 #else
456
457 typedef RPC_STATUS (__RPC_USER * RPC_NEW_HTTP_PROXY_CHANNEL) (
458   RPC_WSTR ServerName,
459   RPC_WSTR ServerPort,
460   RPC_CSTR RemoteUser,
461   RPC_WSTR * NewServerName
462 );
463
464 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WS03) */
465
466 #if (_WIN32_WINNT >= _WIN32_WINNT_VISTA)
467 #define RPC_C_HTTP_AUTHN_TARGET_PROXY  2
468 #define RPC_C_HTTP_FLAG_ENABLE_CERT_REVOCATION_CHECK 16
469 #define RPC_C_SECURITY_QOS_VERSION_4 4L
470
471 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A {
472   SEC_WINNT_AUTH_IDENTITY_A *TrasportCredentials;
473   unsigned long Flags;
474   unsigned long AuthenticationTarget;
475   unsigned long NumberOfAuthnSchemes;
476   unsigned long *AuthnSchemes;
477   RPC_CSTR ServerCertificateSubject;
478   SEC_WINNT_AUTH_IDENTITY_A *ProxyCredentials;
479   unsigned long NumberOfProxyAuthnSchemes;
480   unsigned long *ProxyAuthnSchemes;
481 } RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A
482
483 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W {
484   SEC_WINNT_AUTH_IDENTITY_W *TrasportCredentials;
485   unsigned long Flags;
486   unsigned long AuthenticationTarget;
487   unsigned long NumberOfAuthnSchemes;
488   unsigned long *AuthnSchemes;
489   RPC_WSTR ServerCertificateSubject;
490   SEC_WINNT_AUTH_IDENTITY_W *ProxyCredentials;
491   unsigned long NumberOfProxyAuthnSchemes;
492   unsigned long *ProxyAuthnSchemes;
493 } RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W
494
495 #define RPC_HTTP_TRANSPORT_CREDENTIALS_V2 __AW(RPC_HTTP_TRANSPORT_CREDENTIALS_V2_)
496 #define PRPC_HTTP_TRANSPORT_CREDENTIALS_V2 __AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_)
497 #define _RPC_HTTP_TRANSPORT_CREDENTIALS_V2 __AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_V2_)
498
499 typedef struct _RPC_SECURITY_QOS_V4_A {
500   unsigned long Version;
501   unsigned long Capabilities;
502   unsigned long IdentityTracking;
503   unsigned long ImpersonationType;
504   unsigned long AdditionalSecurityInfoType;
505   union {
506     RPC_HTTP_TRANSPORT_CREDENITIALS_A *HttpCredentials;
507   } u
508   void *Sid;
509   unsigned int EffectiveOnly;
510 } RPC_SECURITY_QOS_V4_A *PRPC_SECURITY_QOS_V4_A;
511
512 typedef struct _RPC_SECURITY_QOS_V4_W {
513   unsigned long Version;
514   unsigned long Capabilities;
515   unsigned long IdentityTracking;
516   unsigned long ImpersonationType;
517   unsigned long AdditionalSecurityInfoType;
518   union {
519     RPC_HTTP_TRANSPORT_CREDENITIALS_W *HttpCredentials;
520   } u
521   void *Sid;
522   unsigned int EffectiveOnly;
523 } RPC_SECURITY_QOS_V4_W *PRPC_SECURITY_QOS_V4_W;
524
525 #define RPC_SECURITY_QOS_V4 __AW(RPC_SECURITY_QOS_V4_)
526 #define PRPC_SECURITY_QOS_V4 __AW(PRPC_SECURITY_QOS_V4_)
527 #define _RPC_SECURITY_QOS_V4 __AW(_RPC_SECURITY_QOS_V4_)
528 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_VISTA) */
529
530 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
531 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A {
532   SEC_WINNT_AUTH_IDENTITY_A *TrasportCredentials;
533   unsigned long Flags;
534   unsigned long AuthenticationTarget;
535   unsigned long NumberOfAuthnSchemes;
536   unsigned long *AuthnSchemes;
537   RPC_CSTR ServerCertificateSubject;
538   RPC_AUTH_IDENTITY_HANDLE ProxyCredentials;
539   unsigned long NumberOfProxyAuthnSchemes;
540   unsigned long *ProxyAuthnSchemes;
541 } RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A
542
543 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W {
544   SEC_WINNT_AUTH_IDENTITY_W *TrasportCredentials;
545   unsigned long Flags;
546   unsigned long AuthenticationTarget;
547   unsigned long NumberOfAuthnSchemes;
548   unsigned long *AuthnSchemes;
549   RPC_WSTR ServerCertificateSubject;
550   RPC_AUTH_IDENTITY_HANDLE ProxyCredentials;
551   unsigned long NumberOfProxyAuthnSchemes;
552   unsigned long *ProxyAuthnSchemes;
553 } RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_W
554
555 #define RPC_HTTP_TRANSPORT_CREDENTIALS_V3 __AW(RPC_HTTP_TRANSPORT_CREDENTIALS_V3_)
556 #define PRPC_HTTP_TRANSPORT_CREDENTIALS_V3 __AW(PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_)
557 #define _RPC_HTTP_TRANSPORT_CREDENTIALS_V3 __AW(_RPC_HTTP_TRANSPORT_CREDENTIALS_V3_)
558 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN7) */
559
560 #endif /* !_AUTH_IDENTITY_DEFINED */
561
562 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
563 typedef struct {
564         unsigned char *UserName;
565         unsigned char *ComputerName;
566         unsigned short Privilege;
567         unsigned long AuthFlags;
568 } RPC_CLIENT_INFORMATION1, *PRPC_CLIENT_INFORMATION1;
569 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WINXP) */
570
571 typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
572 typedef int(__RPC_API *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE, unsigned long, RPC_STATUS *);
573
574 #ifdef RPC_UNICODE_SUPPORTED
575 typedef struct _RPC_PROTSEQ_VECTORA {
576         unsigned int Count;
577         unsigned char*Protseq[1];
578 } RPC_PROTSEQ_VECTORA;
579 typedef struct _RPC_PROTSEQ_VECTORW {
580         unsigned int Count;
581         unsigned short*Protseq[1];
582 } RPC_PROTSEQ_VECTORW;
583 ___RPC_ENTRY__ RpcBindingFromStringBindingA(unsigned char *, RPC_BINDING_HANDLE *);
584 ___RPC_ENTRY__ RpcBindingFromStringBindingW(unsigned short *, RPC_BINDING_HANDLE *);
585 ___RPC_ENTRY__ RpcBindingToStringBindingA(RPC_BINDING_HANDLE, RPC_CSTR *);
586 ___RPC_ENTRY__ RpcBindingToStringBindingW(RPC_BINDING_HANDLE, RPC_WSTR *);
587 ___RPC_ENTRY__ RpcStringBindingComposeA(RPC_CSTR, RPC_CSTR, RPC_CSTR, RPC_CSTR, RPC_CSTR, RPC_CSTR *);
588 ___RPC_ENTRY__ RpcStringBindingComposeW(RPC_WSTR, RPC_WSTR, RPC_WSTR, RPC_WSTR, RPC_WSTR, RPC_WSTR *);
589 ___RPC_ENTRY__ RpcStringBindingParseA(RPC_CSTR, RPC_CSTR *, RPC_CSTR *, RPC_CSTR *, RPC_CSTR *, RPC_CSTR *);
590 ___RPC_ENTRY__ RpcStringBindingParseW(RPC_WSTR, RPC_WSTR *, RPC_WSTR *, RPC_WSTR *, RPC_WSTR *, RPC_WSTR *);
591 ___RPC_ENTRY__ RpcStringFreeA(RPC_CSTR *);
592 ___RPC_ENTRY__ RpcStringFreeW(RPC_WSTR *);
593 ___RPC_ENTRY__ RpcNetworkIsProtseqValidA(RPC_CSTR);
594 ___RPC_ENTRY__ RpcNetworkIsProtseqValidW(RPC_WSTR);
595 ___RPC_ENTRY__ RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**);
596 ___RPC_ENTRY__ RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**);
597 ___RPC_ENTRY__ RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**);
598 ___RPC_ENTRY__ RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**);
599 ___RPC_ENTRY__ RpcServerUseProtseqA(RPC_CSTR, unsigned int, void *);
600 ___RPC_ENTRY__ RpcServerUseProtseqW(RPC_WSTR, unsigned int, void *);
601 ___RPC_ENTRY__ RpcServerUseProtseqExA(RPC_CSTR, unsigned int, void *, PRPC_POLICY);
602 ___RPC_ENTRY__ RpcServerUseProtseqExW(RPC_WSTR, unsigned int, void *, PRPC_POLICY);
603 ___RPC_ENTRY__ RpcServerUseProtseqEpA(RPC_CSTR, unsigned int, RPC_CSTR, void *);
604 ___RPC_ENTRY__ RpcServerUseProtseqEpW(RPC_WSTR, unsigned int, RPC_WSTR, void *);
605 ___RPC_ENTRY__ RpcServerUseProtseqEpExA(RPC_CSTR, unsigned int, RPC_CSTR, void *, PRPC_POLICY);
606 ___RPC_ENTRY__ RpcServerUseProtseqEpExW(RPC_WSTR, unsigned int, RPC_WSTR, void *, PRPC_POLICY);
607 ___RPC_ENTRY__ RpcServerUseProtseqIfA(RPC_CSTR, unsigned int, RPC_IF_HANDLE, void *);
608 ___RPC_ENTRY__ RpcServerUseProtseqIfW(RPC_WSTR, unsigned int, RPC_IF_HANDLE, void *);
609 ___RPC_ENTRY__ RpcServerUseProtseqIfExA(RPC_CSTR, unsigned int, RPC_IF_HANDLE, void *, PRPC_POLICY);
610 ___RPC_ENTRY__ RpcServerUseProtseqIfExW(RPC_WSTR, unsigned int, RPC_IF_HANDLE, void *, PRPC_POLICY);
611 ___RPC_ENTRY__ RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, unsigned long, RPC_CSTR *);
612 ___RPC_ENTRY__ RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, unsigned long, RPC_WSTR *);
613 ___RPC_ENTRY__ RpcServerInqDefaultPrincNameA(unsigned long, RPC_CSTR *);
614 ___RPC_ENTRY__ RpcServerInqDefaultPrincNameW(unsigned long, RPC_WSTR *);
615 ___RPC_ENTRY__ RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, unsigned long, RPC_CSTR *);
616 ___RPC_ENTRY__ RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, unsigned long, RPC_WSTR *);
617 ___RPC_ENTRY__ RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE *, RPC_CSTR *, unsigned long *, unsigned long *, unsigned long *);
618 ___RPC_ENTRY__ RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE *, RPC_WSTR *, unsigned long *, unsigned long *, unsigned long *);
619
620 #define RpcBindingInqAuthClient __AW(RpcBindingInqAuthClient)
621
622 ___RPC_ENTRY__ RpcBindingInqAuthClientExA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE *, RPC_CSTR *, unsigned long *, unsigned long *, unsigned long *, unsigned long);
623 ___RPC_ENTRY__ RpcBindingInqAuthClientExW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE *, RPC_WSTR *, unsigned long *, unsigned long *, unsigned long *, unsigned long);
624
625 #define RpcBindingInqAuthClientEx __AW(RpcBindingInqAuthClientEx)
626
627 ___RPC_ENTRY__ RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, RPC_CSTR *, unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *);
628 ___RPC_ENTRY__ RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, RPC_WSTR *, unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *);
629
630 #define RpcBindingInqAuthInfo __AW(RpcBindingInqAuthInfo)
631
632 ___RPC_ENTRY__ RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, RPC_CSTR *, unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *, unsigned long, RPC_SECURITY_QOS *);
633 ___RPC_ENTRY__ RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, RPC_WSTR *, unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *, unsigned long, RPC_SECURITY_QOS *);
634
635 #define RpcBindingInqAuthInfoEx __AW(RpcBindingInqAuthInfoEx)
636
637 ___RPC_ENTRY__ RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, RPC_CSTR, unsigned long, unsigned long, RPC_AUTH_IDENTITY_HANDLE, unsigned long);
638 ___RPC_ENTRY__ RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, RPC_WSTR, unsigned long, unsigned long, RPC_AUTH_IDENTITY_HANDLE, unsigned long);
639
640 #define RpcBindingSetAuthInfo __AW(RpcBindingSetAuthInfo)
641
642 ___RPC_ENTRY__ RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, RPC_CSTR, unsigned long, unsigned long, RPC_AUTH_IDENTITY_HANDLE, unsigned long, RPC_SECURITY_QOS *);
643 ___RPC_ENTRY__ RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, RPC_WSTR, unsigned long, unsigned long, RPC_AUTH_IDENTITY_HANDLE, unsigned long, RPC_SECURITY_QOS *);
644
645 #define RpcBindingSetAuthInfoEx __AW(RpcBindingSetAuthInfoEx)
646
647 typedef void (__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN)(void *, RPC_WSTR, unsigned long, void **, RPC_STATUS *);
648
649 ___RPC_ENTRY__ RpcServerCompleteSecurityCallback(RPC_BINDING_HANDLE, RPC_STATUS);
650 ___RPC_ENTRY__ RpcServerRegisterAuthInfoA(RPC_CSTR, unsigned long, RPC_AUTH_KEY_RETRIEVAL_FN, void *);
651 ___RPC_ENTRY__ RpcServerRegisterAuthInfoW(RPC_WSTR, unsigned long, RPC_AUTH_KEY_RETRIEVAL_FN, void *);
652
653 #define RpcServerRegisterAuthInfo __AW(RpcServerRegisterAuthInfo)
654
655 ___RPC_ENTRY__ UuidToStringA(UUID *, RPC_CSTR *);
656 ___RPC_ENTRY__ UuidToStringW(UUID *, RPC_WSTR *);
657 #define UuidToString __AW(UuidToString)
658
659 ___RPC_ENTRY__ UuidFromStringA(RPC_CSTR, UUID *);
660 ___RPC_ENTRY__ UuidFromStringW(RPC_WSTR, UUID *);
661 #define UuidFromString __AW(UuidFromString)
662
663 ___RPC_ENTRY__ RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR *, UUID_VECTOR *, RPC_CSTR);
664 ___RPC_ENTRY__ RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR *, UUID_VECTOR *, RPC_WSTR);
665 #define RpcEpRegisterNoReplace __AW(RpcEpRegisterNoReplace)
666
667 ___RPC_ENTRY__ RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR *, UUID_VECTOR *, RPC_CSTR);
668 ___RPC_ENTRY__ RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR *, UUID_VECTOR *, RPC_WSTR);
669 #define RpcEpRegister __AW(RpcEpRegister)
670
671 ___RPC_ENTRY__ DceErrorInqTextA(RPC_STATUS, RPC_CSTR);
672 ___RPC_ENTRY__ DceErrorInqTextW(RPC_STATUS, RPC_WSTR);
673 #define DceErrorInqText __AW(DceErrorInqText)
674
675 ___RPC_ENTRY__ RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID *, RPC_BINDING_HANDLE *, UUID *, RPC_CSTR *);
676 ___RPC_ENTRY__ RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID *, RPC_BINDING_HANDLE *, UUID *, RPC_WSTR *);
677 #define RpcMgmtEpEltInqNext __AW(RpcMgmtEpEltInqNext)
678
679 #define RPC_PROTSEQ_VECTOR __AW(RPC_PROTSEQ_VECTOR)
680 #define RpcBindingFromStringBinding __AW(RpcBindingFromStringBinding)
681 #define RpcBindingToStringBinding __AW(RpcBindingToStringBinding)
682 #define RpcStringBindingCompose __AW(RpcStringBindingCompose)
683 #define RpcStringBindingParse __AW(RpcStringBindingParse)
684 #define RpcStringFree __AW(RpcStringFree)
685 #define RpcNetworkIsProtseqValid __AW(RpcNetworkIsProtseqValid)
686 #define RpcNetworkInqProtseqs __AW(RpcNetworkInqProtseqs)
687 #define RpcProtseqVectorFree __AW(RpcProtseqVectorFree)
688 #define RpcServerUseProtseq __AW(RpcServerUseProtseq)
689 #define RpcServerUseProtseqEx __AW(RpcServerUseProtseqEx)
690 #define RpcServerUseProtseqEp __AW(RpcServerUseProtseqEp)
691 #define RpcServerUseProtseqEpEx __AW(RpcServerUseProtseqEpEx)
692 #define RpcServerUseProtseqIf __AW(RpcServerUseProtseqIf)
693 #define RpcServerUseProtseqIfEx __AW(RpcServerUseProtseqIfEx)
694 #define RpcMgmtInqServerPrincName __AW(RpcMgmtInqServerPrincName)
695 #define RpcServerInqDefaultPrincName __AW(RpcServerInqDefaultPrincName)
696 #define RpcNsBindingInqEntryName __AW(RpcNsBindingInqEntryName)
697
698 #else /* RPC_UNICODE_SUPPORTED */
699 typedef struct _RPC_PROTSEQ_VECTOR {
700         unsigned int Count;
701         unsigned char* Protseq[1];
702 } RPC_PROTSEQ_VECTOR;
703 ___RPC_ENTRY__ RpcBindingFromStringBinding(unsigned char *, RPC_BINDING_HANDLE *);
704 ___RPC_ENTRY__ RpcBindingToStringBinding(RPC_BINDING_HANDLE, RPC_CSTR *);
705 ___RPC_ENTRY__ RpcStringBindingCompose(RPC_CSTR, RPC_CSTR, RPC_CSTR, RPC_CSTR, RPC_CSTR, RPC_CSTR *);
706 ___RPC_ENTRY__ RpcStringBindingParse(RPC_CSTR, RPC_CSTR *, RPC_CSTR *, RPC_CSTR *, RPC_CSTR *, RPC_CSTR *);
707 ___RPC_ENTRY__ RpcStringFree(RPC_CSTR *);
708 ___RPC_ENTRY__ RpcNetworkIsProtseqValid(RPC_CSTR);
709 ___RPC_ENTRY__ RpcNetworkInqProtseqs(RPC_PROTSEQ_VECTOR **);
710 ___RPC_ENTRY__ RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR **);
711 ___RPC_ENTRY__ RpcServerUseProtseq(RPC_CSTR, unsigned int, void *);
712 ___RPC_ENTRY__ RpcServerUseProtseqEx(RPC_CSTR, unsigned int, void *, PRPC_POLICY);
713 ___RPC_ENTRY__ RpcServerUseProtseqEp(RPC_CSTR, unsigned int, RPC_CSTR, void *);
714 ___RPC_ENTRY__ RpcServerUseProtseqEpEx(RPC_CSTR, unsigned int, RPC_CSTR, void *, PRPC_POLICY);
715 ___RPC_ENTRY__ RpcServerUseProtseqIf(RPC_CSTR, unsigned int, RPC_IF_HANDLE, void *);
716 ___RPC_ENTRY__ RpcServerUseProtseqIfEx(RPC_CSTR, unsigned int, RPC_IF_HANDLE, void *, PRPC_POLICY);
717 ___RPC_ENTRY__ RpcMgmtInqServerPrincName(RPC_BINDING_HANDLE, unsigned long, RPC_CSTR *);
718 ___RPC_ENTRY__ RpcServerInqDefaultPrincName(unsigned long, RPC_CSTR *);
719 ___RPC_ENTRY__ RpcNsBindingInqEntryName(RPC_BINDING_HANDLE, unsigned long, RPC_CSTR *);
720 ___RPC_ENTRY__ RpcBindingInqAuthClient(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE *, RPC_CSTR *, unsigned long *, unsigned long *, unsigned long *);
721 ___RPC_ENTRY__ RpcBindingInqAuthClientEx(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE *, RPC_CSTR *, unsigned long *, unsigned long *, unsigned long *, unsigned long);
722 RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfo(RPC_BINDING_HANDLE,unsigned char **,unsigned long *,unsigned long *,RPC_AUTH_IDENTITY_HANDLE *,unsigned long *);
723 RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfo(RPC_BINDING_HANDLE,unsigned char *,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
724
725 typedef void (__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN)(void *, RPC_CSTR, unsigned long, void **, RPC_STATUS *);
726
727 ___RPC_ENTRY__ RpcServerRegisterAuthInfo(RPC_CSTR, unsigned long, RPC_AUTH_KEY_RETRIEVAL_FN, void *);
728
729 ___RPC_ENTRY__ UuidToString(UUID *, RPC_CSTR *);
730 ___RPC_ENTRY__ UuidFromString(RPC_CSTR, UUID *);
731 ___RPC_ENTRY__ RpcEpRegister(RPC_IF_HANDLE, RPC_BINDING_VECTOR *, UUID_VECTOR *, RPC_CSTR);
732 ___RPC_ENTRY__ RpcEpRegisterNoReplace(RPC_IF_HANDLE, RPC_BINDING_VECTOR *, UUID_VECTOR *, RPC_CSTR);
733 ___RPC_ENTRY__ DceErrorInqText(RPC_STATUS, RPC_CSTR);
734 ___RPC_ENTRY__ RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE, RPC_IF_ID *, RPC_BINDING_HANDLE *, UUID *, RPC_CSTR *);
735 #endif /* RPC_UNICODE_SUPPORTED */
736
737 ___RPC_ENTRY__ RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE *);
738 ___RPC_ENTRY__ RpcBindingFree(RPC_BINDING_HANDLE *);
739 ___RPC_ENTRY__ RpcBindingSetOption(RPC_BINDING_HANDLE, unsigned long, ULONG_PTR);
740 ___RPC_ENTRY__ RpcBindingInqOption(RPC_BINDING_HANDLE, unsigned long, ULONG_PTR);
741 ___RPC_ENTRY__ RpcSsGetContextBinding(void *, RPC_BINDING_HANDLE *);
742 ___RPC_ENTRY__ RpcBindingInqObject(RPC_BINDING_HANDLE, UUID *);
743 ___RPC_ENTRY__ RpcBindingReset(RPC_BINDING_HANDLE);
744 ___RPC_ENTRY__ RpcBindingSetObject(RPC_BINDING_HANDLE, UUID *);
745 ___RPC_ENTRY__ RpcMgmtInqDefaultProtectLevel(unsigned long, unsigned long *);
746
747 ___RPC_ENTRY__ RpcBindingVectorFree(RPC_BINDING_VECTOR * *);
748 ___RPC_ENTRY__ RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID *);
749 ___RPC_ENTRY__ RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, unsigned int *);
750 ___RPC_ENTRY__ RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, unsigned int);
751 ___RPC_ENTRY__ RpcMgmtSetCancelTimeout(long);
752 ___RPC_ENTRY__ RpcObjectInqType(UUID *, UUID *);
753 ___RPC_ENTRY__ RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *);
754 ___RPC_ENTRY__ RpcObjectSetType(UUID *, UUID *);
755 ___RPC_ENTRY__ RpcServerInqBindings(RPC_BINDING_VECTOR **);
756 ___RPC_ENTRY__ RpcServerInqIf(RPC_IF_HANDLE, UUID *, RPC_MGR_EPV **);
757 ___RPC_ENTRY__ RpcServerListen(unsigned int, unsigned int, unsigned int);
758 ___RPC_ENTRY__ RpcServerRegisterIf(RPC_IF_HANDLE, UUID *, RPC_MGR_EPV *);
759 ___RPC_ENTRY__ RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID *, RPC_MGR_EPV *, unsigned int, unsigned int, RPC_IF_CALLBACK_FN *);
760 ___RPC_ENTRY__ RpcServerRegisterIf2(RPC_IF_HANDLE, UUID *, RPC_MGR_EPV *, unsigned int, unsigned int, unsigned int, RPC_IF_CALLBACK_FN *);
761 ___RPC_ENTRY__ RpcServerUnregisterIf(RPC_IF_HANDLE, UUID *, unsigned int);
762 ___RPC_ENTRY__ RpcServerUnregisterIfEx(RPC_IF_HANDLE, UUID *, int);
763 ___RPC_ENTRY__ RpcServerUseAllProtseqs(unsigned int, void *);
764 ___RPC_ENTRY__ RpcServerUseAllProtseqsEx(unsigned int, void *, PRPC_POLICY);
765 ___RPC_ENTRY__ RpcServerUseAllProtseqsIf(unsigned int, RPC_IF_HANDLE, void *);
766 ___RPC_ENTRY__ RpcServerUseAllProtseqsIfEx(unsigned int, RPC_IF_HANDLE, void *, PRPC_POLICY);
767 ___RPC_VOID__  RpcServerYield(void);
768 ___RPC_ENTRY__ RpcMgmtStatsVectorFree(RPC_STATS_VECTOR **);
769 ___RPC_ENTRY__ RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR **);
770 ___RPC_ENTRY__ RpcMgmtIsServerListening(RPC_BINDING_HANDLE);
771 ___RPC_ENTRY__ RpcMgmtStopServerListening(RPC_BINDING_HANDLE);
772 ___RPC_ENTRY__ RpcMgmtWaitServerListen(void);
773 ___RPC_ENTRY__ RpcMgmtSetServerStackSize(unsigned long);
774 ___RPC_VOID__  RpcSsDontSerializeContext(void);
775 ___RPC_ENTRY__ RpcMgmtEnableIdleCleanup(void);
776 ___RPC_ENTRY__ RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR **);
777 ___RPC_ENTRY__ RpcIfIdVectorFree(RPC_IF_ID_VECTOR **);
778 ___RPC_ENTRY__ RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE);
779 ___RPC_ENTRY__ RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE *);
780 ___RPC_VOID__  DECLSPEC_NORETURN RpcRaiseException(RPC_STATUS);
781 ___RPC_ENTRY__ RpcTestCancel(void);
782 ___RPC_ENTRY__ RpcServerTestCancle(RPC_BINDING_HANDLE);
783 ___RPC_ENTRY__ RpcCancelThread(void *);
784 ___RPC_ENTRY__ RpcCancelThreadEx(void *, long);
785 ___RPC_ENTRY__ UuidCreate(UUID *);
786 ___RPC_ENTRY__ UuidCreateSequential(UUID *);
787 ___RPC_INT__   UuidCompare(UUID *, UUID *, RPC_STATUS *);
788 ___RPC_ENTRY__ UuidCreateNil(UUID *);
789 ___RPC_INT__    UuidEqual(UUID *, UUID *, RPC_STATUS *);
790 ___RPC_USHORT__ UuidHash(UUID *, RPC_STATUS *);
791 ___RPC_INT__    UuidIsNil(UUID *, RPC_STATUS *);
792 ___RPC_ENTRY__  RpcEpUnregister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
793 ___RPC_ENTRY__  RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, unsigned long, RPC_IF_ID *, unsigned long, UUID *, RPC_EP_INQ_HANDLE *);
794 ___RPC_ENTRY__ RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE *);
795 ___RPC_ENTRY__ RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID *, RPC_BINDING_HANDLE, UUID *);
796 ___RPC_ENTRY__ RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
797
798 /* FIXME: Not currently supported by MS */
799 RPC_STATUS RPC_ENTRY RpcMgmtInqParameter(unsigned int,unsigned long*);
800 RPC_STATUS RPC_ENTRY RpcMgmtSetParameter(unsigned int,unsigned long);
801 RPC_STATUS RPC_ENTRY RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long*);
802 RPC_STATUS RPC_ENTRY RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long);
803 /* End FIXME: Not currently supported by MS */
804
805 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
806 #define RPC_C_AUTHN_DIGEST 21
807 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WINXP) */
808
809 #if (_WIN32_WINNT >= _WIN32_WINNT_WS03)
810 #define RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE     0x08
811 #define RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT               0x10
812 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WS03) */
813
814 #if (_WIN32_WINNT >= _WIN32_WINNT_VISTA)
815 #define RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY 0x20
816 #define RPC_PROTSEQ_TCP  0x1
817 #define RPC_PROTSEQ_NMP  0x2
818 #define RPC_PROTSEQ_LRPC 0x3
819 #define RPC_PROTSEQ_HTTP 0x4
820 #define RPC_BHT_OBJECT_UUID_VALID 0x1
821 #define RPC_BHO_NONCAUSAL                0x1
822 #define RPC_BHO_DONTLINGER               0x2
823 #define RPC_BHO_EXCLUSIVE_AND_GUARANTEED 0x4
824 #define RPC_IF_SEC_CACHE_PER_PROC     0x0080
825 #define RPC_IF_ASYNC_CALLBACK         0x0100
826 #define RPC_FW_IF_FLAG_DCOM 0x0001
827
828 typedef struct _RPC_BINDING_HANDLE_TEMPLATE_V1_A {
829   unsigned long Version;
830   unsigned long Flags;
831   unsigned long ProtocolSequence;
832   RPC_CSTR NetworkAddress;
833   RPC_CSTR StringEndpoint;
834   union {
835     unsigned short *Reserved;
836   } u1;
837   UUID Object Uuid;
838 } RPC_BINDING_HANDLE_TEMPLATE_V1_A, *PRPC_BINDING_HANDLE_TEMPLATE_V1_A;
839
840 typedef struct _RPC_BINDING_HANDLE_TEMPLATE_V1_W {
841   unsigned long Version;
842   unsigned long Flags;
843   unsigned long ProtocolSequence;
844   RPC_WSTR NetworkAddress;
845   RPC_WSTR StringEndpoint;
846   union {
847     unsigned short *Reserved;
848   } u1;
849   UUID Object Uuid;
850 } RPC_BINDING_HANDLE_TEMPLATE_V1_W, *PRPC_BINDING_HANDLE_TEMPLATE_V1_W;
851
852 #define RPC_BINDING_HANDLE_TEMPLATE_V1 __AW(RPC_BINDING_HANDLE_TEMPLATE_V1_)
853 #define PRPC_BINDING_HANDLE_TEMPLATE_V1 __AW(PRPC_BINDING_HANDLE_TEMPLATE_V1_)
854 #define _RPC_BINDING_HANDLE_TEMPLATE_V1 __AW(_RPC_BINDING_HANDLE_TEMPLATE_V1_)
855
856 #ifdef _AUTH_IDENTITY_A_DEFINED
857 typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
858   unsigned long Version;
859   RPC_CSTR ServerPrincName;
860   unsigned long AuthnLevel;
861   unsigned long AuthnSvc;
862   SEC_WINNT_AUTH_IDENTITY_A *AuthIdentiy;
863   RPC_SECURITY_QOS * SecurityQos;
864 } RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;
865 #endif /* def _AUTH_IDENTITY_A_DEFINED */
866
867 typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_W {
868   unsigned long Version;
869   RPC_WSTR ServerPrincName;
870   unsigned long AuthnLevel;
871   unsigned long AuthnSvc;
872   SEC_WINNT_AUTH_IDENTITY_W *AuthIdentiy;
873   RPC_SECURITY_QOS * SecurityQos;
874 } RPC_BINDING_HANDLE_SECURITY_V1_W, *PRPC_BINDING_HANDLE_SECURITY_V1_W;
875
876 #define RPC_BINDING_HANDLE_SECURITY_V1 __AW(RPC_BINDING_HANDLE_SECURITY_V1_)
877 #define PRPC_BINDING_HANDLE_SECURITY_V1 __AW(PRPC_BINDING_HANDLE_SECURITY_V1_)
878 #define _RPC_BINDING_HANDLE_SECURITY_V1 __AW(_RPC_BINDING_HANDLE_SECURITY_V1_)
879
880 #ifdef _AUTH_IDENTITY_A_DEFINED
881 ___RPC_ENTRY__ RpcBindingCreateA(RPC_BINDING_HANDLE_TEMPLATE_V1_A *, RPC_BINDING_HANDLE_SECURITY_V1_A *, RPC_BINDING_HANDLE_OPTIONS_V1 *, RPC_BINDING_HANDLE *);
882 #endif /* def _AUTH_IDENTITY_A_DEFINED */
883
884 ___RPC_ENTRY__ RpcBindingCreateW(RPC_BINDING_HANDLE_TEMPLATE_V1_W *, RPC_BINDING_HANDLE_SECURITY_V1_W *, RPC_BINDING_HANDLE_OPTIONS_V1 *, RPC_BINDING_HANDLE *);
885
886 #define RpcBindingCreate __AW(RpcBindingCreate)
887
888 ___RPC_ENTRY__ RpcBindingGetTrainingContextHandle(RPC_BINDING_HANDLE, void **);
889 ___RPC_ENTRY__ RpcServerInqBindingHandle(RPC_BINDING_HANDLE *);
890 ___RPC_INT__   RpcExceptionFilter(unsigned long);
891
892 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_VISTA) */
893
894 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
895 #define RPC_C_AUTHN_KERNEL 20
896 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN7) */
897
898 #include <rpcdcep.h>
899
900 #undef ___RPC_ENTRY__
901 #undef ___RPC_VOID__
902 #undef ___RPC_INT__
903 #undef ___RPC_USHORT__
904 #undef ___RPC_ULONG__
905
906 #ifdef __cplusplus
907 }
908 #endif
909
910 #endif /* ! _RPCDCE_H */