FreeRDP
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
winpr/include/winpr/rpc.h
1
20#ifndef WINPR_RPC_H
21#define WINPR_RPC_H
22
23#include <winpr/wtypes.h>
24
25typedef struct
26{
27 UINT32 ContextType;
28 GUID ContextUuid;
30
31typedef PCONTEXT_HANDLE PTUNNEL_CONTEXT_HANDLE_NOSERIALIZE;
32typedef PCONTEXT_HANDLE PTUNNEL_CONTEXT_HANDLE_SERIALIZE;
33
34typedef PCONTEXT_HANDLE PCHANNEL_CONTEXT_HANDLE_NOSERIALIZE;
35typedef PCONTEXT_HANDLE PCHANNEL_CONTEXT_HANDLE_SERIALIZE;
36
37#if defined(_WIN32) && !defined(_UWP)
38
39#include <rpc.h>
40
41#else
42
43#include <winpr/winpr.h>
44#include <winpr/wtypes.h>
45#include <winpr/sspi.h>
46#include <winpr/spec.h>
47#include <winpr/error.h>
48
49#define RPC_S_OK ERROR_SUCCESS
50#define RPC_S_INVALID_ARG ERROR_INVALID_PARAMETER
51#define RPC_S_OUT_OF_MEMORY ERROR_OUTOFMEMORY
52#define RPC_S_OUT_OF_THREADS ERROR_MAX_THRDS_REACHED
53#define RPC_S_INVALID_LEVEL ERROR_INVALID_PARAMETER
54#define RPC_S_BUFFER_TOO_SMALL ERROR_INSUFFICIENT_BUFFER
55#define RPC_S_INVALID_SECURITY_DESC ERROR_INVALID_SECURITY_DESCR
56#define RPC_S_ACCESS_DENIED ERROR_ACCESS_DENIED
57#define RPC_S_SERVER_OUT_OF_MEMORY ERROR_NOT_ENOUGH_SERVER_MEMORY
58#define RPC_S_ASYNC_CALL_PENDING ERROR_IO_PENDING
59#define RPC_S_UNKNOWN_PRINCIPAL ERROR_NONE_MAPPED
60#define RPC_S_TIMEOUT ERROR_TIMEOUT
61
62#define RPC_X_NO_MEMORY RPC_S_OUT_OF_MEMORY
63#define RPC_X_INVALID_BOUND RPC_S_INVALID_BOUND
64#define RPC_X_INVALID_TAG RPC_S_INVALID_TAG
65#define RPC_X_ENUM_VALUE_TOO_LARGE RPC_X_ENUM_VALUE_OUT_OF_RANGE
66#define RPC_X_SS_CONTEXT_MISMATCH ERROR_INVALID_HANDLE
67#define RPC_X_INVALID_BUFFER ERROR_INVALID_USER_BUFFER
68#define RPC_X_PIPE_APP_MEMORY ERROR_OUTOFMEMORY
69#define RPC_X_INVALID_PIPE_OPERATION RPC_X_WRONG_PIPE_ORDER
70
71#define RPC_VAR_ENTRY __cdecl
72
73typedef long RPC_STATUS;
74
75#ifndef _WIN32
76typedef CHAR* RPC_CSTR;
77typedef WCHAR* RPC_WSTR;
78#endif
79
80typedef void* I_RPC_HANDLE;
81typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
82typedef RPC_BINDING_HANDLE handle_t;
83
84typedef struct
85{
86 unsigned long Count;
87 RPC_BINDING_HANDLE BindingH[1];
89#define rpc_binding_vector_t RPC_BINDING_VECTOR
90
91typedef struct
92{
93 unsigned long Count;
94 UUID* Uuid[1];
96#define uuid_vector_t UUID_VECTOR
97
98typedef void* RPC_IF_HANDLE;
99
100typedef struct
101{
102 UUID Uuid;
103 unsigned short VersMajor;
104 unsigned short VersMinor;
105} RPC_IF_ID;
106
107#define RPC_C_BINDING_INFINITE_TIMEOUT 10
108#define RPC_C_BINDING_MIN_TIMEOUT 0
109#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
110#define RPC_C_BINDING_MAX_TIMEOUT 9
111
112#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
113
114#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
115#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
116
117#define RPC_C_BIND_TO_ALL_NICS 1
118#define RPC_C_USE_INTERNET_PORT 0x1
119#define RPC_C_USE_INTRANET_PORT 0x2
120#define RPC_C_DONT_FAIL 0x4
121
122#define RPC_C_MQ_TEMPORARY 0x0000
123#define RPC_C_MQ_PERMANENT 0x0001
124#define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
125#define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
126#define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
127#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
128#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
129
130#define RPC_C_OPT_MQ_DELIVERY 1
131#define RPC_C_OPT_MQ_PRIORITY 2
132#define RPC_C_OPT_MQ_JOURNAL 3
133#define RPC_C_OPT_MQ_ACKNOWLEDGE 4
134#define RPC_C_OPT_MQ_AUTHN_SERVICE 5
135#define RPC_C_OPT_MQ_AUTHN_LEVEL 6
136#define RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE 7
137#define RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED 8
138#define RPC_C_OPT_BINDING_NONCAUSAL 9
139#define RPC_C_OPT_SECURITY_CALLBACK 10
140#define RPC_C_OPT_UNIQUE_BINDING 11
141#define RPC_C_OPT_CALL_TIMEOUT 12
142#define RPC_C_OPT_DONT_LINGER 13
143#define RPC_C_OPT_MAX_OPTIONS 14
144
145#define RPC_C_MQ_EXPRESS 0
146#define RPC_C_MQ_RECOVERABLE 1
147
148#define RPC_C_MQ_JOURNAL_NONE 0
149#define RPC_C_MQ_JOURNAL_DEADLETTER 1
150#define RPC_C_MQ_JOURNAL_ALWAYS 2
151
152#define RPC_C_FULL_CERT_CHAIN 0x0001
153
154typedef struct
155{
156 unsigned int Count;
157 unsigned char* Protseq[1];
159
160typedef struct
161{
162 unsigned int Count;
163 unsigned short* Protseq[1];
165
166#ifdef UNICODE
167#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
168#else
169#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
170#endif
171
172typedef struct
173{
174 unsigned int Length;
175 unsigned long EndpointFlags;
176 unsigned long NICFlags;
178
179typedef void RPC_OBJECT_INQ_FN(UUID* ObjectUuid, UUID* TypeUuid, RPC_STATUS* pStatus);
180typedef RPC_STATUS RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid, void* Context);
181typedef void RPC_SECURITY_CALLBACK_FN(void* Context);
182
183#define RPC_MGR_EPV void
184
185typedef struct
186{
187 unsigned int Count;
188 unsigned long Stats[1];
190
191#define RPC_C_STATS_CALLS_IN 0
192#define RPC_C_STATS_CALLS_OUT 1
193#define RPC_C_STATS_PKTS_IN 2
194#define RPC_C_STATS_PKTS_OUT 3
195
196typedef struct
197{
198 unsigned long Count;
199 RPC_IF_ID* IfId[1];
201
202#ifndef _WIN32
203
204typedef void* RPC_AUTH_IDENTITY_HANDLE;
205typedef void* RPC_AUTHZ_HANDLE;
206
207#define RPC_C_AUTHN_LEVEL_DEFAULT 0
208#define RPC_C_AUTHN_LEVEL_NONE 1
209#define RPC_C_AUTHN_LEVEL_CONNECT 2
210#define RPC_C_AUTHN_LEVEL_CALL 3
211#define RPC_C_AUTHN_LEVEL_PKT 4
212#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
213#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
214
215#define RPC_C_IMP_LEVEL_DEFAULT 0
216#define RPC_C_IMP_LEVEL_ANONYMOUS 1
217#define RPC_C_IMP_LEVEL_IDENTIFY 2
218#define RPC_C_IMP_LEVEL_IMPERSONATE 3
219#define RPC_C_IMP_LEVEL_DELEGATE 4
220
221#define RPC_C_QOS_IDENTITY_STATIC 0
222#define RPC_C_QOS_IDENTITY_DYNAMIC 1
223
224#define RPC_C_QOS_CAPABILITIES_DEFAULT 0x0
225#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 0x1
226#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC 0x2
227#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 0x4
228#define RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE 0x8
229#define RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT 0x10
230
231#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
232#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
233#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
234#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
235#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
236#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
237#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
238
239#define RPC_C_AUTHN_NONE 0
240#define RPC_C_AUTHN_DCE_PRIVATE 1
241#define RPC_C_AUTHN_DCE_PUBLIC 2
242#define RPC_C_AUTHN_DEC_PUBLIC 4
243#define RPC_C_AUTHN_GSS_NEGOTIATE 9
244#define RPC_C_AUTHN_WINNT 10
245#define RPC_C_AUTHN_GSS_SCHANNEL 14
246#define RPC_C_AUTHN_GSS_KERBEROS 16
247#define RPC_C_AUTHN_DPA 17
248#define RPC_C_AUTHN_MSN 18
249#define RPC_C_AUTHN_DIGEST 21
250#define RPC_C_AUTHN_MQ 100
251#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
252
253#define RPC_C_NO_CREDENTIALS ((RPC_AUTH_IDENTITY_HANDLE)MAXUINT_PTR)
254
255#define RPC_C_SECURITY_QOS_VERSION 1L
256#define RPC_C_SECURITY_QOS_VERSION_1 1L
257
258typedef struct
259{
260 unsigned long Version;
261 unsigned long Capabilities;
262 unsigned long IdentityTracking;
263 unsigned long ImpersonationType;
265
266#define RPC_C_SECURITY_QOS_VERSION_2 2L
267
268#define RPC_C_AUTHN_INFO_TYPE_HTTP 1
269
270#define RPC_C_HTTP_AUTHN_TARGET_SERVER 1
271#define RPC_C_HTTP_AUTHN_TARGET_PROXY 2
272
273#define RPC_C_HTTP_AUTHN_SCHEME_BASIC 0x00000001
274#define RPC_C_HTTP_AUTHN_SCHEME_NTLM 0x00000002
275#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT 0x00000004
276#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST 0x00000008
277#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x00000010
278#define RPC_C_HTTP_AUTHN_SCHEME_CERT 0x00010000
279
280#define RPC_C_HTTP_FLAG_USE_SSL 1
281#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 2
282#define RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID 8
283
284typedef struct
285{
286 SEC_WINNT_AUTH_IDENTITY_W* TransportCredentials;
287 unsigned long Flags;
288 unsigned long AuthenticationTarget;
289 unsigned long NumberOfAuthnSchemes;
290 unsigned long* AuthnSchemes;
291 unsigned short* ServerCertificateSubject;
293
294typedef struct
295{
296 SEC_WINNT_AUTH_IDENTITY_A* TransportCredentials;
297 unsigned long Flags;
298 unsigned long AuthenticationTarget;
299 unsigned long NumberOfAuthnSchemes;
300 unsigned long* AuthnSchemes;
301 unsigned char* ServerCertificateSubject;
303
304typedef struct
305{
306 unsigned long Version;
307 unsigned long Capabilities;
308 unsigned long IdentityTracking;
309 unsigned long ImpersonationType;
310 unsigned long AdditionalSecurityInfoType;
311 union
312 {
313 RPC_HTTP_TRANSPORT_CREDENTIALS_W* HttpCredentials;
314 } u;
316
317typedef struct
318{
319 unsigned long Version;
320 unsigned long Capabilities;
321 unsigned long IdentityTracking;
322 unsigned long ImpersonationType;
323 unsigned long AdditionalSecurityInfoType;
324 union
325 {
326 RPC_HTTP_TRANSPORT_CREDENTIALS_A* HttpCredentials;
327 } u;
329
330#define RPC_C_SECURITY_QOS_VERSION_3 3L
331
332typedef struct
333{
334 unsigned long Version;
335 unsigned long Capabilities;
336 unsigned long IdentityTracking;
337 unsigned long ImpersonationType;
338 unsigned long AdditionalSecurityInfoType;
339 union
340 {
341 RPC_HTTP_TRANSPORT_CREDENTIALS_W* HttpCredentials;
342 } u;
343 void* Sid;
345
346typedef struct
347{
348 unsigned long Version;
349 unsigned long Capabilities;
350 unsigned long IdentityTracking;
351 unsigned long ImpersonationType;
352 unsigned long AdditionalSecurityInfoType;
353 union
354 {
355 RPC_HTTP_TRANSPORT_CREDENTIALS_A* HttpCredentials;
356 } u;
357 void* Sid;
359
360typedef enum
361{
362 RPCHTTP_RS_REDIRECT = 1,
363 RPCHTTP_RS_ACCESS_1,
364 RPCHTTP_RS_SESSION,
365 RPCHTTP_RS_ACCESS_2,
366 RPCHTTP_RS_INTERFACE
367} RPC_HTTP_REDIRECTOR_STAGE;
368
369typedef RPC_STATUS (*RPC_NEW_HTTP_PROXY_CHANNEL)(
370 RPC_HTTP_REDIRECTOR_STAGE RedirectorStage, unsigned short* ServerName,
371 unsigned short* ServerPort, unsigned short* RemoteUser, unsigned short* AuthType,
372 void* ResourceUuid, void* Metadata, void* SessionId, void* Interface, void* Reserved,
373 unsigned long Flags, unsigned short** NewServerName, unsigned short** NewServerPort);
374
375typedef void (*RPC_HTTP_PROXY_FREE_STRING)(unsigned short* String);
376
377#define RPC_C_AUTHZ_NONE 0
378#define RPC_C_AUTHZ_NAME 1
379#define RPC_C_AUTHZ_DCE 2
380#define RPC_C_AUTHZ_DEFAULT 0xFFFFFFFF
381
382#endif
383
384typedef void (*RPC_AUTH_KEY_RETRIEVAL_FN)(void* Arg, unsigned short* ServerPrincName,
385 unsigned long KeyVer, void** Key, RPC_STATUS* pStatus);
386
387#define DCE_C_ERROR_STRING_LEN 256
388
389typedef I_RPC_HANDLE* RPC_EP_INQ_HANDLE;
390
391#define RPC_C_EP_ALL_ELTS 0
392#define RPC_C_EP_MATCH_BY_IF 1
393#define RPC_C_EP_MATCH_BY_OBJ 2
394#define RPC_C_EP_MATCH_BY_BOTH 3
395
396#define RPC_C_VERS_ALL 1
397#define RPC_C_VERS_COMPATIBLE 2
398#define RPC_C_VERS_EXACT 3
399#define RPC_C_VERS_MAJOR_ONLY 4
400#define RPC_C_VERS_UPTO 5
401
402typedef int (*RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE ClientBinding,
403 unsigned long RequestedMgmtOperation, RPC_STATUS* pStatus);
404
405#define RPC_C_MGMT_INQ_IF_IDS 0
406#define RPC_C_MGMT_INQ_PRINC_NAME 1
407#define RPC_C_MGMT_INQ_STATS 2
408#define RPC_C_MGMT_IS_SERVER_LISTEN 3
409#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
410
411#define RPC_C_PARM_MAX_PACKET_LENGTH 1
412#define RPC_C_PARM_BUFFER_LENGTH 2
413
414#define RPC_IF_AUTOLISTEN 0x0001
415#define RPC_IF_OLE 0x0002
416#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004
417#define RPC_IF_ALLOW_SECURE_ONLY 0x0008
418#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010
419#define RPC_IF_ALLOW_LOCAL_ONLY 0x0020
420#define RPC_IF_SEC_NO_CACHE 0x0040
421
422typedef struct
423{
424 unsigned long Version;
425 unsigned long Flags;
426 unsigned long ComTimeout;
427 unsigned long CallTimeout;
429
430typedef struct
431{
432 unsigned long Version;
433 unsigned short* ServerPrincName;
434 unsigned long AuthnLevel;
435 unsigned long AuthnSvc;
436 SEC_WINNT_AUTH_IDENTITY* AuthIdentity;
437 RPC_SECURITY_QOS* SecurityQos;
439
440typedef struct
441{
442 unsigned long Version;
443 unsigned long Flags;
444 unsigned long ProtocolSequence;
445 unsigned short* NetworkAddress;
446 unsigned short* StringEndpoint;
447 union
448 {
449 unsigned short* Reserved;
450 } u1;
451 UUID ObjectUuid;
453
454#define RPC_CALL_STATUS_IN_PROGRESS 0x01
455#define RPC_CALL_STATUS_CANCELLED 0x02
456#define RPC_CALL_STATUS_DISCONNECTED 0x03
457
458#ifdef __cplusplus
459extern "C"
460{
461#endif
462
463 WINPR_API RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding,
464 RPC_BINDING_HANDLE* DestinationBinding);
465 WINPR_API RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE* Binding);
466 WINPR_API RPC_STATUS RpcBindingSetOption(RPC_BINDING_HANDLE hBinding, unsigned long option,
467 ULONG_PTR optionValue);
468 WINPR_API RPC_STATUS RpcBindingInqOption(RPC_BINDING_HANDLE hBinding, unsigned long option,
469 ULONG_PTR* pOptionValue);
470 WINPR_API RPC_STATUS RpcBindingFromStringBindingA(RPC_CSTR StringBinding,
471 RPC_BINDING_HANDLE* Binding);
472 WINPR_API RPC_STATUS RpcBindingFromStringBindingW(RPC_WSTR StringBinding,
473 RPC_BINDING_HANDLE* Binding);
474 WINPR_API RPC_STATUS RpcSsGetContextBinding(void* ContextHandle, RPC_BINDING_HANDLE* Binding);
475 WINPR_API RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE Binding, UUID* ObjectUuid);
476 WINPR_API RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE Binding);
477 WINPR_API RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE Binding, UUID* ObjectUuid);
478 WINPR_API RPC_STATUS RpcMgmtInqDefaultProtectLevel(unsigned long AuthnSvc,
479 unsigned long* AuthnLevel);
480 WINPR_API RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE Binding,
481 RPC_CSTR* StringBinding);
482 WINPR_API RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE Binding,
483 RPC_WSTR* StringBinding);
484 WINPR_API RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR** BindingVector);
485 WINPR_API RPC_STATUS RpcStringBindingComposeA(RPC_CSTR ObjUuid, RPC_CSTR Protseq,
486 RPC_CSTR NetworkAddr, RPC_CSTR Endpoint,
487 RPC_CSTR Options, RPC_CSTR* StringBinding);
488 WINPR_API RPC_STATUS RpcStringBindingComposeW(RPC_WSTR ObjUuid, RPC_WSTR Protseq,
489 RPC_WSTR NetworkAddr, RPC_WSTR Endpoint,
490 RPC_WSTR Options, RPC_WSTR* StringBinding);
491 WINPR_API RPC_STATUS RpcStringBindingParseA(RPC_CSTR StringBinding, RPC_CSTR* ObjUuid,
492 RPC_CSTR* Protseq, RPC_CSTR* NetworkAddr,
493 RPC_CSTR* Endpoint, RPC_CSTR* NetworkOptions);
494 WINPR_API RPC_STATUS RpcStringBindingParseW(RPC_WSTR StringBinding, RPC_WSTR* ObjUuid,
495 RPC_WSTR* Protseq, RPC_WSTR* NetworkAddr,
496 RPC_WSTR* Endpoint, RPC_WSTR* NetworkOptions);
497 WINPR_API RPC_STATUS RpcStringFreeA(RPC_CSTR* String);
498 WINPR_API RPC_STATUS RpcStringFreeW(RPC_WSTR* String);
499 WINPR_API RPC_STATUS RpcIfInqId(RPC_IF_HANDLE RpcIfHandle, RPC_IF_ID* RpcIfId);
500 WINPR_API RPC_STATUS RpcNetworkIsProtseqValidA(RPC_CSTR Protseq);
501 WINPR_API RPC_STATUS RpcNetworkIsProtseqValidW(RPC_WSTR Protseq);
502 WINPR_API RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE Binding, unsigned int* Timeout);
503 WINPR_API RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE Binding, unsigned int Timeout);
504 WINPR_API RPC_STATUS RpcMgmtSetCancelTimeout(long Timeout);
505 WINPR_API RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA** ProtseqVector);
506 WINPR_API RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW** ProtseqVector);
507 WINPR_API RPC_STATUS RpcObjectInqType(UUID* ObjUuid, UUID* TypeUuid);
508 WINPR_API RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN* InquiryFn);
509 WINPR_API RPC_STATUS RpcObjectSetType(UUID* ObjUuid, UUID* TypeUuid);
510 WINPR_API RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA** ProtseqVector);
511 WINPR_API RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW** ProtseqVector);
512 WINPR_API RPC_STATUS RpcServerInqBindings(RPC_BINDING_VECTOR** BindingVector);
513 WINPR_API RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
514 RPC_MGR_EPV** MgrEpv);
515 WINPR_API RPC_STATUS RpcServerListen(unsigned int MinimumCallThreads, unsigned int MaxCalls,
516 unsigned int DontWait);
517 WINPR_API RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
518 RPC_MGR_EPV* MgrEpv);
519 WINPR_API RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
520 RPC_MGR_EPV* MgrEpv, unsigned int Flags,
521 unsigned int MaxCalls,
522 RPC_IF_CALLBACK_FN* IfCallback);
523 WINPR_API RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
524 RPC_MGR_EPV* MgrEpv, unsigned int Flags,
525 unsigned int MaxCalls, unsigned int MaxRpcSize,
526 RPC_IF_CALLBACK_FN* IfCallbackFn);
527 WINPR_API RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
528 unsigned int WaitForCallsToComplete);
529 WINPR_API RPC_STATUS RpcServerUnregisterIfEx(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
530 int RundownContextHandles);
531 WINPR_API RPC_STATUS RpcServerUseAllProtseqs(unsigned int MaxCalls, void* SecurityDescriptor);
532 WINPR_API RPC_STATUS RpcServerUseAllProtseqsEx(unsigned int MaxCalls, void* SecurityDescriptor,
533 PRPC_POLICY Policy);
534 WINPR_API RPC_STATUS RpcServerUseAllProtseqsIf(unsigned int MaxCalls, RPC_IF_HANDLE IfSpec,
535 void* SecurityDescriptor);
536 WINPR_API RPC_STATUS RpcServerUseAllProtseqsIfEx(unsigned int MaxCalls, RPC_IF_HANDLE IfSpec,
537 void* SecurityDescriptor, PRPC_POLICY Policy);
538 WINPR_API RPC_STATUS RpcServerUseProtseqA(RPC_CSTR Protseq, unsigned int MaxCalls,
539 void* SecurityDescriptor);
540 WINPR_API RPC_STATUS RpcServerUseProtseqExA(RPC_CSTR Protseq, unsigned int MaxCalls,
541 void* SecurityDescriptor, PRPC_POLICY Policy);
542 WINPR_API RPC_STATUS RpcServerUseProtseqW(RPC_WSTR Protseq, unsigned int MaxCalls,
543 void* SecurityDescriptor);
544 WINPR_API RPC_STATUS RpcServerUseProtseqExW(RPC_WSTR Protseq, unsigned int MaxCalls,
545 void* SecurityDescriptor, PRPC_POLICY Policy);
546 WINPR_API RPC_STATUS RpcServerUseProtseqEpA(RPC_CSTR Protseq, unsigned int MaxCalls,
547 RPC_CSTR Endpoint, void* SecurityDescriptor);
548 WINPR_API RPC_STATUS RpcServerUseProtseqEpExA(RPC_CSTR Protseq, unsigned int MaxCalls,
549 RPC_CSTR Endpoint, void* SecurityDescriptor,
550 PRPC_POLICY Policy);
551 WINPR_API RPC_STATUS RpcServerUseProtseqEpW(RPC_WSTR Protseq, unsigned int MaxCalls,
552 RPC_WSTR Endpoint, void* SecurityDescriptor);
553 WINPR_API RPC_STATUS RpcServerUseProtseqEpExW(RPC_WSTR Protseq, unsigned int MaxCalls,
554 RPC_WSTR Endpoint, void* SecurityDescriptor,
555 PRPC_POLICY Policy);
556 WINPR_API RPC_STATUS RpcServerUseProtseqIfA(RPC_CSTR Protseq, unsigned int MaxCalls,
557 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor);
558 WINPR_API RPC_STATUS RpcServerUseProtseqIfExA(RPC_CSTR Protseq, unsigned int MaxCalls,
559 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor,
560 PRPC_POLICY Policy);
561 WINPR_API RPC_STATUS RpcServerUseProtseqIfW(RPC_WSTR Protseq, unsigned int MaxCalls,
562 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor);
563 WINPR_API RPC_STATUS RpcServerUseProtseqIfExW(RPC_WSTR Protseq, unsigned int MaxCalls,
564 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor,
565 PRPC_POLICY Policy);
566 WINPR_API void RpcServerYield(void);
567 WINPR_API RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR** StatsVector);
568 WINPR_API RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE Binding, RPC_STATS_VECTOR** Statistics);
569 WINPR_API RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding);
570 WINPR_API RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE Binding);
571 WINPR_API RPC_STATUS RpcMgmtWaitServerListen(void);
572 WINPR_API RPC_STATUS RpcMgmtSetServerStackSize(unsigned long ThreadStackSize);
573 WINPR_API void RpcSsDontSerializeContext(void);
574 WINPR_API RPC_STATUS RpcMgmtEnableIdleCleanup(void);
575 WINPR_API RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR** IfIdVector);
576 WINPR_API RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR** IfIdVector);
577 WINPR_API RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE Binding,
578 unsigned long AuthnSvc,
579 RPC_CSTR* ServerPrincName);
580 WINPR_API RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE Binding,
581 unsigned long AuthnSvc,
582 RPC_WSTR* ServerPrincName);
583 WINPR_API RPC_STATUS RpcServerInqDefaultPrincNameA(unsigned long AuthnSvc, RPC_CSTR* PrincName);
584 WINPR_API RPC_STATUS RpcServerInqDefaultPrincNameW(unsigned long AuthnSvc, RPC_WSTR* PrincName);
585 WINPR_API RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec);
586 WINPR_API RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE Binding,
587 unsigned long EntryNameSyntax,
588 RPC_CSTR* EntryName);
589 WINPR_API RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE Binding,
590 unsigned long EntryNameSyntax,
591 RPC_WSTR* EntryName);
592
593 WINPR_API RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE BindingHandle);
594 WINPR_API RPC_STATUS RpcRevertToSelfEx(RPC_BINDING_HANDLE BindingHandle);
595 WINPR_API RPC_STATUS RpcRevertToSelf(void);
596 WINPR_API RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE ClientBinding,
597 RPC_AUTHZ_HANDLE* Privs,
598 RPC_CSTR* ServerPrincName,
599 unsigned long* AuthnLevel,
600 unsigned long* AuthnSvc, unsigned long* AuthzSvc);
601 WINPR_API RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE ClientBinding,
602 RPC_AUTHZ_HANDLE* Privs,
603 RPC_WSTR* ServerPrincName,
604 unsigned long* AuthnLevel,
605 unsigned long* AuthnSvc, unsigned long* AuthzSvc);
606 WINPR_API RPC_STATUS RpcBindingInqAuthClientExA(RPC_BINDING_HANDLE ClientBinding,
607 RPC_AUTHZ_HANDLE* Privs,
608 RPC_CSTR* ServerPrincName,
609 unsigned long* AuthnLevel,
610 unsigned long* AuthnSvc,
611 unsigned long* AuthzSvc, unsigned long Flags);
612 WINPR_API RPC_STATUS RpcBindingInqAuthClientExW(RPC_BINDING_HANDLE ClientBinding,
613 RPC_AUTHZ_HANDLE* Privs,
614 RPC_WSTR* ServerPrincName,
615 unsigned long* AuthnLevel,
616 unsigned long* AuthnSvc,
617 unsigned long* AuthzSvc, unsigned long Flags);
618 WINPR_API RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE Binding,
619 RPC_CSTR* ServerPrincName,
620 unsigned long* AuthnLevel, unsigned long* AuthnSvc,
621 RPC_AUTH_IDENTITY_HANDLE* AuthIdentity,
622 unsigned long* AuthzSvc);
623 WINPR_API RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE Binding,
624 RPC_WSTR* ServerPrincName,
625 unsigned long* AuthnLevel, unsigned long* AuthnSvc,
626 RPC_AUTH_IDENTITY_HANDLE* AuthIdentity,
627 unsigned long* AuthzSvc);
628 WINPR_API RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE Binding,
629 RPC_CSTR ServerPrincName, unsigned long AuthnLevel,
630 unsigned long AuthnSvc,
631 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
632 unsigned long AuthzSvc);
633 WINPR_API RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE Binding,
634 RPC_CSTR ServerPrincName,
635 unsigned long AuthnLevel, unsigned long AuthnSvc,
636 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
637 unsigned long AuthzSvc,
638 RPC_SECURITY_QOS* SecurityQos);
639 WINPR_API RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE Binding,
640 RPC_WSTR ServerPrincName, unsigned long AuthnLevel,
641 unsigned long AuthnSvc,
642 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
643 unsigned long AuthzSvc);
644 WINPR_API RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE Binding,
645 RPC_WSTR ServerPrincName,
646 unsigned long AuthnLevel, unsigned long AuthnSvc,
647 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
648 unsigned long AuthzSvc,
649 RPC_SECURITY_QOS* SecurityQOS);
650 WINPR_API RPC_STATUS RpcBindingInqAuthInfoExA(
651 RPC_BINDING_HANDLE Binding, RPC_CSTR* ServerPrincName, unsigned long* AuthnLevel,
652 unsigned long* AuthnSvc, RPC_AUTH_IDENTITY_HANDLE* AuthIdentity, unsigned long* AuthzSvc,
653 unsigned long RpcQosVersion, RPC_SECURITY_QOS* SecurityQOS);
654 WINPR_API RPC_STATUS RpcBindingInqAuthInfoExW(
655 RPC_BINDING_HANDLE Binding, RPC_WSTR* ServerPrincName, unsigned long* AuthnLevel,
656 unsigned long* AuthnSvc, RPC_AUTH_IDENTITY_HANDLE* AuthIdentity, unsigned long* AuthzSvc,
657 unsigned long RpcQosVersion, RPC_SECURITY_QOS* SecurityQOS);
658
659 WINPR_API RPC_STATUS RpcServerRegisterAuthInfoA(RPC_CSTR ServerPrincName,
660 unsigned long AuthnSvc,
661 RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, void* Arg);
662 WINPR_API RPC_STATUS RpcServerRegisterAuthInfoW(RPC_WSTR ServerPrincName,
663 unsigned long AuthnSvc,
664 RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, void* Arg);
665
666 WINPR_API RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE ClientBinding,
667 RPC_BINDING_HANDLE* ServerBinding);
668 WINPR_API DECLSPEC_NORETURN void RpcRaiseException(RPC_STATUS exception);
669 WINPR_API RPC_STATUS RpcTestCancel(void);
670 WINPR_API RPC_STATUS RpcServerTestCancel(RPC_BINDING_HANDLE BindingHandle);
671 WINPR_API RPC_STATUS RpcCancelThread(void* Thread);
672 WINPR_API RPC_STATUS RpcCancelThreadEx(void* Thread, long Timeout);
673
674 WINPR_API RPC_STATUS UuidCreate(UUID* Uuid);
675 WINPR_API RPC_STATUS UuidCreateSequential(UUID* Uuid);
676 WINPR_API RPC_STATUS UuidToStringA(const UUID* Uuid, RPC_CSTR* StringUuid);
677 WINPR_API RPC_STATUS UuidFromStringA(RPC_CSTR StringUuid, UUID* Uuid);
678 WINPR_API RPC_STATUS UuidToStringW(const UUID* Uuid, RPC_WSTR* StringUuid);
679 WINPR_API RPC_STATUS UuidFromStringW(RPC_WSTR StringUuid, UUID* Uuid);
680 WINPR_API signed int UuidCompare(const UUID* Uuid1, const UUID* Uuid2, RPC_STATUS* Status);
681 WINPR_API RPC_STATUS UuidCreateNil(UUID* NilUuid);
682 WINPR_API int UuidEqual(const UUID* Uuid1, const UUID* Uuid2, RPC_STATUS* Status);
683 WINPR_API unsigned short UuidHash(const UUID* Uuid, RPC_STATUS* Status);
684 WINPR_API int UuidIsNil(const UUID* Uuid, RPC_STATUS* Status);
685
686 WINPR_API RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE IfSpec,
687 RPC_BINDING_VECTOR* BindingVector,
688 UUID_VECTOR* UuidVector, RPC_CSTR Annotation);
689 WINPR_API RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE IfSpec,
690 RPC_BINDING_VECTOR* BindingVector,
691 UUID_VECTOR* UuidVector, RPC_WSTR Annotation);
692 WINPR_API RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
693 UUID_VECTOR* UuidVector, RPC_CSTR Annotation);
694 WINPR_API RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
695 UUID_VECTOR* UuidVector, RPC_WSTR Annotation);
696 WINPR_API RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
697 UUID_VECTOR* UuidVector);
698
699 WINPR_API RPC_STATUS DceErrorInqTextA(RPC_STATUS RpcStatus, RPC_CSTR ErrorText);
700 WINPR_API RPC_STATUS DceErrorInqTextW(RPC_STATUS RpcStatus, RPC_WSTR ErrorText);
701
702 WINPR_API RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE EpBinding,
703 unsigned long InquiryType, RPC_IF_ID* IfId,
704 unsigned long VersOption, UUID* ObjectUuid,
705 RPC_EP_INQ_HANDLE* InquiryContext);
706 WINPR_API RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE* InquiryContext);
707 WINPR_API RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE InquiryContext, RPC_IF_ID* IfId,
708 RPC_BINDING_HANDLE* Binding, UUID* ObjectUuid,
709 RPC_CSTR* Annotation);
710 WINPR_API RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE InquiryContext, RPC_IF_ID* IfId,
711 RPC_BINDING_HANDLE* Binding, UUID* ObjectUuid,
712 RPC_WSTR* Annotation);
713 WINPR_API RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE EpBinding, RPC_IF_ID* IfId,
714 RPC_BINDING_HANDLE Binding, UUID* ObjectUuid);
715 WINPR_API RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN AuthorizationFn);
716
717 WINPR_API RPC_STATUS RpcServerInqBindingHandle(RPC_BINDING_HANDLE* Binding);
718
719#ifdef __cplusplus
720}
721#endif
722
723#endif
724
725#endif /* WINPR_RPC_H */
Definition wtypes.h:252