FreeRDP
Loading...
Searching...
No Matches
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/sspi.h>
45#include <winpr/spec.h>
46#include <winpr/error.h>
47
48#define RPC_S_OK ERROR_SUCCESS
49#define RPC_S_INVALID_ARG ERROR_INVALID_PARAMETER
50#define RPC_S_OUT_OF_MEMORY ERROR_OUTOFMEMORY
51#define RPC_S_OUT_OF_THREADS ERROR_MAX_THRDS_REACHED
52#define RPC_S_INVALID_LEVEL ERROR_INVALID_PARAMETER
53#define RPC_S_BUFFER_TOO_SMALL ERROR_INSUFFICIENT_BUFFER
54#define RPC_S_INVALID_SECURITY_DESC ERROR_INVALID_SECURITY_DESCR
55#define RPC_S_ACCESS_DENIED ERROR_ACCESS_DENIED
56#define RPC_S_SERVER_OUT_OF_MEMORY ERROR_NOT_ENOUGH_SERVER_MEMORY
57#define RPC_S_ASYNC_CALL_PENDING ERROR_IO_PENDING
58#define RPC_S_UNKNOWN_PRINCIPAL ERROR_NONE_MAPPED
59#define RPC_S_TIMEOUT ERROR_TIMEOUT
60
61#define RPC_X_NO_MEMORY RPC_S_OUT_OF_MEMORY
62#define RPC_X_INVALID_BOUND RPC_S_INVALID_BOUND
63#define RPC_X_INVALID_TAG RPC_S_INVALID_TAG
64#define RPC_X_ENUM_VALUE_TOO_LARGE RPC_X_ENUM_VALUE_OUT_OF_RANGE
65#define RPC_X_SS_CONTEXT_MISMATCH ERROR_INVALID_HANDLE
66#define RPC_X_INVALID_BUFFER ERROR_INVALID_USER_BUFFER
67#define RPC_X_PIPE_APP_MEMORY ERROR_OUTOFMEMORY
68#define RPC_X_INVALID_PIPE_OPERATION RPC_X_WRONG_PIPE_ORDER
69
70#define RPC_VAR_ENTRY __cdecl
71
72typedef long RPC_STATUS;
73
74#ifndef _WIN32
75typedef CHAR* RPC_CSTR;
76typedef WCHAR* RPC_WSTR;
77#endif
78
79typedef void* I_RPC_HANDLE;
80typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
81typedef RPC_BINDING_HANDLE handle_t;
82
83typedef struct
84{
85 unsigned long Count;
86 RPC_BINDING_HANDLE BindingH[1];
88#define rpc_binding_vector_t RPC_BINDING_VECTOR
89
90typedef struct
91{
92 unsigned long Count;
93 UUID* Uuid[1];
95#define uuid_vector_t UUID_VECTOR
96
97typedef void* RPC_IF_HANDLE;
98
99typedef struct
100{
101 UUID Uuid;
102 unsigned short VersMajor;
103 unsigned short VersMinor;
104} RPC_IF_ID;
105
106#define RPC_C_BINDING_INFINITE_TIMEOUT 10
107#define RPC_C_BINDING_MIN_TIMEOUT 0
108#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
109#define RPC_C_BINDING_MAX_TIMEOUT 9
110
111#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
112
113#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
114#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
115
116#define RPC_C_BIND_TO_ALL_NICS 1
117#define RPC_C_USE_INTERNET_PORT 0x1
118#define RPC_C_USE_INTRANET_PORT 0x2
119#define RPC_C_DONT_FAIL 0x4
120
121#define RPC_C_MQ_TEMPORARY 0x0000
122#define RPC_C_MQ_PERMANENT 0x0001
123#define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
124#define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
125#define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
126#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
127#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
128
129#define RPC_C_OPT_MQ_DELIVERY 1
130#define RPC_C_OPT_MQ_PRIORITY 2
131#define RPC_C_OPT_MQ_JOURNAL 3
132#define RPC_C_OPT_MQ_ACKNOWLEDGE 4
133#define RPC_C_OPT_MQ_AUTHN_SERVICE 5
134#define RPC_C_OPT_MQ_AUTHN_LEVEL 6
135#define RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE 7
136#define RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED 8
137#define RPC_C_OPT_BINDING_NONCAUSAL 9
138#define RPC_C_OPT_SECURITY_CALLBACK 10
139#define RPC_C_OPT_UNIQUE_BINDING 11
140#define RPC_C_OPT_CALL_TIMEOUT 12
141#define RPC_C_OPT_DONT_LINGER 13
142#define RPC_C_OPT_MAX_OPTIONS 14
143
144#define RPC_C_MQ_EXPRESS 0
145#define RPC_C_MQ_RECOVERABLE 1
146
147#define RPC_C_MQ_JOURNAL_NONE 0
148#define RPC_C_MQ_JOURNAL_DEADLETTER 1
149#define RPC_C_MQ_JOURNAL_ALWAYS 2
150
151#define RPC_C_FULL_CERT_CHAIN 0x0001
152
153typedef struct
154{
155 unsigned int Count;
156 unsigned char* Protseq[1];
158
159typedef struct
160{
161 unsigned int Count;
162 unsigned short* Protseq[1];
164
165#ifdef UNICODE
166#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
167#else
168#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
169#endif
170
171typedef struct
172{
173 unsigned int Length;
174 unsigned long EndpointFlags;
175 unsigned long NICFlags;
177
178typedef void RPC_OBJECT_INQ_FN(UUID* ObjectUuid, UUID* TypeUuid, RPC_STATUS* pStatus);
179typedef RPC_STATUS RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid, void* Context);
180typedef void RPC_SECURITY_CALLBACK_FN(void* Context);
181
182#define RPC_MGR_EPV void
183
184typedef struct
185{
186 unsigned int Count;
187 unsigned long Stats[1];
189
190#define RPC_C_STATS_CALLS_IN 0
191#define RPC_C_STATS_CALLS_OUT 1
192#define RPC_C_STATS_PKTS_IN 2
193#define RPC_C_STATS_PKTS_OUT 3
194
195typedef struct
196{
197 unsigned long Count;
198 RPC_IF_ID* IfId[1];
200
201#ifndef _WIN32
202
203typedef void* RPC_AUTH_IDENTITY_HANDLE;
204typedef void* RPC_AUTHZ_HANDLE;
205
206#define RPC_C_AUTHN_LEVEL_DEFAULT 0
207#define RPC_C_AUTHN_LEVEL_NONE 1
208#define RPC_C_AUTHN_LEVEL_CONNECT 2
209#define RPC_C_AUTHN_LEVEL_CALL 3
210#define RPC_C_AUTHN_LEVEL_PKT 4
211#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
212#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
213
214#define RPC_C_IMP_LEVEL_DEFAULT 0
215#define RPC_C_IMP_LEVEL_ANONYMOUS 1
216#define RPC_C_IMP_LEVEL_IDENTIFY 2
217#define RPC_C_IMP_LEVEL_IMPERSONATE 3
218#define RPC_C_IMP_LEVEL_DELEGATE 4
219
220#define RPC_C_QOS_IDENTITY_STATIC 0
221#define RPC_C_QOS_IDENTITY_DYNAMIC 1
222
223#define RPC_C_QOS_CAPABILITIES_DEFAULT 0x0
224#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 0x1
225#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC 0x2
226#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 0x4
227#define RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE 0x8
228#define RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT 0x10
229
230#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
231#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
232#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
233#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
234#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
235#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
236#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
237
238#define RPC_C_AUTHN_NONE 0
239#define RPC_C_AUTHN_DCE_PRIVATE 1
240#define RPC_C_AUTHN_DCE_PUBLIC 2
241#define RPC_C_AUTHN_DEC_PUBLIC 4
242#define RPC_C_AUTHN_GSS_NEGOTIATE 9
243#define RPC_C_AUTHN_WINNT 10
244#define RPC_C_AUTHN_GSS_SCHANNEL 14
245#define RPC_C_AUTHN_GSS_KERBEROS 16
246#define RPC_C_AUTHN_DPA 17
247#define RPC_C_AUTHN_MSN 18
248#define RPC_C_AUTHN_DIGEST 21
249#define RPC_C_AUTHN_MQ 100
250#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
251
252#define RPC_C_NO_CREDENTIALS ((RPC_AUTH_IDENTITY_HANDLE)MAXUINT_PTR)
253
254#define RPC_C_SECURITY_QOS_VERSION 1L
255#define RPC_C_SECURITY_QOS_VERSION_1 1L
256
257typedef struct
258{
259 unsigned long Version;
260 unsigned long Capabilities;
261 unsigned long IdentityTracking;
262 unsigned long ImpersonationType;
264
265#define RPC_C_SECURITY_QOS_VERSION_2 2L
266
267#define RPC_C_AUTHN_INFO_TYPE_HTTP 1
268
269#define RPC_C_HTTP_AUTHN_TARGET_SERVER 1
270#define RPC_C_HTTP_AUTHN_TARGET_PROXY 2
271
272#define RPC_C_HTTP_AUTHN_SCHEME_BASIC 0x00000001
273#define RPC_C_HTTP_AUTHN_SCHEME_NTLM 0x00000002
274#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT 0x00000004
275#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST 0x00000008
276#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x00000010
277#define RPC_C_HTTP_AUTHN_SCHEME_CERT 0x00010000
278
279#define RPC_C_HTTP_FLAG_USE_SSL 1
280#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 2
281#define RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID 8
282
283typedef struct
284{
285 SEC_WINNT_AUTH_IDENTITY_W* TransportCredentials;
286 unsigned long Flags;
287 unsigned long AuthenticationTarget;
288 unsigned long NumberOfAuthnSchemes;
289 unsigned long* AuthnSchemes;
290 unsigned short* ServerCertificateSubject;
292
293typedef struct
294{
295 SEC_WINNT_AUTH_IDENTITY_A* TransportCredentials;
296 unsigned long Flags;
297 unsigned long AuthenticationTarget;
298 unsigned long NumberOfAuthnSchemes;
299 unsigned long* AuthnSchemes;
300 unsigned char* ServerCertificateSubject;
302
303typedef struct
304{
305 unsigned long Version;
306 unsigned long Capabilities;
307 unsigned long IdentityTracking;
308 unsigned long ImpersonationType;
309 unsigned long AdditionalSecurityInfoType;
310 union
311 {
312 RPC_HTTP_TRANSPORT_CREDENTIALS_W* HttpCredentials;
313 } u;
315
316typedef struct
317{
318 unsigned long Version;
319 unsigned long Capabilities;
320 unsigned long IdentityTracking;
321 unsigned long ImpersonationType;
322 unsigned long AdditionalSecurityInfoType;
323 union
324 {
325 RPC_HTTP_TRANSPORT_CREDENTIALS_A* HttpCredentials;
326 } u;
328
329#define RPC_C_SECURITY_QOS_VERSION_3 3L
330
331typedef struct
332{
333 unsigned long Version;
334 unsigned long Capabilities;
335 unsigned long IdentityTracking;
336 unsigned long ImpersonationType;
337 unsigned long AdditionalSecurityInfoType;
338 union
339 {
340 RPC_HTTP_TRANSPORT_CREDENTIALS_W* HttpCredentials;
341 } u;
342 void* Sid;
344
345typedef struct
346{
347 unsigned long Version;
348 unsigned long Capabilities;
349 unsigned long IdentityTracking;
350 unsigned long ImpersonationType;
351 unsigned long AdditionalSecurityInfoType;
352 union
353 {
354 RPC_HTTP_TRANSPORT_CREDENTIALS_A* HttpCredentials;
355 } u;
356 void* Sid;
358
359typedef enum
360{
361 RPCHTTP_RS_REDIRECT = 1,
362 RPCHTTP_RS_ACCESS_1,
363 RPCHTTP_RS_SESSION,
364 RPCHTTP_RS_ACCESS_2,
365 RPCHTTP_RS_INTERFACE
366} RPC_HTTP_REDIRECTOR_STAGE;
367
368typedef RPC_STATUS (*RPC_NEW_HTTP_PROXY_CHANNEL)(
369 RPC_HTTP_REDIRECTOR_STAGE RedirectorStage, unsigned short* ServerName,
370 unsigned short* ServerPort, unsigned short* RemoteUser, unsigned short* AuthType,
371 void* ResourceUuid, void* Metadata, void* SessionId, void* Interface, void* Reserved,
372 unsigned long Flags, unsigned short** NewServerName, unsigned short** NewServerPort);
373
374typedef void (*RPC_HTTP_PROXY_FREE_STRING)(unsigned short* String);
375
376#define RPC_C_AUTHZ_NONE 0
377#define RPC_C_AUTHZ_NAME 1
378#define RPC_C_AUTHZ_DCE 2
379#define RPC_C_AUTHZ_DEFAULT 0xFFFFFFFF
380
381#endif
382
383typedef void (*RPC_AUTH_KEY_RETRIEVAL_FN)(void* Arg, unsigned short* ServerPrincName,
384 unsigned long KeyVer, void** Key, RPC_STATUS* pStatus);
385
386#define DCE_C_ERROR_STRING_LEN 256
387
388typedef I_RPC_HANDLE* RPC_EP_INQ_HANDLE;
389
390#define RPC_C_EP_ALL_ELTS 0
391#define RPC_C_EP_MATCH_BY_IF 1
392#define RPC_C_EP_MATCH_BY_OBJ 2
393#define RPC_C_EP_MATCH_BY_BOTH 3
394
395#define RPC_C_VERS_ALL 1
396#define RPC_C_VERS_COMPATIBLE 2
397#define RPC_C_VERS_EXACT 3
398#define RPC_C_VERS_MAJOR_ONLY 4
399#define RPC_C_VERS_UPTO 5
400
401typedef int (*RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE ClientBinding,
402 unsigned long RequestedMgmtOperation, RPC_STATUS* pStatus);
403
404#define RPC_C_MGMT_INQ_IF_IDS 0
405#define RPC_C_MGMT_INQ_PRINC_NAME 1
406#define RPC_C_MGMT_INQ_STATS 2
407#define RPC_C_MGMT_IS_SERVER_LISTEN 3
408#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
409
410#define RPC_C_PARM_MAX_PACKET_LENGTH 1
411#define RPC_C_PARM_BUFFER_LENGTH 2
412
413#define RPC_IF_AUTOLISTEN 0x0001
414#define RPC_IF_OLE 0x0002
415#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004
416#define RPC_IF_ALLOW_SECURE_ONLY 0x0008
417#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010
418#define RPC_IF_ALLOW_LOCAL_ONLY 0x0020
419#define RPC_IF_SEC_NO_CACHE 0x0040
420
421typedef struct
422{
423 unsigned long Version;
424 unsigned long Flags;
425 unsigned long ComTimeout;
426 unsigned long CallTimeout;
428
429typedef struct
430{
431 unsigned long Version;
432 unsigned short* ServerPrincName;
433 unsigned long AuthnLevel;
434 unsigned long AuthnSvc;
435 SEC_WINNT_AUTH_IDENTITY* AuthIdentity;
436 RPC_SECURITY_QOS* SecurityQos;
438
439typedef struct
440{
441 unsigned long Version;
442 unsigned long Flags;
443 unsigned long ProtocolSequence;
444 unsigned short* NetworkAddress;
445 unsigned short* StringEndpoint;
446 union
447 {
448 unsigned short* Reserved;
449 } u1;
450 UUID ObjectUuid;
452
453#define RPC_CALL_STATUS_IN_PROGRESS 0x01
454#define RPC_CALL_STATUS_CANCELLED 0x02
455#define RPC_CALL_STATUS_DISCONNECTED 0x03
456
457#ifdef __cplusplus
458extern "C"
459{
460#endif
461
462 WINPR_ATTR_NODISCARD
463 WINPR_API RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding,
464 RPC_BINDING_HANDLE* DestinationBinding);
465
466 WINPR_ATTR_NODISCARD
467 WINPR_API RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE* Binding);
468
469 WINPR_ATTR_NODISCARD
470 WINPR_API RPC_STATUS RpcBindingSetOption(RPC_BINDING_HANDLE hBinding, unsigned long option,
471 ULONG_PTR optionValue);
472
473 WINPR_ATTR_NODISCARD
474 WINPR_API RPC_STATUS RpcBindingInqOption(RPC_BINDING_HANDLE hBinding, unsigned long option,
475 ULONG_PTR* pOptionValue);
476
477 WINPR_ATTR_NODISCARD
478 WINPR_API RPC_STATUS RpcBindingFromStringBindingA(RPC_CSTR StringBinding,
479 RPC_BINDING_HANDLE* Binding);
480
481 WINPR_ATTR_NODISCARD
482 WINPR_API RPC_STATUS RpcBindingFromStringBindingW(RPC_WSTR StringBinding,
483 RPC_BINDING_HANDLE* Binding);
484
485 WINPR_ATTR_NODISCARD
486 WINPR_API RPC_STATUS RpcSsGetContextBinding(void* ContextHandle, RPC_BINDING_HANDLE* Binding);
487
488 WINPR_ATTR_NODISCARD
489 WINPR_API RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE Binding, UUID* ObjectUuid);
490
491 WINPR_ATTR_NODISCARD
492 WINPR_API RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE Binding);
493
494 WINPR_ATTR_NODISCARD
495 WINPR_API RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE Binding, UUID* ObjectUuid);
496
497 WINPR_ATTR_NODISCARD
498 WINPR_API RPC_STATUS RpcMgmtInqDefaultProtectLevel(unsigned long AuthnSvc,
499 unsigned long* AuthnLevel);
500
501 WINPR_ATTR_NODISCARD
502 WINPR_API RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE Binding,
503 RPC_CSTR* StringBinding);
504
505 WINPR_ATTR_NODISCARD
506 WINPR_API RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE Binding,
507 RPC_WSTR* StringBinding);
508
509 WINPR_ATTR_NODISCARD
510 WINPR_API RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR** BindingVector);
511
512 WINPR_ATTR_NODISCARD
513 WINPR_API RPC_STATUS RpcStringBindingComposeA(RPC_CSTR ObjUuid, RPC_CSTR Protseq,
514 RPC_CSTR NetworkAddr, RPC_CSTR Endpoint,
515 RPC_CSTR Options, RPC_CSTR* StringBinding);
516
517 WINPR_ATTR_NODISCARD
518 WINPR_API RPC_STATUS RpcStringBindingComposeW(RPC_WSTR ObjUuid, RPC_WSTR Protseq,
519 RPC_WSTR NetworkAddr, RPC_WSTR Endpoint,
520 RPC_WSTR Options, RPC_WSTR* StringBinding);
521
522 WINPR_ATTR_NODISCARD
523 WINPR_API RPC_STATUS RpcStringBindingParseA(RPC_CSTR StringBinding, RPC_CSTR* ObjUuid,
524 RPC_CSTR* Protseq, RPC_CSTR* NetworkAddr,
525 RPC_CSTR* Endpoint, RPC_CSTR* NetworkOptions);
526
527 WINPR_ATTR_NODISCARD
528 WINPR_API RPC_STATUS RpcStringBindingParseW(RPC_WSTR StringBinding, RPC_WSTR* ObjUuid,
529 RPC_WSTR* Protseq, RPC_WSTR* NetworkAddr,
530 RPC_WSTR* Endpoint, RPC_WSTR* NetworkOptions);
531
532 WINPR_API RPC_STATUS RpcStringFreeA(RPC_CSTR* String);
533
534 WINPR_API RPC_STATUS RpcStringFreeW(RPC_WSTR* String);
535
536 WINPR_ATTR_NODISCARD
537 WINPR_API RPC_STATUS RpcIfInqId(RPC_IF_HANDLE RpcIfHandle, RPC_IF_ID* RpcIfId);
538
539 WINPR_ATTR_NODISCARD
540 WINPR_API RPC_STATUS RpcNetworkIsProtseqValidA(RPC_CSTR Protseq);
541
542 WINPR_ATTR_NODISCARD
543 WINPR_API RPC_STATUS RpcNetworkIsProtseqValidW(RPC_WSTR Protseq);
544
545 WINPR_ATTR_NODISCARD
546 WINPR_API RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE Binding, unsigned int* Timeout);
547
548 WINPR_ATTR_NODISCARD
549 WINPR_API RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE Binding, unsigned int Timeout);
550
551 WINPR_ATTR_NODISCARD
552 WINPR_API RPC_STATUS RpcMgmtSetCancelTimeout(long Timeout);
553
554 WINPR_ATTR_NODISCARD
555 WINPR_API RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA** ProtseqVector);
556
557 WINPR_ATTR_NODISCARD
558 WINPR_API RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW** ProtseqVector);
559
560 WINPR_ATTR_NODISCARD
561 WINPR_API RPC_STATUS RpcObjectInqType(UUID* ObjUuid, UUID* TypeUuid);
562
563 WINPR_ATTR_NODISCARD
564 WINPR_API RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN* InquiryFn);
565
566 WINPR_ATTR_NODISCARD
567 WINPR_API RPC_STATUS RpcObjectSetType(UUID* ObjUuid, UUID* TypeUuid);
568
569 WINPR_ATTR_NODISCARD
570 WINPR_API RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA** ProtseqVector);
571
572 WINPR_ATTR_NODISCARD
573 WINPR_API RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW** ProtseqVector);
574
575 WINPR_ATTR_NODISCARD
576 WINPR_API RPC_STATUS RpcServerInqBindings(RPC_BINDING_VECTOR** BindingVector);
577
578 WINPR_ATTR_NODISCARD
579 WINPR_API RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
580 RPC_MGR_EPV** MgrEpv);
581
582 WINPR_ATTR_NODISCARD
583 WINPR_API RPC_STATUS RpcServerListen(unsigned int MinimumCallThreads, unsigned int MaxCalls,
584 unsigned int DontWait);
585
586 WINPR_ATTR_NODISCARD
587 WINPR_API RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
588 RPC_MGR_EPV* MgrEpv);
589
590 WINPR_ATTR_NODISCARD
591 WINPR_API RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
592 RPC_MGR_EPV* MgrEpv, unsigned int Flags,
593 unsigned int MaxCalls,
594 RPC_IF_CALLBACK_FN* IfCallback);
595
596 WINPR_ATTR_NODISCARD
597 WINPR_API RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
598 RPC_MGR_EPV* MgrEpv, unsigned int Flags,
599 unsigned int MaxCalls, unsigned int MaxRpcSize,
600 RPC_IF_CALLBACK_FN* IfCallbackFn);
601
602 WINPR_ATTR_NODISCARD
603 WINPR_API RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
604 unsigned int WaitForCallsToComplete);
605
606 WINPR_ATTR_NODISCARD
607 WINPR_API RPC_STATUS RpcServerUnregisterIfEx(RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid,
608 int RundownContextHandles);
609
610 WINPR_ATTR_NODISCARD
611 WINPR_API RPC_STATUS RpcServerUseAllProtseqs(unsigned int MaxCalls, void* SecurityDescriptor);
612
613 WINPR_ATTR_NODISCARD
614 WINPR_API RPC_STATUS RpcServerUseAllProtseqsEx(unsigned int MaxCalls, void* SecurityDescriptor,
615 PRPC_POLICY Policy);
616
617 WINPR_ATTR_NODISCARD
618 WINPR_API RPC_STATUS RpcServerUseAllProtseqsIf(unsigned int MaxCalls, RPC_IF_HANDLE IfSpec,
619 void* SecurityDescriptor);
620
621 WINPR_ATTR_NODISCARD
622 WINPR_API RPC_STATUS RpcServerUseAllProtseqsIfEx(unsigned int MaxCalls, RPC_IF_HANDLE IfSpec,
623 void* SecurityDescriptor, PRPC_POLICY Policy);
624
625 WINPR_ATTR_NODISCARD
626 WINPR_API RPC_STATUS RpcServerUseProtseqA(RPC_CSTR Protseq, unsigned int MaxCalls,
627 void* SecurityDescriptor);
628
629 WINPR_ATTR_NODISCARD
630 WINPR_API RPC_STATUS RpcServerUseProtseqExA(RPC_CSTR Protseq, unsigned int MaxCalls,
631 void* SecurityDescriptor, PRPC_POLICY Policy);
632
633 WINPR_ATTR_NODISCARD
634 WINPR_API RPC_STATUS RpcServerUseProtseqW(RPC_WSTR Protseq, unsigned int MaxCalls,
635 void* SecurityDescriptor);
636
637 WINPR_ATTR_NODISCARD
638 WINPR_API RPC_STATUS RpcServerUseProtseqExW(RPC_WSTR Protseq, unsigned int MaxCalls,
639 void* SecurityDescriptor, PRPC_POLICY Policy);
640
641 WINPR_ATTR_NODISCARD
642 WINPR_API RPC_STATUS RpcServerUseProtseqEpA(RPC_CSTR Protseq, unsigned int MaxCalls,
643 RPC_CSTR Endpoint, void* SecurityDescriptor);
644
645 WINPR_ATTR_NODISCARD
646 WINPR_API RPC_STATUS RpcServerUseProtseqEpExA(RPC_CSTR Protseq, unsigned int MaxCalls,
647 RPC_CSTR Endpoint, void* SecurityDescriptor,
648 PRPC_POLICY Policy);
649
650 WINPR_ATTR_NODISCARD
651 WINPR_API RPC_STATUS RpcServerUseProtseqEpW(RPC_WSTR Protseq, unsigned int MaxCalls,
652 RPC_WSTR Endpoint, void* SecurityDescriptor);
653
654 WINPR_ATTR_NODISCARD
655 WINPR_API RPC_STATUS RpcServerUseProtseqEpExW(RPC_WSTR Protseq, unsigned int MaxCalls,
656 RPC_WSTR Endpoint, void* SecurityDescriptor,
657 PRPC_POLICY Policy);
658
659 WINPR_ATTR_NODISCARD
660 WINPR_API RPC_STATUS RpcServerUseProtseqIfA(RPC_CSTR Protseq, unsigned int MaxCalls,
661 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor);
662
663 WINPR_ATTR_NODISCARD
664 WINPR_API RPC_STATUS RpcServerUseProtseqIfExA(RPC_CSTR Protseq, unsigned int MaxCalls,
665 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor,
666 PRPC_POLICY Policy);
667
668 WINPR_ATTR_NODISCARD
669 WINPR_API RPC_STATUS RpcServerUseProtseqIfW(RPC_WSTR Protseq, unsigned int MaxCalls,
670 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor);
671
672 WINPR_ATTR_NODISCARD
673 WINPR_API RPC_STATUS RpcServerUseProtseqIfExW(RPC_WSTR Protseq, unsigned int MaxCalls,
674 RPC_IF_HANDLE IfSpec, void* SecurityDescriptor,
675 PRPC_POLICY Policy);
676
677 WINPR_API void RpcServerYield(void);
678
679 WINPR_ATTR_NODISCARD
680 WINPR_API RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR** StatsVector);
681
682 WINPR_ATTR_NODISCARD
683 WINPR_API RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE Binding, RPC_STATS_VECTOR** Statistics);
684
685 WINPR_ATTR_NODISCARD
686 WINPR_API RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding);
687
688 WINPR_ATTR_NODISCARD
689 WINPR_API RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE Binding);
690
691 WINPR_ATTR_NODISCARD
692 WINPR_API RPC_STATUS RpcMgmtWaitServerListen(void);
693
694 WINPR_ATTR_NODISCARD
695 WINPR_API RPC_STATUS RpcMgmtSetServerStackSize(unsigned long ThreadStackSize);
696
697 WINPR_API void RpcSsDontSerializeContext(void);
698
699 WINPR_ATTR_NODISCARD
700 WINPR_API RPC_STATUS RpcMgmtEnableIdleCleanup(void);
701
702 WINPR_ATTR_NODISCARD
703 WINPR_API RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR** IfIdVector);
704
705 WINPR_ATTR_NODISCARD
706 WINPR_API RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR** IfIdVector);
707
708 WINPR_ATTR_NODISCARD
709 WINPR_API RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE Binding,
710 unsigned long AuthnSvc,
711 RPC_CSTR* ServerPrincName);
712
713 WINPR_ATTR_NODISCARD
714 WINPR_API RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE Binding,
715 unsigned long AuthnSvc,
716 RPC_WSTR* ServerPrincName);
717
718 WINPR_ATTR_NODISCARD
719 WINPR_API RPC_STATUS RpcServerInqDefaultPrincNameA(unsigned long AuthnSvc, RPC_CSTR* PrincName);
720
721 WINPR_ATTR_NODISCARD
722 WINPR_API RPC_STATUS RpcServerInqDefaultPrincNameW(unsigned long AuthnSvc, RPC_WSTR* PrincName);
723
724 WINPR_ATTR_NODISCARD
725 WINPR_API RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE IfSpec);
726
727 WINPR_ATTR_NODISCARD
728 WINPR_API RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE Binding,
729 unsigned long EntryNameSyntax,
730 RPC_CSTR* EntryName);
731
732 WINPR_ATTR_NODISCARD
733 WINPR_API RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE Binding,
734 unsigned long EntryNameSyntax,
735 RPC_WSTR* EntryName);
736
737 WINPR_ATTR_NODISCARD
738 WINPR_API RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE BindingHandle);
739
740 WINPR_ATTR_NODISCARD
741 WINPR_API RPC_STATUS RpcRevertToSelfEx(RPC_BINDING_HANDLE BindingHandle);
742
743 WINPR_ATTR_NODISCARD
744 WINPR_API RPC_STATUS RpcRevertToSelf(void);
745
746 WINPR_ATTR_NODISCARD
747 WINPR_API RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE ClientBinding,
748 RPC_AUTHZ_HANDLE* Privs,
749 RPC_CSTR* ServerPrincName,
750 unsigned long* AuthnLevel,
751 unsigned long* AuthnSvc, unsigned long* AuthzSvc);
752
753 WINPR_ATTR_NODISCARD
754 WINPR_API RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE ClientBinding,
755 RPC_AUTHZ_HANDLE* Privs,
756 RPC_WSTR* ServerPrincName,
757 unsigned long* AuthnLevel,
758 unsigned long* AuthnSvc, unsigned long* AuthzSvc);
759
760 WINPR_ATTR_NODISCARD
761 WINPR_API RPC_STATUS RpcBindingInqAuthClientExA(RPC_BINDING_HANDLE ClientBinding,
762 RPC_AUTHZ_HANDLE* Privs,
763 RPC_CSTR* ServerPrincName,
764 unsigned long* AuthnLevel,
765 unsigned long* AuthnSvc,
766 unsigned long* AuthzSvc, unsigned long Flags);
767
768 WINPR_ATTR_NODISCARD
769 WINPR_API RPC_STATUS RpcBindingInqAuthClientExW(RPC_BINDING_HANDLE ClientBinding,
770 RPC_AUTHZ_HANDLE* Privs,
771 RPC_WSTR* ServerPrincName,
772 unsigned long* AuthnLevel,
773 unsigned long* AuthnSvc,
774 unsigned long* AuthzSvc, unsigned long Flags);
775
776 WINPR_ATTR_NODISCARD
777 WINPR_API RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE Binding,
778 RPC_CSTR* ServerPrincName,
779 unsigned long* AuthnLevel, unsigned long* AuthnSvc,
780 RPC_AUTH_IDENTITY_HANDLE* AuthIdentity,
781 unsigned long* AuthzSvc);
782
783 WINPR_ATTR_NODISCARD
784 WINPR_API RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE Binding,
785 RPC_WSTR* ServerPrincName,
786 unsigned long* AuthnLevel, unsigned long* AuthnSvc,
787 RPC_AUTH_IDENTITY_HANDLE* AuthIdentity,
788 unsigned long* AuthzSvc);
789
790 WINPR_ATTR_NODISCARD
791 WINPR_API RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE Binding,
792 RPC_CSTR ServerPrincName, unsigned long AuthnLevel,
793 unsigned long AuthnSvc,
794 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
795 unsigned long AuthzSvc);
796
797 WINPR_ATTR_NODISCARD
798 WINPR_API RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE Binding,
799 RPC_CSTR ServerPrincName,
800 unsigned long AuthnLevel, unsigned long AuthnSvc,
801 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
802 unsigned long AuthzSvc,
803 RPC_SECURITY_QOS* SecurityQos);
804
805 WINPR_ATTR_NODISCARD
806 WINPR_API RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE Binding,
807 RPC_WSTR ServerPrincName, unsigned long AuthnLevel,
808 unsigned long AuthnSvc,
809 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
810 unsigned long AuthzSvc);
811
812 WINPR_ATTR_NODISCARD
813 WINPR_API RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE Binding,
814 RPC_WSTR ServerPrincName,
815 unsigned long AuthnLevel, unsigned long AuthnSvc,
816 RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
817 unsigned long AuthzSvc,
818 RPC_SECURITY_QOS* SecurityQOS);
819
820 WINPR_ATTR_NODISCARD
821 WINPR_API RPC_STATUS RpcBindingInqAuthInfoExA(
822 RPC_BINDING_HANDLE Binding, RPC_CSTR* ServerPrincName, unsigned long* AuthnLevel,
823 unsigned long* AuthnSvc, RPC_AUTH_IDENTITY_HANDLE* AuthIdentity, unsigned long* AuthzSvc,
824 unsigned long RpcQosVersion, RPC_SECURITY_QOS* SecurityQOS);
825
826 WINPR_ATTR_NODISCARD
827 WINPR_API RPC_STATUS RpcBindingInqAuthInfoExW(
828 RPC_BINDING_HANDLE Binding, RPC_WSTR* ServerPrincName, unsigned long* AuthnLevel,
829 unsigned long* AuthnSvc, RPC_AUTH_IDENTITY_HANDLE* AuthIdentity, unsigned long* AuthzSvc,
830 unsigned long RpcQosVersion, RPC_SECURITY_QOS* SecurityQOS);
831
832 WINPR_ATTR_NODISCARD
833 WINPR_API RPC_STATUS RpcServerRegisterAuthInfoA(RPC_CSTR ServerPrincName,
834 unsigned long AuthnSvc,
835 RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, void* Arg);
836
837 WINPR_ATTR_NODISCARD
838 WINPR_API RPC_STATUS RpcServerRegisterAuthInfoW(RPC_WSTR ServerPrincName,
839 unsigned long AuthnSvc,
840 RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, void* Arg);
841
842 WINPR_ATTR_NODISCARD
843 WINPR_API RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE ClientBinding,
844 RPC_BINDING_HANDLE* ServerBinding);
845
846 WINPR_API DECLSPEC_NORETURN void RpcRaiseException(RPC_STATUS exception);
847
848 WINPR_ATTR_NODISCARD
849 WINPR_API RPC_STATUS RpcTestCancel(void);
850
851 WINPR_ATTR_NODISCARD
852 WINPR_API RPC_STATUS RpcServerTestCancel(RPC_BINDING_HANDLE BindingHandle);
853
854 WINPR_ATTR_NODISCARD
855 WINPR_API RPC_STATUS RpcCancelThread(void* Thread);
856
857 WINPR_ATTR_NODISCARD
858 WINPR_API RPC_STATUS RpcCancelThreadEx(void* Thread, long Timeout);
859
860 WINPR_ATTR_NODISCARD
861 WINPR_API RPC_STATUS UuidCreate(UUID* Uuid);
862
863 WINPR_ATTR_NODISCARD
864 WINPR_API RPC_STATUS UuidCreateSequential(UUID* Uuid);
865
866 WINPR_ATTR_NODISCARD
867 WINPR_API RPC_STATUS UuidToStringA(const UUID* Uuid, RPC_CSTR* StringUuid);
868
869 WINPR_ATTR_NODISCARD
870 WINPR_API RPC_STATUS UuidFromStringA(RPC_CSTR StringUuid, UUID* Uuid);
871
872 WINPR_ATTR_NODISCARD
873 WINPR_API RPC_STATUS UuidToStringW(const UUID* Uuid, RPC_WSTR* StringUuid);
874
875 WINPR_ATTR_NODISCARD
876 WINPR_API RPC_STATUS UuidFromStringW(RPC_WSTR StringUuid, UUID* Uuid);
877
878 WINPR_ATTR_NODISCARD
879 WINPR_API signed int UuidCompare(const UUID* Uuid1, const UUID* Uuid2, RPC_STATUS* Status);
880
881 WINPR_ATTR_NODISCARD
882 WINPR_API RPC_STATUS UuidCreateNil(UUID* NilUuid);
883
884 WINPR_ATTR_NODISCARD
885 WINPR_API int UuidEqual(const UUID* Uuid1, const UUID* Uuid2, RPC_STATUS* Status);
886
887 WINPR_ATTR_NODISCARD
888 WINPR_API unsigned short UuidHash(const UUID* Uuid, RPC_STATUS* Status);
889
890 WINPR_ATTR_NODISCARD
891 WINPR_API int UuidIsNil(const UUID* Uuid, RPC_STATUS* Status);
892
893 WINPR_ATTR_NODISCARD
894 WINPR_API RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE IfSpec,
895 RPC_BINDING_VECTOR* BindingVector,
896 UUID_VECTOR* UuidVector, RPC_CSTR Annotation);
897
898 WINPR_ATTR_NODISCARD
899 WINPR_API RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE IfSpec,
900 RPC_BINDING_VECTOR* BindingVector,
901 UUID_VECTOR* UuidVector, RPC_WSTR Annotation);
902
903 WINPR_ATTR_NODISCARD
904 WINPR_API RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
905 UUID_VECTOR* UuidVector, RPC_CSTR Annotation);
906
907 WINPR_ATTR_NODISCARD
908 WINPR_API RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
909 UUID_VECTOR* UuidVector, RPC_WSTR Annotation);
910
911 WINPR_ATTR_NODISCARD
912 WINPR_API RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR* BindingVector,
913 UUID_VECTOR* UuidVector);
914
915 WINPR_ATTR_NODISCARD
916 WINPR_API RPC_STATUS DceErrorInqTextA(RPC_STATUS RpcStatus, RPC_CSTR ErrorText);
917
918 WINPR_ATTR_NODISCARD
919 WINPR_API RPC_STATUS DceErrorInqTextW(RPC_STATUS RpcStatus, RPC_WSTR ErrorText);
920
921 WINPR_ATTR_NODISCARD
922 WINPR_API RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE EpBinding,
923 unsigned long InquiryType, RPC_IF_ID* IfId,
924 unsigned long VersOption, UUID* ObjectUuid,
925 RPC_EP_INQ_HANDLE* InquiryContext);
926
927 WINPR_ATTR_NODISCARD
928 WINPR_API RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE* InquiryContext);
929
930 WINPR_ATTR_NODISCARD
931 WINPR_API RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE InquiryContext, RPC_IF_ID* IfId,
932 RPC_BINDING_HANDLE* Binding, UUID* ObjectUuid,
933 RPC_CSTR* Annotation);
934
935 WINPR_ATTR_NODISCARD
936 WINPR_API RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE InquiryContext, RPC_IF_ID* IfId,
937 RPC_BINDING_HANDLE* Binding, UUID* ObjectUuid,
938 RPC_WSTR* Annotation);
939
940 WINPR_ATTR_NODISCARD
941 WINPR_API RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE EpBinding, RPC_IF_ID* IfId,
942 RPC_BINDING_HANDLE Binding, UUID* ObjectUuid);
943
944 WINPR_ATTR_NODISCARD
945 WINPR_API RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN AuthorizationFn);
946
947 WINPR_ATTR_NODISCARD
948 WINPR_API RPC_STATUS RpcServerInqBindingHandle(RPC_BINDING_HANDLE* Binding);
949
950#ifdef __cplusplus
951}
952#endif
953
954#endif
955
956#endif /* WINPR_RPC_H */
Definition wtypes.h:254