File: rpcdce.d

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (415 lines) | stat: -rw-r--r-- 17,500 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
/**
 * Windows API header module
 *
 * Translated from MinGW Windows headers
 *
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
 * Source: $(DRUNTIMESRC core/sys/windows/_rpcdce.d)
 */
module core.sys.windows.rpcdce;
version (Windows):
@system:

version (ANSI) {} else version = Unicode;
pragma(lib, "Rpcrt4");

// TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be
// replaced aliases for version (Unicode)

public import core.sys.windows.rpcdcep;
import core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.windef;

// FIXME: clean up Windows version support

alias UUID uuid_t;
alias UUID_VECTOR uuid_vector_t;
alias void RPC_MGR_EPV;

// for RpcMgmtSetComTimeout()
enum : uint {
    RPC_C_BINDING_MIN_TIMEOUT      = 0,
    RPC_C_BINDING_DEFAULT_TIMEOUT  = 5,
    RPC_C_BINDING_MAX_TIMEOUT      = 9,
    RPC_C_BINDING_INFINITE_TIMEOUT = 10
}

enum RPC_C_CANCEL_INFINITE_TIMEOUT= -1;
enum RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234;
enum RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10;
enum RPC_C_BIND_TO_ALL_NICS=1;
enum RPC_C_USE_INTERNET_PORT=1;
enum RPC_C_USE_INTRANET_PORT=2;

// for RPC_STATS_VECTOR, used by RpcMgmyInqStats
enum : uint {
    RPC_C_STATS_CALLS_IN  = 0,
    RPC_C_STATS_CALLS_OUT,
    RPC_C_STATS_PKTS_IN,
    RPC_C_STATS_PKTS_OUT
}

enum RPC_IF_AUTOLISTEN=0x0001;
enum RPC_IF_OLE=2;
enum RPC_C_MGMT_INQ_IF_IDS=0;
enum RPC_C_MGMT_INQ_PRINC_NAME=1;
enum RPC_C_MGMT_INQ_STATS=2;
enum RPC_C_MGMT_IS_SERVER_LISTEN=3;
enum RPC_C_MGMT_STOP_SERVER_LISTEN=4;

// Inquiry Type for RpcMgmtEpEltInqBegin()
enum : uint {
    RPC_C_EP_ALL_ELTS = 0,
    RPC_C_EP_MATCH_BY_IF,
    RPC_C_EP_MATCH_BY_OBJ,
    RPC_C_EP_MATCH_BY_BOTH
}

// for RpcMgmtEpEltInqNext()
enum : uint {
    RPC_C_VERS_ALL = 1,
    RPC_C_VERS_COMPATIBLE,
    RPC_C_VERS_EXACT,
    RPC_C_VERS_MAJOR_ONLY,
    RPC_C_VERS_UPTO
}

enum DCE_C_ERROR_STRING_LEN=256;
enum RPC_C_PARM_MAX_PACKET_LENGTH=1;
enum RPC_C_PARM_BUFFER_LENGTH=2;
enum RPC_C_AUTHN_LEVEL_DEFAULT=0;
enum RPC_C_AUTHN_LEVEL_NONE=1;
enum RPC_C_AUTHN_LEVEL_CONNECT=2;
enum RPC_C_AUTHN_LEVEL_CALL=3;
enum RPC_C_AUTHN_LEVEL_PKT=4;
enum RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5;
enum RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6;
enum RPC_C_IMP_LEVEL_ANONYMOUS=1;
enum RPC_C_IMP_LEVEL_IDENTIFY=2;
enum RPC_C_IMP_LEVEL_IMPERSONATE=3;
enum RPC_C_IMP_LEVEL_DELEGATE=4;
enum RPC_C_QOS_IDENTITY_STATIC=0;
enum RPC_C_QOS_IDENTITY_DYNAMIC=1;
enum RPC_C_QOS_CAPABILITIES_DEFAULT=0;
enum RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1;

// These enums were buggy in MinGW !
enum RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT;
enum RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE;
enum RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT;
enum RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL;
enum RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT;
enum RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY;
enum RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY;

enum RPC_C_AUTHN_NONE=0;
enum RPC_C_AUTHN_DCE_PRIVATE=1;
enum RPC_C_AUTHN_DCE_PUBLIC=2;
enum RPC_C_AUTHN_DEC_PUBLIC=4;
enum RPC_C_AUTHN_WINNT=10;
enum RPC_C_AUTHN_DEFAULT=0xFFFFFFFF;
//const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense!
enum SEC_WINNT_AUTH_IDENTITY_ANSI=0x1;
enum SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2;
enum RPC_C_AUTHZ_NONE=0;
enum RPC_C_AUTHZ_NAME=1;
enum RPC_C_AUTHZ_DCE=2;
enum RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF;

