1 /***********************************************************************\
2 *                                rpcdce.d                               *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                 Translated from MinGW Windows headers                 *
7 *                                                                       *
8 *                       Placed into public domain                       *
9 \***********************************************************************/
10 module windows.rpcdce;
11 pragma(lib, "Rpcrt4");
12 nothrow:
13 // TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be
14 // replaced aliases for version(Unicode)
15 
16 public import windows.rpcdcep;
17 private import windows.basetyps, windows.w32api, windows.windef;
18 
19 // FIXME: clean up Windows version support
20 
21 alias UUID uuid_t;
22 alias UUID_VECTOR uuid_vector_t;
23 alias void RPC_MGR_EPV;
24 
25 // for RpcMgmtSetComTimeout()
26 enum : uint {
27 	RPC_C_BINDING_MIN_TIMEOUT      = 0,
28 	RPC_C_BINDING_DEFAULT_TIMEOUT  = 5,
29 	RPC_C_BINDING_MAX_TIMEOUT      = 9,
30 	RPC_C_BINDING_INFINITE_TIMEOUT = 10
31 }
32 
33 const RPC_C_CANCEL_INFINITE_TIMEOUT= -1;
34 const RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234;
35 const RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10;
36 const RPC_C_BIND_TO_ALL_NICS=1;
37 const RPC_C_USE_INTERNET_PORT=1;
38 const RPC_C_USE_INTRANET_PORT=2;
39 
40 // for RPC_STATS_VECTOR, used by RpcMgmyInqStats
41 enum : uint {
42 	RPC_C_STATS_CALLS_IN  = 0,
43 	RPC_C_STATS_CALLS_OUT,
44 	RPC_C_STATS_PKTS_IN,
45 	RPC_C_STATS_PKTS_OUT
46 }
47 
48 const RPC_IF_AUTOLISTEN=0x0001;
49 const RPC_IF_OLE=2;
50 const RPC_C_MGMT_INQ_IF_IDS=0;
51 const RPC_C_MGMT_INQ_PRINC_NAME=1;
52 const RPC_C_MGMT_INQ_STATS=2;
53 const RPC_C_MGMT_IS_SERVER_LISTEN=3;
54 const RPC_C_MGMT_STOP_SERVER_LISTEN=4;
55 
56 // Inquiry Type for RpcMgmtEpEltInqBegin()
57 enum : uint {
58 	RPC_C_EP_ALL_ELTS = 0,
59 	RPC_C_EP_MATCH_BY_IF,
60 	RPC_C_EP_MATCH_BY_OBJ,
61 	RPC_C_EP_MATCH_BY_BOTH
62 }
63 
64 // for RpcMgmtEpEltInqNext()
65 enum : uint {
66 	RPC_C_VERS_ALL = 1,
67 	RPC_C_VERS_COMPATIBLE,
68 	RPC_C_VERS_EXACT,
69 	RPC_C_VERS_MAJOR_ONLY,
70 	RPC_C_VERS_UPTO
71 }
72 
73 const DCE_C_ERROR_STRING_LEN=256;
74 const RPC_C_PARM_MAX_PACKET_LENGTH=1;
75 const RPC_C_PARM_BUFFER_LENGTH=2;
76 const RPC_C_AUTHN_LEVEL_DEFAULT=0;
77 const RPC_C_AUTHN_LEVEL_NONE=1;
78 const RPC_C_AUTHN_LEVEL_CONNECT=2;
79 const RPC_C_AUTHN_LEVEL_CALL=3;
80 const RPC_C_AUTHN_LEVEL_PKT=4;
81 const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5;
82 const RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6;
83 const RPC_C_IMP_LEVEL_ANONYMOUS=1;
84 const RPC_C_IMP_LEVEL_IDENTIFY=2;
85 const RPC_C_IMP_LEVEL_IMPERSONATE=3;
86 const RPC_C_IMP_LEVEL_DELEGATE=4;
87 const RPC_C_QOS_IDENTITY_STATIC=0;
88 const RPC_C_QOS_IDENTITY_DYNAMIC=1;
89 const RPC_C_QOS_CAPABILITIES_DEFAULT=0;
90 const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1;
91 
92 // These enums were buggy in MinGW !
93 const RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT;
94 const RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE;
95 const RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT;
96 const RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL;
97 const RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT;
98 const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY;
99 const RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY;
100 
101 const RPC_C_AUTHN_NONE=0;
102 const RPC_C_AUTHN_DCE_PRIVATE=1;
103 const RPC_C_AUTHN_DCE_PUBLIC=2;
104 const RPC_C_AUTHN_DEC_PUBLIC=4;
105 const RPC_C_AUTHN_WINNT=10;
106 const RPC_C_AUTHN_DEFAULT=0xFFFFFFFF;
107 //const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense!
108 const SEC_WINNT_AUTH_IDENTITY_ANSI=0x1;
109 const SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2;
110 const RPC_C_AUTHZ_NONE=0;
111 const RPC_C_AUTHZ_NAME=1;
112 const RPC_C_AUTHZ_DCE=2;
113 const RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF;
114 
115 alias I_RPC_HANDLE RPC_BINDING_HANDLE;
116 alias RPC_BINDING_HANDLE handle_t;
117 
118 struct RPC_BINDING_VECTOR {
119 	uint Count;
120 	RPC_BINDING_HANDLE[1] BindingH;
121 }
122 
123 alias RPC_BINDING_HANDLE rpc_binding_handle_t;
124 alias RPC_BINDING_VECTOR rpc_binding_vector_t;
125 
126 
127 struct UUID_VECTOR {
128 	uint Count;
129 	UUID*[1] Uuid;
130 }
131 
132 alias void* RPC_IF_HANDLE;
133 
134 struct RPC_IF_ID {
135 	UUID Uuid;
136 	ushort VersMajor;
137 	ushort VersMinor;
138 }
139 
140 struct RPC_POLICY {
141 	uint Length;
142 	uint EndpointFlags;
143 	uint NICFlags;
144 }
145 alias RPC_POLICY* PRPC_POLICY;
146 
147 extern (Windows) {
148 	alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN;
149 	alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN;
150 }
151 
152 struct RPC_STATS_VECTOR {
153 	uint    Count;
154 	uint[1] Stats;
155 }
156 
157 struct RPC_IF_ID_VECTOR {
158 	uint          Count;
159 	RPC_IF_ID*[1] IfId;
160 }
161 mixin DECLARE_HANDLE!("RPC_AUTH_IDENTITY_HANDLE");
162 mixin DECLARE_HANDLE!("RPC_AUTHZ_HANDLE");
163 
164 struct RPC_SECURITY_QOS {
165 	uint Version;
166 	uint Capabilities;
167 	uint IdentityTracking;
168 	uint ImpersonationType;
169 }
170 alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS;
171 
172 struct SEC_WINNT_AUTH_IDENTITY_W {
173 	ushort* User;
174 	uint UserLength;
175 	ushort* Domain;
176 	uint DomainLength;
177 	ushort* Password;
178 	uint PasswordLength;
179 	uint Flags;
180 }
181 alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W;
182 
183 struct SEC_WINNT_AUTH_IDENTITY_A {
184 	ubyte* User;
185 	uint UserLength;
186 	ubyte* Domain;
187 	uint DomainLength;
188 	ubyte* Password;
189 	uint PasswordLength;
190 	uint Flags;
191 }
192 alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A;
193 
194 struct RPC_CLIENT_INFORMATION1 {
195 	ubyte* UserName;
196 	ubyte* ComputerName;
197 	ushort Privilege;
198 	uint AuthFlags;
199 }
200 alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1;
201 alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE;
202 extern (Windows) {
203 	alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN;
204 }
205 
206 struct RPC_PROTSEQ_VECTORA {
207 	uint Count;
208 	ubyte*[1] Protseq;
209 }
210 
211 struct RPC_PROTSEQ_VECTORW {
212 	uint Count;
213 	ushort*[1] Protseq;
214 }
215 
216 extern (Windows) {
217 	RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*);
218 	RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*);
219 	RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**);
220 	RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**);
221 	RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**);
222 	RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**);
223 	RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**);
224 	RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**);
225 	RPC_STATUS RpcStringFreeA(char**);
226 	RPC_STATUS RpcStringFreeW(wchar**);
227 	RPC_STATUS RpcNetworkIsProtseqValidA(char*);
228 	RPC_STATUS RpcNetworkIsProtseqValidW(wchar*);
229 	RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**);
230 	RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**);
231 	RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**);
232 	RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**);
233 	RPC_STATUS RpcServerUseProtseqA(char*, uint, void*);
234 	RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*);
235 	RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY);
236 	RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY);
237 	RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*);
238 	RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY);
239 	RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*);
240 	RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY);
241 	RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*);
242 	RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY);
243 	RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*);
244 	RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY);
245 	RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**);
246 	RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**);
247 	RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**);
248 	RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**);
249 	RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**);
250 	RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**);
251 	RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*);
252 	RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*);
253 	RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*);
254 	RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*);
255 	RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint);
256 	RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*);
257 	RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint);
258 	RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*);
259 	RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*);
260 	RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*);
261 	alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN;
262 	RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*);
263 	RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*);
264 	RPC_STATUS UuidToStringA(UUID*, char**);
265 	RPC_STATUS UuidFromStringA(char*, UUID*);
266 	RPC_STATUS UuidToStringW(UUID*, wchar**);
267 	RPC_STATUS UuidFromStringW(wchar*, UUID*);
268 	RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*);
269 	RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*);
270 	RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*);
271 	RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*);
272 	RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*);
273 	RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*);
274 	RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**);
275 	RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**);
276 
277 	// MinGW erroneously had these in rpc.h
278 	RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE);
279 	RPC_STATUS RpcRevertToSelf();
280 }
281 
282 version (Unicode) {
283 	alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR;
284 	alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY;
285 	alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY;
286 	alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext;
287 	alias RpcBindingFromStringBindingW RpcBindingFromStringBinding;
288 	alias RpcBindingToStringBindingW RpcBindingToStringBinding;
289 	alias RpcStringBindingComposeW RpcStringBindingCompose;
290 	alias RpcStringBindingParseW RpcStringBindingParse;
291 	alias RpcStringFreeW RpcStringFree;
292 	alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid;
293 	alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs;
294 	alias RpcProtseqVectorFreeW RpcProtseqVectorFree;
295 	alias RpcServerUseProtseqW RpcServerUseProtseq;
296 	alias RpcServerUseProtseqExW RpcServerUseProtseqEx;
297 	alias RpcServerUseProtseqEpW RpcServerUseProtseqEp;
298 	alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx;
299 	alias RpcServerUseProtseqIfW RpcServerUseProtseqIf;
300 	alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx;
301 	alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName;
302 	alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName;
303 	alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName;
304 	alias RpcBindingInqAuthClientW RpcBindingInqAuthClient;
305 	alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo;
306 	alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo;
307 	alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo;
308 	alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx;
309 	alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx;
310 	alias UuidFromStringW UuidFromString;
311 	alias UuidToStringW UuidToString;
312 	alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace;
313 	alias RpcEpRegisterW RpcEpRegister;
314 	alias DceErrorInqTextW DceErrorInqText;
315 } else { // Ansi
316 	alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR;
317 	alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY;
318 	alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY;
319 	alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext;
320 	alias RpcBindingFromStringBindingA RpcBindingFromStringBinding;
321 	alias RpcBindingToStringBindingA RpcBindingToStringBinding;
322 	alias RpcStringBindingComposeA RpcStringBindingCompose;
323 	alias RpcStringBindingParseA RpcStringBindingParse;
324 	alias RpcStringFreeA RpcStringFree;
325 	alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid;
326 	alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs;
327 	alias RpcProtseqVectorFreeA RpcProtseqVectorFree;
328 	alias RpcServerUseProtseqA RpcServerUseProtseq;
329 	alias RpcServerUseProtseqExA RpcServerUseProtseqEx;
330 	alias RpcServerUseProtseqEpA RpcServerUseProtseqEp;
331 	alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx;
332 	alias RpcServerUseProtseqIfA RpcServerUseProtseqIf;
333 	alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx;
334 	alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName;
335 	alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName;
336 	alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName;
337 	alias RpcBindingInqAuthClientA RpcBindingInqAuthClient;
338 	alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo;
339 	alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo;
340 	alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo;
341 	alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx;
342 	alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx;
343 	alias UuidFromStringA UuidFromString;
344 	alias UuidToStringA UuidToString;
345 	alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace;
346 	alias RpcEpRegisterA RpcEpRegister;
347 	alias DceErrorInqTextA DceErrorInqText;
348 } //#endif // UNICODE
349 
350 
351 RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*);
352 RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*);
353 RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*);
354 RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE);
355 RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*);
356 RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*);
357 RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**);
358 RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*);
359 RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*);
360 RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint);
361 RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout);
362 RPC_STATUS RpcObjectInqType(UUID*, UUID*);
363 RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*);
364 RPC_STATUS RpcObjectSetType(UUID*, UUID*);
365 RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**);
366 RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**);
367 RPC_STATUS RpcServerListen(uint, uint, uint);
368 RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*);
369 RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*);
370 RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*);
371 RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint);
372 RPC_STATUS RpcServerUseAllProtseqs(uint, void*);
373 RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY);
374 RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*);
375 RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY);
376 RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**);
377 RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**);
378 RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE);
379 RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE);
380 RPC_STATUS RpcMgmtWaitServerListen();
381 RPC_STATUS RpcMgmtSetServerStackSize(uint);
382 void RpcSsDontSerializeContext();
383 RPC_STATUS RpcMgmtEnableIdleCleanup();
384 RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**);
385 RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**);
386 RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE);
387 RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*);
388 
389 // never returns
390 void RpcRaiseException(RPC_STATUS);
391 RPC_STATUS RpcTestCancel();
392 RPC_STATUS RpcCancelThread(void*);
393 RPC_STATUS UuidCreate(UUID*);
394 int UuidCompare(UUID*, UUID*, RPC_STATUS*);
395 RPC_STATUS UuidCreateNil(UUID*);
396 int UuidEqual(UUID*, UUID*, RPC_STATUS*);
397 ushort UuidHash(UUID*, RPC_STATUS*);
398 int UuidIsNil(UUID*, RPC_STATUS*);
399 RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*);
400 RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*);
401 RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*);
402 RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*);
403 RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
404 RPC_STATUS RpcMgmtInqParameter(uint, uint*);
405 RPC_STATUS RpcMgmtSetParameter(uint, uint);
406 RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*);
407 RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint);
408 
409 static if (_WIN32_WINNT >= 0x500) {
410 	RPC_STATUS UuidCreateSequential(UUID*);
411 }