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