alias I_RPC_HANDLE RPC_BINDING_HANDLE;
alias RPC_BINDING_HANDLE handle_t;

struct RPC_BINDING_VECTOR {
    uint Count;
    RPC_BINDING_HANDLE[1] BindingH;
}

alias RPC_BINDING_HANDLE rpc_binding_handle_t;
alias RPC_BINDING_VECTOR rpc_binding_vector_t;


struct UUID_VECTOR {
    uint Count;
    UUID*[1] Uuid;
}

alias void* RPC_IF_HANDLE;

struct RPC_IF_ID {
    UUID Uuid;
    ushort VersMajor;
    ushort VersMinor;
}

struct RPC_POLICY {
    uint Length;
    uint EndpointFlags;
    uint NICFlags;
}
alias RPC_POLICY* PRPC_POLICY;

extern (Windows) {
    alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN;
    alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN;
}

struct RPC_STATS_VECTOR {
    uint    Count;
    uint[1] Stats;
}

struct RPC_IF_ID_VECTOR {
    uint          Count;
    RPC_IF_ID*[1] IfId;
}
mixin DECLARE_HANDLE!("RPC_AUTH_IDENTITY_HANDLE");
mixin DECLARE_HANDLE!("RPC_AUTHZ_HANDLE");

struct RPC_SECURITY_QOS {
    uint Version;
    uint Capabilities;
    uint IdentityTracking;
    uint ImpersonationType;
}
alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS;

struct SEC_WINNT_AUTH_IDENTITY_W {
    ushort* User;
    uint UserLength;
    ushort* Domain;
    uint DomainLength;
    ushort* Password;
    uint PasswordLength;
    uint Flags;
}
alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W;

struct SEC_WINNT_AUTH_IDENTITY_A {
    ubyte* User;
    uint UserLength;
    ubyte* Domain;
    uint DomainLength;
    ubyte* Password;
    uint PasswordLength;
    uint Flags;
}
alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A;

struct RPC_CLIENT_INFORMATION1 {
    ubyte* UserName;
    ubyte* ComputerName;
    ushort Privilege;
    uint AuthFlags;
}
alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1;
alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE;
extern (Windows) {
    alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN;
}

struct RPC_PROTSEQ_VECTORA {
    uint Count;
    ubyte*[1] Protseq;
}

struct RPC_PROTSEQ_VECTORW {
    uint Count;
    ushort*[1] Protseq;
}

extern (Windows) {
    RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*);
    RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*);
    RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**);
    RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**);
    RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**);
    RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**);
    RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**);
    RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**);
    RPC_STATUS RpcStringFreeA(char**);
    RPC_STATUS RpcStringFreeW(wchar**);
    RPC_STATUS RpcNetworkIsProtseqValidA(char*);
    RPC_STATUS RpcNetworkIsProtseqValidW(wchar*);
    RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**);
    RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**);
    RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**);
    RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**);
    RPC_STATUS RpcServerUseProtseqA(char*, uint, void*);
    RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*);
    RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY);
    RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY);
    RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*);
    RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY);
    RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*);
    RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY);
    RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*);
    RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY);
    RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*);
    RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY);
    RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**);
    RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**);
    RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**);
    RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**);
    RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**);
    RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**);
    RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*);
    RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*);
    RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*);
    RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*);
    RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint);
    RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*);
    RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint);
    RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*);
    RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*);
    RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*);
    alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN;
    RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*);
    RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*);
    RPC_STATUS UuidToStringA(UUID*, char**);
    RPC_STATUS UuidFromStringA(char*, UUID*);
    RPC_STATUS UuidToStringW(UUID*, wchar**);
    RPC_STATUS UuidFromStringW(wchar*, UUID*);
    RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*);
    RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*);
    RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*);
    RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*);
    RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*);
    RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*);
    RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**);
    RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**);

    // MinGW erroneously had these in rpc.h
    RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE);
    RPC_STATUS RpcRevertToSelf();
}

version (Unicode) {
    alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR;
    alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY;
    alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY;
    alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext;
    alias RpcBindingFromStringBindingW RpcBindingFromStringBinding;
    alias RpcBindingToStringBindingW RpcBindingToStringBinding;
    alias RpcStringBindingComposeW RpcStringBindingCompose;
    alias RpcStringBindingParseW RpcStringBindingParse;
    alias RpcStringFreeW RpcStringFree;
    alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid;
    alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs;
    alias RpcProtseqVectorFreeW RpcProtseqVectorFree;
    alias RpcServerUseProtseqW RpcServerUseProtseq;
    alias RpcServerUseProtseqExW RpcServerUseProtseqEx;
    alias RpcServerUseProtseqEpW RpcServerUseProtseqEp;
    alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx;
    alias RpcServerUseProtseqIfW RpcServerUseProtseqIf;
    alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx;
    alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName;
    alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName;
    alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName;
    alias RpcBindingInqAuthClientW RpcBindingInqAuthClient;
    alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo;
    alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo;
    alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo;
    alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx;
    alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx;
    alias UuidFromStringW UuidFromString;
    alias UuidToStringW UuidToString;
    alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace;
    alias RpcEpRegisterW RpcEpRegister;
    alias DceErrorInqTextW DceErrorInqText;
} else { // Ansi
    alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR;
    alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY;
    alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY;
    alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext;
    alias RpcBindingFromStringBindingA RpcBindingFromStringBinding;
    alias RpcBindingToStringBindingA RpcBindingToStringBinding;
    alias RpcStringBindingComposeA RpcStringBindingCompose;
    alias RpcStringBindingParseA RpcStringBindingParse;
    alias RpcStringFreeA RpcStringFree;
    alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid;
    alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs;
    alias RpcProtseqVectorFreeA RpcProtseqVectorFree;
    alias RpcServerUseProtseqA RpcServerUseProtseq;
    alias RpcServerUseProtseqExA RpcServerUseProtseqEx;
    alias RpcServerUseProtseqEpA RpcServerUseProtseqEp;
    alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx;
    alias RpcServerUseProtseqIfA RpcServerUseProtseqIf;
    alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx;
    alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName;
    alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName;
    alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName;
    alias RpcBindingInqAuthClientA RpcBindingInqAuthClient;
    alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo;
    alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo;
    alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo;
    alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx;
    alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx;
    alias UuidFromStringA UuidFromString;
    alias UuidToStringA UuidToString;
    alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace;
    alias RpcEpRegisterA RpcEpRegister;
    alias DceErrorInqTextA DceErrorInqText;
} //#endif // UNICODE

extern (Windows) {
    RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*);
    RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*);
    RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*);
    RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE);
    RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*);
    RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*);
    RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**);
    RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*);
    RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*);
    RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint);
    RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout);
    RPC_STATUS RpcObjectInqType(UUID*, UUID*);
    RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*);
    RPC_STATUS RpcObjectSetType(UUID*, UUID*);
    RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**);
    RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**);
    RPC_STATUS RpcServerListen(uint, uint, uint);
    RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*);
    RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*);
    RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*);
    RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint);
    RPC_STATUS RpcServerUseAllProtseqs(uint, void*);
    RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY);
    RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*);
    RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY);
    RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**);
    RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**);
    RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE);
    RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE);
    RPC_STATUS RpcMgmtWaitServerListen();
    RPC_STATUS RpcMgmtSetServerStackSize(uint);
    void RpcSsDontSerializeContext();
    RPC_STATUS RpcMgmtEnableIdleCleanup();
    RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**);
    RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**);
    RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE);
    RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*);

    // never returns
    void RpcRaiseException(RPC_STATUS);
    RPC_STATUS RpcTestCancel();
    RPC_STATUS RpcCancelThread(void*);
    RPC_STATUS UuidCreate(UUID*);
    int UuidCompare(UUID*, UUID*, RPC_STATUS*);
    RPC_STATUS UuidCreateNil(UUID*);
    int UuidEqual(UUID*, UUID*, RPC_STATUS*);
    ushort UuidHash(UUID*, RPC_STATUS*);
    int UuidIsNil(UUID*, RPC_STATUS*);
    RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*);
    RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*);
    RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*);
    RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*);
    RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
    RPC_STATUS RpcMgmtInqParameter(uint, uint*);
    RPC_STATUS RpcMgmtSetParameter(uint, uint);
    RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*);
    RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint);

//static if (_WIN32_WINNT >= 0x500) {
    RPC_STATUS UuidCreateSequential(UUID*);
//}
}