Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2167 lines
49 KiB

  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. Module Name:
  4. rpcdce.h
  5. Abstract:
  6. This module contains the DCE RPC runtime APIs.
  7. --*/
  8. #ifndef __RPCDCE_H__
  9. #define __RPCDCE_H__
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #ifndef IN
  17. #define IN
  18. #endif
  19. #ifndef OUT
  20. #define OUT
  21. #endif
  22. #ifndef OPTIONAL
  23. #define OPTIONAL
  24. #endif
  25. #ifndef DECLSPEC_NORETURN
  26. #if (_MSC_VER >= 1200) && !defined(MIDL_PASS)
  27. #define DECLSPEC_NORETURN __declspec(noreturn)
  28. #else
  29. #define DECLSPEC_NORETURN
  30. #endif
  31. #endif
  32. /*typedef char small;*/
  33. /*typedef unsigned char byte;*/
  34. /*typedef unsigned char boolean;*/
  35. typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
  36. typedef RPC_BINDING_HANDLE handle_t;
  37. #define rpc_binding_handle_t RPC_BINDING_HANDLE
  38. #ifndef GUID_DEFINED
  39. #include <guiddef.h>
  40. #endif /* GUID_DEFINED */
  41. #ifndef UUID_DEFINED
  42. #define UUID_DEFINED
  43. typedef GUID UUID;
  44. #ifndef uuid_t
  45. #define uuid_t UUID
  46. #endif
  47. #endif
  48. typedef struct _RPC_BINDING_VECTOR
  49. {
  50. unsigned long Count;
  51. RPC_BINDING_HANDLE BindingH[1];
  52. } RPC_BINDING_VECTOR;
  53. #ifndef rpc_binding_vector_t
  54. #define rpc_binding_vector_t RPC_BINDING_VECTOR
  55. #endif
  56. typedef struct _UUID_VECTOR
  57. {
  58. unsigned long Count;
  59. UUID *Uuid[1];
  60. } UUID_VECTOR;
  61. #ifndef uuid_vector_t
  62. #define uuid_vector_t UUID_VECTOR
  63. #endif
  64. typedef void __RPC_FAR * RPC_IF_HANDLE;
  65. #ifndef IFID_DEFINED
  66. #define IFID_DEFINED
  67. typedef struct _RPC_IF_ID
  68. {
  69. UUID Uuid;
  70. unsigned short VersMajor;
  71. unsigned short VersMinor;
  72. } RPC_IF_ID;
  73. #endif
  74. #define RPC_C_BINDING_INFINITE_TIMEOUT 10
  75. #define RPC_C_BINDING_MIN_TIMEOUT 0
  76. #define RPC_C_BINDING_DEFAULT_TIMEOUT 5
  77. #define RPC_C_BINDING_MAX_TIMEOUT 9
  78. #define RPC_C_CANCEL_INFINITE_TIMEOUT -1
  79. #define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
  80. #define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
  81. // RPC_POLICY EndpointFlags.
  82. #define RPC_C_BIND_TO_ALL_NICS 1
  83. #define RPC_C_USE_INTERNET_PORT 0x1
  84. #define RPC_C_USE_INTRANET_PORT 0x2
  85. #define RPC_C_DONT_FAIL 0x4
  86. // RPC_POLICY EndpointFlags specific to the Falcon/RPC transport:
  87. #define RPC_C_MQ_TEMPORARY 0x0000
  88. #define RPC_C_MQ_PERMANENT 0x0001
  89. #define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
  90. #define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
  91. #define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
  92. #define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
  93. #define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
  94. // Client: RpcBindingSetOption() values for the Falcon/RPC transport:
  95. #define RPC_C_OPT_MQ_DELIVERY 1
  96. #define RPC_C_OPT_MQ_PRIORITY 2
  97. #define RPC_C_OPT_MQ_JOURNAL 3
  98. #define RPC_C_OPT_MQ_ACKNOWLEDGE 4
  99. #define RPC_C_OPT_MQ_AUTHN_SERVICE 5
  100. #define RPC_C_OPT_MQ_AUTHN_LEVEL 6
  101. #define RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE 7
  102. #define RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED 8
  103. #define RPC_C_OPT_BINDING_NONCAUSAL 9
  104. #define RPC_C_OPT_SECURITY_CALLBACK 10
  105. #define RPC_C_OPT_UNIQUE_BINDING 11
  106. #define RPC_C_OPT_CALL_TIMEOUT 12
  107. #define RPC_C_OPT_DONT_LINGER 13
  108. #define RPC_C_OPT_MAX_OPTIONS 14
  109. #define RPC_C_MQ_EXPRESS 0 // Client: RPC_C_MQ_DELIVERY.
  110. #define RPC_C_MQ_RECOVERABLE 1
  111. #define RPC_C_MQ_JOURNAL_NONE 0 // Client: RPC_C_MQ_JOURNAL.
  112. #define RPC_C_MQ_JOURNAL_DEADLETTER 1
  113. #define RPC_C_MQ_JOURNAL_ALWAYS 2
  114. // flags for RpcServerInqAuthClientEx
  115. //
  116. #define RPC_C_FULL_CERT_CHAIN 0x0001
  117. #ifdef RPC_UNICODE_SUPPORTED
  118. typedef struct _RPC_PROTSEQ_VECTORA
  119. {
  120. unsigned int Count;
  121. unsigned char __RPC_FAR * Protseq[1];
  122. } RPC_PROTSEQ_VECTORA;
  123. typedef struct _RPC_PROTSEQ_VECTORW
  124. {
  125. unsigned int Count;
  126. unsigned short __RPC_FAR * Protseq[1];
  127. } RPC_PROTSEQ_VECTORW;
  128. #ifdef UNICODE
  129. #define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
  130. #else /* UNICODE */
  131. #define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
  132. #endif /* UNICODE */
  133. #else /* RPC_UNICODE_SUPPORTED */
  134. typedef struct _RPC_PROTSEQ_VECTOR
  135. {
  136. unsigned int Count;
  137. unsigned char __RPC_FAR * Protseq[1];
  138. } RPC_PROTSEQ_VECTOR;
  139. #endif /* RPC_UNICODE_SUPPORTED */
  140. typedef struct _RPC_POLICY {
  141. unsigned int Length ;
  142. unsigned long EndpointFlags ;
  143. unsigned long NICFlags ;
  144. } RPC_POLICY, __RPC_FAR *PRPC_POLICY ;
  145. typedef void __RPC_USER
  146. RPC_OBJECT_INQ_FN (
  147. IN UUID __RPC_FAR * ObjectUuid,
  148. OUT UUID __RPC_FAR * TypeUuid,
  149. OUT RPC_STATUS __RPC_FAR * Status
  150. );
  151. typedef RPC_STATUS RPC_ENTRY
  152. RPC_IF_CALLBACK_FN (
  153. IN RPC_IF_HANDLE InterfaceUuid,
  154. IN void *Context
  155. ) ;
  156. typedef void RPC_ENTRY
  157. RPC_SECURITY_CALLBACK_FN (
  158. IN void *Context
  159. ) ;
  160. #define RPC_MGR_EPV void
  161. typedef struct
  162. {
  163. unsigned int Count;
  164. unsigned long Stats[1];
  165. } RPC_STATS_VECTOR;
  166. #define RPC_C_STATS_CALLS_IN 0
  167. #define RPC_C_STATS_CALLS_OUT 1
  168. #define RPC_C_STATS_PKTS_IN 2
  169. #define RPC_C_STATS_PKTS_OUT 3
  170. typedef struct
  171. {
  172. unsigned long Count;
  173. RPC_IF_ID __RPC_FAR * IfId[1];
  174. } RPC_IF_ID_VECTOR;
  175. /* client */
  176. RPCRTAPI
  177. RPC_STATUS
  178. RPC_ENTRY
  179. RpcBindingCopy (
  180. IN RPC_BINDING_HANDLE SourceBinding,
  181. OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  182. );
  183. /* client */
  184. RPCRTAPI
  185. RPC_STATUS
  186. RPC_ENTRY
  187. RpcBindingFree (
  188. IN OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
  189. );
  190. /* client */
  191. RPCRTAPI
  192. RPC_STATUS
  193. RPC_ENTRY
  194. RpcBindingSetOption( IN RPC_BINDING_HANDLE hBinding,
  195. IN unsigned long option,
  196. IN ULONG_PTR optionValue );
  197. /* client */
  198. RPCRTAPI
  199. RPC_STATUS
  200. RPC_ENTRY
  201. RpcBindingInqOption( IN RPC_BINDING_HANDLE hBinding,
  202. IN unsigned long option,
  203. OUT ULONG_PTR *pOptionValue );
  204. /* client */
  205. #ifdef RPC_UNICODE_SUPPORTED
  206. RPCRTAPI
  207. RPC_STATUS
  208. RPC_ENTRY
  209. RpcBindingFromStringBindingA (
  210. IN unsigned char __RPC_FAR * StringBinding,
  211. OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
  212. );
  213. RPCRTAPI
  214. RPC_STATUS
  215. RPC_ENTRY
  216. RpcBindingFromStringBindingW (
  217. IN unsigned short __RPC_FAR * StringBinding,
  218. OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
  219. );
  220. #ifdef UNICODE
  221. #define RpcBindingFromStringBinding RpcBindingFromStringBindingW
  222. #else /* UNICODE */
  223. #define RpcBindingFromStringBinding RpcBindingFromStringBindingA
  224. #endif /* UNICODE */
  225. #else /* RPC_UNICODE_SUPPORTED */
  226. RPCRTAPI
  227. RPC_STATUS
  228. RPC_ENTRY
  229. RpcBindingFromStringBinding (
  230. IN unsigned char __RPC_FAR * StringBinding,
  231. OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
  232. );
  233. #endif /* RPC_UNICODE_SUPPORTED */
  234. /* client */
  235. RPCRTAPI
  236. RPC_STATUS
  237. RPC_ENTRY
  238. RpcSsGetContextBinding (
  239. IN void *ContextHandle,
  240. OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
  241. );
  242. /* client/server */
  243. RPCRTAPI
  244. RPC_STATUS
  245. RPC_ENTRY
  246. RpcBindingInqObject (
  247. IN RPC_BINDING_HANDLE Binding,
  248. OUT UUID __RPC_FAR * ObjectUuid
  249. );
  250. /* client */
  251. RPCRTAPI
  252. RPC_STATUS
  253. RPC_ENTRY
  254. RpcBindingReset (
  255. IN RPC_BINDING_HANDLE Binding
  256. );
  257. /* RpcBindingServerFromClient : UNSUPPORTED */
  258. /* RpcBindingSetAuthInfo */
  259. /* client */
  260. RPCRTAPI
  261. RPC_STATUS
  262. RPC_ENTRY
  263. RpcBindingSetObject (
  264. IN RPC_BINDING_HANDLE Binding,
  265. IN UUID __RPC_FAR * ObjectUuid
  266. );
  267. /* client/server */
  268. RPCRTAPI
  269. RPC_STATUS
  270. RPC_ENTRY
  271. RpcMgmtInqDefaultProtectLevel(
  272. IN unsigned long AuthnSvc,
  273. OUT unsigned long __RPC_FAR *AuthnLevel
  274. );
  275. /* client/server */
  276. #ifdef RPC_UNICODE_SUPPORTED
  277. RPCRTAPI
  278. RPC_STATUS
  279. RPC_ENTRY
  280. RpcBindingToStringBindingA (
  281. IN RPC_BINDING_HANDLE Binding,
  282. OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
  283. );
  284. RPCRTAPI
  285. RPC_STATUS
  286. RPC_ENTRY
  287. RpcBindingToStringBindingW (
  288. IN RPC_BINDING_HANDLE Binding,
  289. OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding
  290. );
  291. #ifdef UNICODE
  292. #define RpcBindingToStringBinding RpcBindingToStringBindingW
  293. #else /* UNICODE */
  294. #define RpcBindingToStringBinding RpcBindingToStringBindingA
  295. #endif /* UNICODE */
  296. #else /* RPC_UNICODE_SUPPORTED */
  297. RPCRTAPI
  298. RPC_STATUS
  299. RPC_ENTRY
  300. RpcBindingToStringBinding (
  301. IN RPC_BINDING_HANDLE Binding,
  302. OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
  303. );
  304. #endif /* RPC_UNICODE_SUPPORTED */
  305. /* client/server */
  306. RPCRTAPI
  307. RPC_STATUS
  308. RPC_ENTRY
  309. RpcBindingVectorFree (
  310. IN OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
  311. );
  312. /* client/server */
  313. #ifdef RPC_UNICODE_SUPPORTED
  314. RPCRTAPI
  315. RPC_STATUS
  316. RPC_ENTRY
  317. RpcStringBindingComposeA (
  318. IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
  319. IN unsigned char __RPC_FAR * Protseq OPTIONAL,
  320. IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
  321. IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
  322. IN unsigned char __RPC_FAR * Options OPTIONAL,
  323. OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
  324. );
  325. RPCRTAPI
  326. RPC_STATUS
  327. RPC_ENTRY
  328. RpcStringBindingComposeW (
  329. IN unsigned short __RPC_FAR * ObjUuid OPTIONAL,
  330. IN unsigned short __RPC_FAR * Protseq OPTIONAL,
  331. IN unsigned short __RPC_FAR * NetworkAddr OPTIONAL,
  332. IN unsigned short __RPC_FAR * Endpoint OPTIONAL,
  333. IN unsigned short __RPC_FAR * Options OPTIONAL,
  334. OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
  335. );
  336. #ifdef UNICODE
  337. #define RpcStringBindingCompose RpcStringBindingComposeW
  338. #else /* UNICODE */
  339. #define RpcStringBindingCompose RpcStringBindingComposeA
  340. #endif /* UNICODE */
  341. #else /* RPC_UNICODE_SUPPORTED */
  342. RPCRTAPI
  343. RPC_STATUS
  344. RPC_ENTRY
  345. RpcStringBindingCompose (
  346. IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
  347. IN unsigned char __RPC_FAR * Protseq OPTIONAL,
  348. IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
  349. IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
  350. IN unsigned char __RPC_FAR * Options OPTIONAL,
  351. OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
  352. );
  353. #endif /* RPC_UNICODE_SUPPORTED */
  354. /* client/server */
  355. #ifdef RPC_UNICODE_SUPPORTED
  356. RPCRTAPI
  357. RPC_STATUS
  358. RPC_ENTRY
  359. RpcStringBindingParseA (
  360. IN unsigned char __RPC_FAR * StringBinding,
  361. OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
  362. OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
  363. OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
  364. OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
  365. OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
  366. );
  367. RPCRTAPI
  368. RPC_STATUS
  369. RPC_ENTRY
  370. RpcStringBindingParseW (
  371. IN unsigned short __RPC_FAR * StringBinding,
  372. OUT unsigned short __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
  373. OUT unsigned short __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
  374. OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
  375. OUT unsigned short __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
  376. OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
  377. );
  378. #ifdef UNICODE
  379. #define RpcStringBindingParse RpcStringBindingParseW
  380. #else /* UNICODE */
  381. #define RpcStringBindingParse RpcStringBindingParseA
  382. #endif /* UNICODE */
  383. #else /* RPC_UNICODE_SUPPORTED */
  384. RPCRTAPI
  385. RPC_STATUS
  386. RPC_ENTRY
  387. RpcStringBindingParse (
  388. IN unsigned char __RPC_FAR * StringBinding,
  389. OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
  390. OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
  391. OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
  392. OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
  393. OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
  394. );
  395. #endif /* RPC_UNICODE_SUPPORTED */
  396. /* client/server */
  397. #ifdef RPC_UNICODE_SUPPORTED
  398. RPCRTAPI
  399. RPC_STATUS
  400. RPC_ENTRY
  401. RpcStringFreeA (
  402. IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
  403. );
  404. RPCRTAPI
  405. RPC_STATUS
  406. RPC_ENTRY
  407. RpcStringFreeW (
  408. IN OUT unsigned short __RPC_FAR * __RPC_FAR * String
  409. );
  410. #ifdef UNICODE
  411. #define RpcStringFree RpcStringFreeW
  412. #else /* UNICODE */
  413. #define RpcStringFree RpcStringFreeA
  414. #endif /* UNICODE */
  415. #else /* RPC_UNICODE_SUPPORTED */
  416. RPCRTAPI
  417. RPC_STATUS
  418. RPC_ENTRY
  419. RpcStringFree (
  420. IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
  421. );
  422. #endif /* RPC_UNICODE_SUPPORTED */
  423. /* client/server */
  424. RPCRTAPI
  425. RPC_STATUS
  426. RPC_ENTRY
  427. RpcIfInqId (
  428. IN RPC_IF_HANDLE RpcIfHandle,
  429. OUT RPC_IF_ID __RPC_FAR * RpcIfId
  430. );
  431. /* client/server */
  432. #ifdef RPC_UNICODE_SUPPORTED
  433. RPCRTAPI
  434. RPC_STATUS
  435. RPC_ENTRY
  436. RpcNetworkIsProtseqValidA (
  437. IN unsigned char __RPC_FAR * Protseq
  438. );
  439. RPCRTAPI
  440. RPC_STATUS
  441. RPC_ENTRY
  442. RpcNetworkIsProtseqValidW (
  443. IN unsigned short __RPC_FAR * Protseq
  444. );
  445. #ifdef UNICODE
  446. #define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
  447. #else /* UNICODE */
  448. #define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
  449. #endif /* UNICODE */
  450. #else /* RPC_UNICODE_SUPPORTED */
  451. RPCRTAPI
  452. RPC_STATUS
  453. RPC_ENTRY
  454. RpcNetworkIsProtseqValid (
  455. IN unsigned char __RPC_FAR * Protseq
  456. );
  457. #endif /* RPC_UNICODE_SUPPORTED */
  458. /* client */
  459. RPCRTAPI
  460. RPC_STATUS
  461. RPC_ENTRY
  462. RpcMgmtInqComTimeout (
  463. IN RPC_BINDING_HANDLE Binding,
  464. OUT unsigned int __RPC_FAR * Timeout
  465. );
  466. /* client */
  467. RPCRTAPI
  468. RPC_STATUS
  469. RPC_ENTRY
  470. RpcMgmtSetComTimeout (
  471. IN RPC_BINDING_HANDLE Binding,
  472. IN unsigned int Timeout
  473. );
  474. /* client */
  475. RPCRTAPI
  476. RPC_STATUS
  477. RPC_ENTRY
  478. RpcMgmtSetCancelTimeout(
  479. long Timeout
  480. );
  481. /* server */
  482. #ifdef RPC_UNICODE_SUPPORTED
  483. RPCRTAPI
  484. RPC_STATUS
  485. RPC_ENTRY
  486. RpcNetworkInqProtseqsA (
  487. OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
  488. );
  489. RPCRTAPI
  490. RPC_STATUS
  491. RPC_ENTRY
  492. RpcNetworkInqProtseqsW (
  493. OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
  494. );
  495. #ifdef UNICODE
  496. #define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
  497. #else /* UNICODE */
  498. #define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
  499. #endif /* UNICODE */
  500. #else /* RPC_UNICODE_SUPPORTED */
  501. RPCRTAPI
  502. RPC_STATUS
  503. RPC_ENTRY
  504. RpcNetworkInqProtseqs (
  505. OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
  506. );
  507. #endif /* RPC_UNICODE_SUPPORTED */
  508. /* server */
  509. RPCRTAPI
  510. RPC_STATUS
  511. RPC_ENTRY
  512. RpcObjectInqType (
  513. IN UUID __RPC_FAR * ObjUuid,
  514. OUT UUID __RPC_FAR * TypeUuid OPTIONAL
  515. );
  516. /* server */
  517. RPCRTAPI
  518. RPC_STATUS
  519. RPC_ENTRY
  520. RpcObjectSetInqFn (
  521. IN RPC_OBJECT_INQ_FN __RPC_FAR * InquiryFn
  522. );
  523. /* server */
  524. RPCRTAPI
  525. RPC_STATUS
  526. RPC_ENTRY
  527. RpcObjectSetType (
  528. IN UUID __RPC_FAR * ObjUuid,
  529. IN UUID __RPC_FAR * TypeUuid OPTIONAL
  530. );
  531. /* server */
  532. #ifdef RPC_UNICODE_SUPPORTED
  533. RPCRTAPI
  534. RPC_STATUS
  535. RPC_ENTRY
  536. RpcProtseqVectorFreeA (
  537. IN OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
  538. );
  539. RPCRTAPI
  540. RPC_STATUS
  541. RPC_ENTRY
  542. RpcProtseqVectorFreeW (
  543. IN OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
  544. );
  545. #ifdef UNICODE
  546. #define RpcProtseqVectorFree RpcProtseqVectorFreeW
  547. #else /* UNICODE */
  548. #define RpcProtseqVectorFree RpcProtseqVectorFreeA
  549. #endif /* UNICODE */
  550. #else /* RPC_UNICODE_SUPPORTED */
  551. RPCRTAPI
  552. RPC_STATUS
  553. RPC_ENTRY
  554. RpcProtseqVectorFree (
  555. IN OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
  556. );
  557. #endif /* RPC_UNICODE_SUPPORTED */
  558. /* server */
  559. RPCRTAPI
  560. RPC_STATUS
  561. RPC_ENTRY
  562. RpcServerInqBindings (
  563. OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
  564. );
  565. /* server */
  566. RPCRTAPI
  567. RPC_STATUS
  568. RPC_ENTRY
  569. RpcServerInqIf (
  570. IN RPC_IF_HANDLE IfSpec,
  571. IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
  572. OUT RPC_MGR_EPV __RPC_FAR * __RPC_FAR * MgrEpv
  573. );
  574. /* server */
  575. RPCRTAPI
  576. RPC_STATUS
  577. RPC_ENTRY
  578. RpcServerListen (
  579. IN unsigned int MinimumCallThreads,
  580. IN unsigned int MaxCalls,
  581. IN unsigned int DontWait
  582. );
  583. /* server */
  584. RPCRTAPI
  585. RPC_STATUS
  586. RPC_ENTRY
  587. RpcServerRegisterIf (
  588. IN RPC_IF_HANDLE IfSpec,
  589. IN UUID __RPC_FAR * MgrTypeUuid OPTIONAL,
  590. IN RPC_MGR_EPV __RPC_FAR * MgrEpv OPTIONAL
  591. );
  592. /* server */
  593. RPCRTAPI
  594. RPC_STATUS
  595. RPC_ENTRY
  596. RpcServerRegisterIfEx (
  597. IN RPC_IF_HANDLE IfSpec,
  598. IN UUID __RPC_FAR * MgrTypeUuid,
  599. IN RPC_MGR_EPV __RPC_FAR * MgrEpv,
  600. IN unsigned int Flags,
  601. IN unsigned int MaxCalls,
  602. IN RPC_IF_CALLBACK_FN __RPC_FAR *IfCallback
  603. );
  604. /* server */
  605. RPCRTAPI
  606. RPC_STATUS
  607. RPC_ENTRY
  608. RpcServerRegisterIf2 (
  609. IN RPC_IF_HANDLE IfSpec,
  610. IN UUID * MgrTypeUuid,
  611. IN RPC_MGR_EPV * MgrEpv,
  612. IN unsigned int Flags,
  613. IN unsigned int MaxCalls,
  614. IN unsigned int MaxRpcSize,
  615. IN RPC_IF_CALLBACK_FN *IfCallbackFn
  616. );
  617. /* server */
  618. RPCRTAPI
  619. RPC_STATUS
  620. RPC_ENTRY
  621. RpcServerUnregisterIf (
  622. IN RPC_IF_HANDLE IfSpec,
  623. IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
  624. IN unsigned int WaitForCallsToComplete
  625. );
  626. /* server */
  627. RPCRTAPI
  628. RPC_STATUS
  629. RPC_ENTRY
  630. RpcServerUnregisterIfEx (
  631. IN RPC_IF_HANDLE IfSpec,
  632. IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
  633. IN int RundownContextHandles
  634. );
  635. /* server */
  636. RPCRTAPI
  637. RPC_STATUS
  638. RPC_ENTRY
  639. RpcServerUseAllProtseqs (
  640. IN unsigned int MaxCalls,
  641. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  642. );
  643. /* server */
  644. RPCRTAPI
  645. RPC_STATUS
  646. RPC_ENTRY
  647. RpcServerUseAllProtseqsEx (
  648. IN unsigned int MaxCalls,
  649. IN void __RPC_FAR * SecurityDescriptor,
  650. IN PRPC_POLICY Policy
  651. );
  652. /* server */
  653. RPCRTAPI
  654. RPC_STATUS
  655. RPC_ENTRY
  656. RpcServerUseAllProtseqsIf (
  657. IN unsigned int MaxCalls,
  658. IN RPC_IF_HANDLE IfSpec,
  659. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  660. );
  661. /* server */
  662. RPCRTAPI
  663. RPC_STATUS
  664. RPC_ENTRY
  665. RpcServerUseAllProtseqsIfEx (
  666. IN unsigned int MaxCalls,
  667. IN RPC_IF_HANDLE IfSpec,
  668. IN void __RPC_FAR * SecurityDescriptor,
  669. IN PRPC_POLICY Policy
  670. );
  671. /* server */
  672. #ifdef RPC_UNICODE_SUPPORTED
  673. RPCRTAPI
  674. RPC_STATUS
  675. RPC_ENTRY
  676. RpcServerUseProtseqA (
  677. IN unsigned char __RPC_FAR * Protseq,
  678. IN unsigned int MaxCalls,
  679. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  680. );
  681. RPCRTAPI
  682. RPC_STATUS
  683. RPC_ENTRY
  684. RpcServerUseProtseqExA (
  685. IN unsigned char __RPC_FAR * Protseq,
  686. IN unsigned int MaxCalls,
  687. IN void __RPC_FAR * SecurityDescriptor,
  688. IN PRPC_POLICY Policy
  689. );
  690. RPCRTAPI
  691. RPC_STATUS
  692. RPC_ENTRY
  693. RpcServerUseProtseqW (
  694. IN unsigned short __RPC_FAR * Protseq,
  695. IN unsigned int MaxCalls,
  696. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  697. );
  698. RPCRTAPI
  699. RPC_STATUS
  700. RPC_ENTRY
  701. RpcServerUseProtseqExW (
  702. IN unsigned short __RPC_FAR * Protseq,
  703. IN unsigned int MaxCalls,
  704. IN void __RPC_FAR * SecurityDescriptor,
  705. IN PRPC_POLICY Policy
  706. );
  707. #ifdef UNICODE
  708. #define RpcServerUseProtseq RpcServerUseProtseqW
  709. #define RpcServerUseProtseqEx RpcServerUseProtseqExW
  710. #else /* UNICODE */
  711. #define RpcServerUseProtseq RpcServerUseProtseqA
  712. #define RpcServerUseProtseqEx RpcServerUseProtseqExA
  713. #endif /* UNICODE */
  714. #else /* RPC_UNICODE_SUPPORTED */
  715. RPCRTAPI
  716. RPC_STATUS
  717. RPC_ENTRY
  718. RpcServerUseProtseq (
  719. IN unsigned char __RPC_FAR * Protseq,
  720. IN unsigned int MaxCalls,
  721. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  722. );
  723. RPCRTAPI
  724. RPC_STATUS
  725. RPC_ENTRY
  726. RpcServerUseProtseqEx (
  727. IN unsigned char __RPC_FAR * Protseq,
  728. IN unsigned int MaxCalls,
  729. IN void __RPC_FAR * SecurityDescriptor,
  730. IN PRPC_POLICY Policy
  731. );
  732. #endif /* RPC_UNICODE_SUPPORTED */
  733. /* server */
  734. #ifdef RPC_UNICODE_SUPPORTED
  735. RPCRTAPI
  736. RPC_STATUS
  737. RPC_ENTRY
  738. RpcServerUseProtseqEpA (
  739. IN unsigned char __RPC_FAR * Protseq,
  740. IN unsigned int MaxCalls,
  741. IN unsigned char __RPC_FAR * Endpoint,
  742. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  743. );
  744. RPCRTAPI
  745. RPC_STATUS
  746. RPC_ENTRY
  747. RpcServerUseProtseqEpExA (
  748. IN unsigned char __RPC_FAR * Protseq,
  749. IN unsigned int MaxCalls,
  750. IN unsigned char __RPC_FAR * Endpoint,
  751. IN void __RPC_FAR * SecurityDescriptor,
  752. IN PRPC_POLICY Policy
  753. );
  754. RPCRTAPI
  755. RPC_STATUS
  756. RPC_ENTRY
  757. RpcServerUseProtseqEpW (
  758. IN unsigned short __RPC_FAR * Protseq,
  759. IN unsigned int MaxCalls,
  760. IN unsigned short __RPC_FAR * Endpoint,
  761. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  762. );
  763. RPCRTAPI
  764. RPC_STATUS
  765. RPC_ENTRY
  766. RpcServerUseProtseqEpExW (
  767. IN unsigned short __RPC_FAR * Protseq,
  768. IN unsigned int MaxCalls,
  769. IN unsigned short __RPC_FAR * Endpoint,
  770. IN void __RPC_FAR * SecurityDescriptor,
  771. IN PRPC_POLICY Policy
  772. );
  773. #ifdef UNICODE
  774. #define RpcServerUseProtseqEp RpcServerUseProtseqEpW
  775. #define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
  776. #else /* UNICODE */
  777. #define RpcServerUseProtseqEp RpcServerUseProtseqEpA
  778. #define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
  779. #endif /* UNICODE */
  780. #else /* RPC_UNICODE_SUPPORTED */
  781. RPCRTAPI
  782. RPC_STATUS
  783. RPC_ENTRY
  784. RpcServerUseProtseqEp (
  785. IN unsigned char __RPC_FAR * Protseq,
  786. IN unsigned int MaxCalls,
  787. IN unsigned char __RPC_FAR * Endpoint,
  788. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  789. );
  790. RPCRTAPI
  791. RPC_STATUS
  792. RPC_ENTRY
  793. RpcServerUseProtseqEpEx (
  794. IN unsigned char __RPC_FAR * Protseq,
  795. IN unsigned int MaxCalls,
  796. IN unsigned char __RPC_FAR * Endpoint,
  797. IN void __RPC_FAR * SecurityDescriptor,
  798. IN PRPC_POLICY Policy
  799. );
  800. #endif /* RPC_UNICODE_SUPPORTED */
  801. /* server */
  802. #ifdef RPC_UNICODE_SUPPORTED
  803. RPCRTAPI
  804. RPC_STATUS
  805. RPC_ENTRY
  806. RpcServerUseProtseqIfA (
  807. IN unsigned char __RPC_FAR * Protseq,
  808. IN unsigned int MaxCalls,
  809. IN RPC_IF_HANDLE IfSpec,
  810. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  811. );
  812. RPCRTAPI
  813. RPC_STATUS
  814. RPC_ENTRY
  815. RpcServerUseProtseqIfExA (
  816. IN unsigned char __RPC_FAR * Protseq,
  817. IN unsigned int MaxCalls,
  818. IN RPC_IF_HANDLE IfSpec,
  819. IN void __RPC_FAR * SecurityDescriptor,
  820. IN PRPC_POLICY Policy
  821. );
  822. RPCRTAPI
  823. RPC_STATUS
  824. RPC_ENTRY
  825. RpcServerUseProtseqIfW (
  826. IN unsigned short __RPC_FAR * Protseq,
  827. IN unsigned int MaxCalls,
  828. IN RPC_IF_HANDLE IfSpec,
  829. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  830. );
  831. RPCRTAPI
  832. RPC_STATUS
  833. RPC_ENTRY
  834. RpcServerUseProtseqIfExW (
  835. IN unsigned short __RPC_FAR * Protseq,
  836. IN unsigned int MaxCalls,
  837. IN RPC_IF_HANDLE IfSpec,
  838. IN void __RPC_FAR * SecurityDescriptor,
  839. IN PRPC_POLICY Policy
  840. );
  841. #ifdef UNICODE
  842. #define RpcServerUseProtseqIf RpcServerUseProtseqIfW
  843. #define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
  844. #else /* UNICODE */
  845. #define RpcServerUseProtseqIf RpcServerUseProtseqIfA
  846. #define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
  847. #endif /* UNICODE */
  848. #else /* RPC_UNICODE_SUPPORTED */
  849. RPCRTAPI
  850. RPC_STATUS
  851. RPC_ENTRY
  852. RpcServerUseProtseqIf (
  853. IN unsigned char __RPC_FAR * Protseq,
  854. IN unsigned int MaxCalls,
  855. IN RPC_IF_HANDLE IfSpec,
  856. IN void __RPC_FAR * SecurityDescriptor OPTIONAL
  857. );
  858. RPCRTAPI
  859. RPC_STATUS
  860. RPC_ENTRY
  861. RpcServerUseProtseqIfEx (
  862. IN unsigned char __RPC_FAR * Protseq,
  863. IN unsigned int MaxCalls,
  864. IN RPC_IF_HANDLE IfSpec,
  865. IN void __RPC_FAR * SecurityDescriptor,
  866. IN PRPC_POLICY Policy
  867. );
  868. #endif /* RPC_UNICODE_SUPPORTED */
  869. RPCRTAPI
  870. void
  871. RPC_ENTRY
  872. RpcServerYield (
  873. );
  874. /* server */
  875. RPCRTAPI
  876. RPC_STATUS
  877. RPC_ENTRY
  878. RpcMgmtStatsVectorFree (
  879. IN RPC_STATS_VECTOR ** StatsVector
  880. );
  881. /* server */
  882. RPCRTAPI
  883. RPC_STATUS
  884. RPC_ENTRY
  885. RpcMgmtInqStats (
  886. IN RPC_BINDING_HANDLE Binding,
  887. OUT RPC_STATS_VECTOR ** Statistics
  888. );
  889. /* server */
  890. RPCRTAPI
  891. RPC_STATUS
  892. RPC_ENTRY
  893. RpcMgmtIsServerListening (
  894. IN RPC_BINDING_HANDLE Binding
  895. );
  896. /* server */
  897. RPCRTAPI
  898. RPC_STATUS
  899. RPC_ENTRY
  900. RpcMgmtStopServerListening (
  901. IN RPC_BINDING_HANDLE Binding
  902. );
  903. /* server */
  904. RPCRTAPI
  905. RPC_STATUS
  906. RPC_ENTRY
  907. RpcMgmtWaitServerListen (
  908. void
  909. );
  910. /* server */
  911. RPCRTAPI
  912. RPC_STATUS
  913. RPC_ENTRY
  914. RpcMgmtSetServerStackSize (
  915. IN unsigned long ThreadStackSize
  916. );
  917. /* server */
  918. RPCRTAPI
  919. void
  920. RPC_ENTRY
  921. RpcSsDontSerializeContext (
  922. void
  923. );
  924. /* client */
  925. RPCRTAPI
  926. RPC_STATUS
  927. RPC_ENTRY
  928. RpcMgmtEnableIdleCleanup (
  929. void
  930. );
  931. RPCRTAPI
  932. RPC_STATUS
  933. RPC_ENTRY
  934. RpcMgmtInqIfIds (
  935. IN RPC_BINDING_HANDLE Binding,
  936. OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
  937. );
  938. RPCRTAPI
  939. RPC_STATUS
  940. RPC_ENTRY
  941. RpcIfIdVectorFree (
  942. IN OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
  943. );
  944. #ifdef RPC_UNICODE_SUPPORTED
  945. RPCRTAPI
  946. RPC_STATUS
  947. RPC_ENTRY
  948. RpcMgmtInqServerPrincNameA (
  949. IN RPC_BINDING_HANDLE Binding,
  950. IN unsigned long AuthnSvc,
  951. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
  952. );
  953. RPCRTAPI
  954. RPC_STATUS
  955. RPC_ENTRY
  956. RpcMgmtInqServerPrincNameW (
  957. IN RPC_BINDING_HANDLE Binding,
  958. IN unsigned long AuthnSvc,
  959. OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName
  960. );
  961. #ifdef UNICODE
  962. #define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
  963. #else /* UNICODE */
  964. #define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
  965. #endif /* UNICODE */
  966. #else /* RPC_UNICODE_SUPPORTED */
  967. RPCRTAPI
  968. RPC_STATUS
  969. RPC_ENTRY
  970. RpcMgmtInqServerPrincName (
  971. IN RPC_BINDING_HANDLE Binding,
  972. IN unsigned long AuthnSvc,
  973. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
  974. );
  975. #endif /* RPC_UNICODE_SUPPORTED */
  976. #ifdef RPC_UNICODE_SUPPORTED
  977. RPCRTAPI
  978. RPC_STATUS
  979. RPC_ENTRY
  980. RpcServerInqDefaultPrincNameA (
  981. IN unsigned long AuthnSvc,
  982. OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
  983. );
  984. RPCRTAPI
  985. RPC_STATUS
  986. RPC_ENTRY
  987. RpcServerInqDefaultPrincNameW (
  988. IN unsigned long AuthnSvc,
  989. OUT unsigned short __RPC_FAR * __RPC_FAR * PrincName
  990. );
  991. #ifdef UNICODE
  992. #define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
  993. #else /* UNICODE */
  994. #define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
  995. #endif /* UNICODE */
  996. #else /* RPC_UNICODE_SUPPORTED */
  997. RPCRTAPI
  998. RPC_STATUS
  999. RPC_ENTRY
  1000. RpcServerInqDefaultPrincName (
  1001. IN unsigned long AuthnSvc,
  1002. OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
  1003. );
  1004. #endif /* RPC_UNICODE_SUPPORTED */
  1005. /* client */
  1006. RPCRTAPI
  1007. RPC_STATUS
  1008. RPC_ENTRY
  1009. RpcEpResolveBinding (
  1010. IN RPC_BINDING_HANDLE Binding,
  1011. IN RPC_IF_HANDLE IfSpec
  1012. );
  1013. /* client */
  1014. #ifdef RPC_UNICODE_SUPPORTED
  1015. RPCRTAPI
  1016. RPC_STATUS
  1017. RPC_ENTRY
  1018. RpcNsBindingInqEntryNameA (
  1019. IN RPC_BINDING_HANDLE Binding,
  1020. IN unsigned long EntryNameSyntax,
  1021. OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
  1022. );
  1023. RPCRTAPI
  1024. RPC_STATUS
  1025. RPC_ENTRY
  1026. RpcNsBindingInqEntryNameW (
  1027. IN RPC_BINDING_HANDLE Binding,
  1028. IN unsigned long EntryNameSyntax,
  1029. OUT unsigned short __RPC_FAR * __RPC_FAR * EntryName
  1030. );
  1031. #ifdef UNICODE
  1032. #define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
  1033. #else /* UNICODE */
  1034. #define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
  1035. #endif /* UNICODE */
  1036. #else /* RPC_UNICODE_SUPPORTED */
  1037. RPCRTAPI
  1038. RPC_STATUS
  1039. RPC_ENTRY
  1040. RpcNsBindingInqEntryName (
  1041. IN RPC_BINDING_HANDLE Binding,
  1042. IN unsigned long EntryNameSyntax,
  1043. OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
  1044. );
  1045. #endif /* RPC_UNICODE_SUPPORTED */
  1046. typedef void __RPC_FAR * RPC_AUTH_IDENTITY_HANDLE;
  1047. typedef void __RPC_FAR * RPC_AUTHZ_HANDLE;
  1048. #define RPC_C_AUTHN_LEVEL_DEFAULT 0
  1049. #define RPC_C_AUTHN_LEVEL_NONE 1
  1050. #define RPC_C_AUTHN_LEVEL_CONNECT 2
  1051. #define RPC_C_AUTHN_LEVEL_CALL 3
  1052. #define RPC_C_AUTHN_LEVEL_PKT 4
  1053. #define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
  1054. #define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
  1055. #define RPC_C_IMP_LEVEL_DEFAULT 0
  1056. #define RPC_C_IMP_LEVEL_ANONYMOUS 1
  1057. #define RPC_C_IMP_LEVEL_IDENTIFY 2
  1058. #define RPC_C_IMP_LEVEL_IMPERSONATE 3
  1059. #define RPC_C_IMP_LEVEL_DELEGATE 4
  1060. #define RPC_C_QOS_IDENTITY_STATIC 0
  1061. #define RPC_C_QOS_IDENTITY_DYNAMIC 1
  1062. #define RPC_C_QOS_CAPABILITIES_DEFAULT 0x0
  1063. #define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 0x1
  1064. #define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC 0x2
  1065. #define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 0x4
  1066. #define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
  1067. #define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
  1068. #define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
  1069. #define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
  1070. #define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
  1071. #define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
  1072. #define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
  1073. #define RPC_C_AUTHN_NONE 0
  1074. #define RPC_C_AUTHN_DCE_PRIVATE 1
  1075. #define RPC_C_AUTHN_DCE_PUBLIC 2
  1076. #define RPC_C_AUTHN_DEC_PUBLIC 4
  1077. #define RPC_C_AUTHN_GSS_NEGOTIATE 9
  1078. #define RPC_C_AUTHN_WINNT 10
  1079. #define RPC_C_AUTHN_GSS_SCHANNEL 14
  1080. #define RPC_C_AUTHN_GSS_KERBEROS 16
  1081. #define RPC_C_AUTHN_DPA 17
  1082. #define RPC_C_AUTHN_MSN 18
  1083. #define RPC_C_AUTHN_DIGEST 21
  1084. #define RPC_C_AUTHN_MQ 100
  1085. #define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
  1086. #define RPC_C_NO_CREDENTIALS ((RPC_AUTH_IDENTITY_HANDLE) MAXUINT_PTR)
  1087. #define RPC_C_SECURITY_QOS_VERSION 1L
  1088. #define RPC_C_SECURITY_QOS_VERSION_1 1L
  1089. typedef struct _RPC_SECURITY_QOS {
  1090. unsigned long Version;
  1091. unsigned long Capabilities;
  1092. unsigned long IdentityTracking;
  1093. unsigned long ImpersonationType;
  1094. } RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
  1095. #ifndef _AUTH_IDENTITY_DEFINED
  1096. #define _AUTH_IDENTITY_DEFINED
  1097. #define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
  1098. #define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
  1099. typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
  1100. unsigned short __RPC_FAR *User;
  1101. unsigned long UserLength;
  1102. unsigned short __RPC_FAR *Domain;
  1103. unsigned long DomainLength;
  1104. unsigned short __RPC_FAR *Password;
  1105. unsigned long PasswordLength;
  1106. unsigned long Flags;
  1107. } SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
  1108. typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
  1109. unsigned char __RPC_FAR *User;
  1110. unsigned long UserLength;
  1111. unsigned char __RPC_FAR *Domain;
  1112. unsigned long DomainLength;
  1113. unsigned char __RPC_FAR *Password;
  1114. unsigned long PasswordLength;
  1115. unsigned long Flags;
  1116. } SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
  1117. #ifdef UNICODE
  1118. #define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
  1119. #define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
  1120. #define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
  1121. #else // UNICODE
  1122. #define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
  1123. #define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
  1124. #define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
  1125. #endif // UNICODE
  1126. #define RPC_C_SECURITY_QOS_VERSION_2 2L
  1127. #define RPC_C_AUTHN_INFO_TYPE_HTTP 1
  1128. #define RPC_C_HTTP_AUTHN_TARGET_SERVER 1
  1129. #define RPC_C_HTTP_AUTHN_TARGET_PROXY 2
  1130. #define RPC_C_HTTP_AUTHN_SCHEME_BASIC 0x00000001
  1131. #define RPC_C_HTTP_AUTHN_SCHEME_NTLM 0x00000002
  1132. #define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT 0x00000004
  1133. #define RPC_C_HTTP_AUTHN_SCHEME_DIGEST 0x00000008
  1134. #define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x00000010
  1135. #define RPC_C_HTTP_FLAG_USE_SSL 1
  1136. #define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 2
  1137. typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W
  1138. {
  1139. SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
  1140. unsigned long Flags;
  1141. unsigned long AuthenticationTarget;
  1142. unsigned long NumberOfAuthnSchemes;
  1143. unsigned long *AuthnSchemes;
  1144. unsigned short __RPC_FAR *ServerCertificateSubject;
  1145. } RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W;
  1146. typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A
  1147. {
  1148. SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
  1149. unsigned long Flags;
  1150. unsigned long AuthenticationTarget;
  1151. unsigned long NumberOfAuthnSchemes;
  1152. unsigned long *AuthnSchemes;
  1153. unsigned char __RPC_FAR *ServerCertificateSubject;
  1154. } RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A;
  1155. typedef struct _RPC_SECURITY_QOS_V2_W {
  1156. unsigned long Version;
  1157. unsigned long Capabilities;
  1158. unsigned long IdentityTracking;
  1159. unsigned long ImpersonationType;
  1160. unsigned long AdditionalSecurityInfoType;
  1161. union
  1162. {
  1163. RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
  1164. } u;
  1165. } RPC_SECURITY_QOS_V2_W, *PRPC_SECURITY_QOS_V2_W;
  1166. typedef struct _RPC_SECURITY_QOS_V2_A {
  1167. unsigned long Version;
  1168. unsigned long Capabilities;
  1169. unsigned long IdentityTracking;
  1170. unsigned long ImpersonationType;
  1171. unsigned long AdditionalSecurityInfoType;
  1172. union
  1173. {
  1174. RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
  1175. } u;
  1176. } RPC_SECURITY_QOS_V2_A, *PRPC_SECURITY_QOS_V2_A;
  1177. #endif //_AUTH_IDENTITY_DEFINED
  1178. #ifdef UNICODE
  1179. #define RPC_SECURITY_QOS_V2 RPC_SECURITY_QOS_V2_W
  1180. #define PRPC_SECURITY_QOS_V2 PRPC_SECURITY_QOS_V2_W
  1181. #define _RPC_SECURITY_QOS_V2 _RPC_SECURITY_QOS_V2_W
  1182. #define RPC_HTTP_TRANSPORT_CREDENTIALS RPC_HTTP_TRANSPORT_CREDENTIALS_W
  1183. #define PRPC_HTTP_TRANSPORT_CREDENTIALS PRPC_HTTP_TRANSPORT_CREDENTIALS_W
  1184. #define _RPC_HTTP_TRANSPORT_CREDENTIALS _RPC_HTTP_TRANSPORT_CREDENTIALS_W
  1185. #else // UNICODE
  1186. #define RPC_SECURITY_QOS_V2 RPC_SECURITY_QOS_V2_A
  1187. #define PRPC_SECURITY_QOS_V2 PRPC_SECURITY_QOS_V2_A
  1188. #define _RPC_SECURITY_QOS_V2 _RPC_SECURITY_QOS_V2_A
  1189. #define RPC_HTTP_TRANSPORT_CREDENTIALS RPC_HTTP_TRANSPORT_CREDENTIALS_A
  1190. #define PRPC_HTTP_TRANSPORT_CREDENTIALS PRPC_HTTP_TRANSPORT_CREDENTIALS_A
  1191. #define _RPC_HTTP_TRANSPORT_CREDENTIALS _RPC_HTTP_TRANSPORT_CREDENTIALS_A
  1192. #endif // UNICODE
  1193. typedef RPC_STATUS
  1194. (__RPC_USER * RPC_NEW_HTTP_PROXY_CHANNEL) (
  1195. IN unsigned short __RPC_FAR *ServerName,
  1196. IN unsigned short __RPC_FAR *ServerPort,
  1197. IN unsigned char __RPC_FAR *RemoteUser,
  1198. OUT unsigned short __RPC_FAR **NewServerName
  1199. );
  1200. typedef void
  1201. (__RPC_USER * RPC_HTTP_PROXY_FREE_STRING) (
  1202. IN unsigned short __RPC_FAR *ServerName
  1203. );
  1204. #define RPC_C_AUTHZ_NONE 0
  1205. #define RPC_C_AUTHZ_NAME 1
  1206. #define RPC_C_AUTHZ_DCE 2
  1207. #define RPC_C_AUTHZ_DEFAULT 0xffffffff
  1208. RPCRTAPI
  1209. RPC_STATUS
  1210. RPC_ENTRY
  1211. RpcImpersonateClient (
  1212. IN RPC_BINDING_HANDLE BindingHandle OPTIONAL
  1213. );
  1214. RPCRTAPI
  1215. RPC_STATUS
  1216. RPC_ENTRY
  1217. RpcRevertToSelfEx (
  1218. IN RPC_BINDING_HANDLE BindingHandle OPTIONAL
  1219. );
  1220. RPCRTAPI
  1221. RPC_STATUS
  1222. RPC_ENTRY
  1223. RpcRevertToSelf (
  1224. );
  1225. #ifdef RPC_UNICODE_SUPPORTED
  1226. RPCRTAPI
  1227. RPC_STATUS
  1228. RPC_ENTRY
  1229. RpcBindingInqAuthClientA (
  1230. IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
  1231. OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
  1232. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1233. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1234. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1235. OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
  1236. );
  1237. RPCRTAPI
  1238. RPC_STATUS
  1239. RPC_ENTRY
  1240. RpcBindingInqAuthClientW (
  1241. IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
  1242. OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
  1243. OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1244. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1245. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1246. OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
  1247. );
  1248. RPCRTAPI
  1249. RPC_STATUS
  1250. RPC_ENTRY
  1251. RpcBindingInqAuthClientExA (
  1252. IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
  1253. OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
  1254. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1255. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1256. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1257. OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
  1258. IN unsigned long Flags
  1259. );
  1260. RPCRTAPI
  1261. RPC_STATUS
  1262. RPC_ENTRY
  1263. RpcBindingInqAuthClientExW (
  1264. IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
  1265. OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
  1266. OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1267. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1268. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1269. OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
  1270. IN unsigned long Flags
  1271. );
  1272. RPCRTAPI
  1273. RPC_STATUS
  1274. RPC_ENTRY
  1275. RpcBindingInqAuthInfoA (
  1276. IN RPC_BINDING_HANDLE Binding,
  1277. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1278. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1279. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1280. OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
  1281. OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
  1282. );
  1283. RPCRTAPI
  1284. RPC_STATUS
  1285. RPC_ENTRY
  1286. RpcBindingInqAuthInfoW (
  1287. IN RPC_BINDING_HANDLE Binding,
  1288. OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1289. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1290. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1291. OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
  1292. OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
  1293. );
  1294. RPCRTAPI
  1295. RPC_STATUS
  1296. RPC_ENTRY
  1297. RpcBindingSetAuthInfoA (
  1298. IN RPC_BINDING_HANDLE Binding,
  1299. IN unsigned char __RPC_FAR * ServerPrincName,
  1300. IN unsigned long AuthnLevel,
  1301. IN unsigned long AuthnSvc,
  1302. IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
  1303. IN unsigned long AuthzSvc
  1304. );
  1305. RPCRTAPI
  1306. RPC_STATUS
  1307. RPC_ENTRY
  1308. RpcBindingSetAuthInfoExA (
  1309. IN RPC_BINDING_HANDLE Binding,
  1310. IN unsigned char __RPC_FAR * ServerPrincName,
  1311. IN unsigned long AuthnLevel,
  1312. IN unsigned long AuthnSvc,
  1313. IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
  1314. IN unsigned long AuthzSvc,
  1315. IN RPC_SECURITY_QOS *SecurityQos OPTIONAL
  1316. );
  1317. RPCRTAPI
  1318. RPC_STATUS
  1319. RPC_ENTRY
  1320. RpcBindingSetAuthInfoW (
  1321. IN RPC_BINDING_HANDLE Binding,
  1322. IN unsigned short __RPC_FAR * ServerPrincName,
  1323. IN unsigned long AuthnLevel,
  1324. IN unsigned long AuthnSvc,
  1325. IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
  1326. IN unsigned long AuthzSvc
  1327. );
  1328. RPCRTAPI
  1329. RPC_STATUS
  1330. RPC_ENTRY
  1331. RpcBindingSetAuthInfoExW (
  1332. IN RPC_BINDING_HANDLE Binding,
  1333. IN unsigned short __RPC_FAR * ServerPrincName,
  1334. IN unsigned long AuthnLevel,
  1335. IN unsigned long AuthnSvc,
  1336. IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
  1337. IN unsigned long AuthzSvc, OPTIONAL
  1338. IN RPC_SECURITY_QOS *SecurityQOS
  1339. );
  1340. RPCRTAPI
  1341. RPC_STATUS
  1342. RPC_ENTRY
  1343. RpcBindingInqAuthInfoExA (
  1344. IN RPC_BINDING_HANDLE Binding,
  1345. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1346. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1347. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1348. OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
  1349. OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
  1350. IN unsigned long RpcQosVersion,
  1351. OUT RPC_SECURITY_QOS *SecurityQOS
  1352. );
  1353. RPCRTAPI
  1354. RPC_STATUS
  1355. RPC_ENTRY
  1356. RpcBindingInqAuthInfoExW (
  1357. IN RPC_BINDING_HANDLE Binding,
  1358. OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1359. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1360. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1361. OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
  1362. OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL,
  1363. IN unsigned long RpcQosVersion,
  1364. OUT RPC_SECURITY_QOS *SecurityQOS
  1365. );
  1366. typedef void
  1367. (__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
  1368. IN void __RPC_FAR * Arg,
  1369. IN unsigned short __RPC_FAR * ServerPrincName,
  1370. IN unsigned long KeyVer,
  1371. OUT void __RPC_FAR * __RPC_FAR * Key,
  1372. OUT RPC_STATUS __RPC_FAR * Status
  1373. );
  1374. RPCRTAPI
  1375. RPC_STATUS
  1376. RPC_ENTRY
  1377. RpcServerRegisterAuthInfoA (
  1378. IN unsigned char __RPC_FAR * ServerPrincName,
  1379. IN unsigned long AuthnSvc,
  1380. IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
  1381. IN void __RPC_FAR * Arg OPTIONAL
  1382. );
  1383. RPCRTAPI
  1384. RPC_STATUS
  1385. RPC_ENTRY
  1386. RpcServerRegisterAuthInfoW (
  1387. IN unsigned short __RPC_FAR * ServerPrincName,
  1388. IN unsigned long AuthnSvc,
  1389. IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
  1390. IN void __RPC_FAR * Arg OPTIONAL
  1391. );
  1392. #ifdef UNICODE
  1393. #define RpcBindingInqAuthClient RpcBindingInqAuthClientW
  1394. #define RpcBindingInqAuthClientEx RpcBindingInqAuthClientExW
  1395. #define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
  1396. #define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
  1397. #define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
  1398. #define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
  1399. #define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
  1400. #else /* UNICODE */
  1401. #define RpcBindingInqAuthClient RpcBindingInqAuthClientA
  1402. #define RpcBindingInqAuthClientEx RpcBindingInqAuthClientExA
  1403. #define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
  1404. #define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
  1405. #define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
  1406. #define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
  1407. #define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
  1408. #endif /* UNICODE */
  1409. #else /* RPC_UNICODE_SUPPORTED */
  1410. RPCRTAPI
  1411. RPC_STATUS
  1412. RPC_ENTRY
  1413. RpcBindingInqAuthClient (
  1414. IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
  1415. OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
  1416. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1417. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1418. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1419. OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
  1420. );
  1421. RPCRTAPI
  1422. RPC_STATUS
  1423. RPC_ENTRY
  1424. RpcBindingInqAuthClientEx (
  1425. IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
  1426. OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
  1427. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1428. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1429. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1430. OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
  1431. IN unsigned long Flags
  1432. );
  1433. RPCRTAPI
  1434. RPC_STATUS
  1435. RPC_ENTRY
  1436. RpcBindingInqAuthInfo (
  1437. IN RPC_BINDING_HANDLE Binding,
  1438. OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
  1439. OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
  1440. OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
  1441. OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
  1442. OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
  1443. );
  1444. RPCRTAPI
  1445. RPC_STATUS
  1446. RPC_ENTRY
  1447. RpcBindingSetAuthInfo (
  1448. IN RPC_BINDING_HANDLE Binding,
  1449. IN unsigned char __RPC_FAR * ServerPrincName,
  1450. IN unsigned long AuthnLevel,
  1451. IN unsigned long AuthnSvc,
  1452. IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
  1453. IN unsigned long AuthzSvc
  1454. );
  1455. typedef void
  1456. (__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
  1457. IN void __RPC_FAR * Arg,
  1458. IN unsigned char __RPC_FAR * ServerPrincName,
  1459. IN unsigned long KeyVer,
  1460. OUT void __RPC_FAR * __RPC_FAR * Key,
  1461. OUT RPC_STATUS __RPC_FAR * Status
  1462. );
  1463. RPCRTAPI
  1464. RPC_STATUS
  1465. RPC_ENTRY
  1466. RpcServerRegisterAuthInfo (
  1467. IN unsigned char __RPC_FAR * ServerPrincName,
  1468. IN unsigned long AuthnSvc,
  1469. IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
  1470. IN void __RPC_FAR * Arg OPTIONAL
  1471. );
  1472. #endif /* RPC_UNICODE_SUPPORTED */
  1473. #if !defined(_M_IA64)
  1474. typedef struct {
  1475. unsigned char __RPC_FAR * UserName;
  1476. unsigned char __RPC_FAR * ComputerName;
  1477. unsigned short Privilege;
  1478. unsigned long AuthFlags;
  1479. } RPC_CLIENT_INFORMATION1, __RPC_FAR * PRPC_CLIENT_INFORMATION1;
  1480. #endif
  1481. RPCRTAPI
  1482. RPC_STATUS
  1483. RPC_ENTRY
  1484. RpcBindingServerFromClient (
  1485. IN RPC_BINDING_HANDLE ClientBinding,
  1486. OUT RPC_BINDING_HANDLE __RPC_FAR * ServerBinding
  1487. );
  1488. RPCRTAPI
  1489. DECLSPEC_NORETURN
  1490. void
  1491. RPC_ENTRY
  1492. RpcRaiseException (
  1493. IN RPC_STATUS exception
  1494. );
  1495. RPCRTAPI
  1496. RPC_STATUS
  1497. RPC_ENTRY
  1498. RpcTestCancel(
  1499. );
  1500. RPCRTAPI
  1501. RPC_STATUS
  1502. RPC_ENTRY
  1503. RpcServerTestCancel (
  1504. IN RPC_BINDING_HANDLE BindingHandle OPTIONAL
  1505. );
  1506. RPCRTAPI
  1507. RPC_STATUS
  1508. RPC_ENTRY
  1509. RpcCancelThread(
  1510. IN void * Thread
  1511. );
  1512. RPCRTAPI
  1513. RPC_STATUS
  1514. RPC_ENTRY
  1515. RpcCancelThreadEx(
  1516. IN void * Thread,
  1517. IN long Timeout
  1518. );
  1519. /* client/server */
  1520. RPCRTAPI
  1521. RPC_STATUS
  1522. RPC_ENTRY
  1523. UuidCreate (
  1524. OUT UUID __RPC_FAR * Uuid
  1525. );
  1526. /* client/server */
  1527. RPCRTAPI
  1528. RPC_STATUS
  1529. RPC_ENTRY
  1530. UuidCreateSequential (
  1531. OUT UUID __RPC_FAR * Uuid
  1532. );
  1533. #ifdef RPC_UNICODE_SUPPORTED
  1534. /* client/server */
  1535. RPCRTAPI
  1536. RPC_STATUS
  1537. RPC_ENTRY
  1538. UuidToStringA (
  1539. IN UUID __RPC_FAR * Uuid,
  1540. OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
  1541. );
  1542. /* client/server */
  1543. RPCRTAPI
  1544. RPC_STATUS
  1545. RPC_ENTRY
  1546. UuidFromStringA (
  1547. IN unsigned char __RPC_FAR * StringUuid,
  1548. OUT UUID __RPC_FAR * Uuid
  1549. );
  1550. /* client/server */
  1551. RPCRTAPI
  1552. RPC_STATUS
  1553. RPC_ENTRY
  1554. UuidToStringW (
  1555. IN UUID __RPC_FAR * Uuid,
  1556. OUT unsigned short __RPC_FAR * __RPC_FAR * StringUuid
  1557. );
  1558. /* client/server */
  1559. RPCRTAPI
  1560. RPC_STATUS
  1561. RPC_ENTRY
  1562. UuidFromStringW (
  1563. IN unsigned short __RPC_FAR * StringUuid,
  1564. OUT UUID __RPC_FAR * Uuid
  1565. );
  1566. #ifdef UNICODE
  1567. #define UuidFromString UuidFromStringW
  1568. #define UuidToString UuidToStringW
  1569. #else /* UNICODE */
  1570. #define UuidFromString UuidFromStringA
  1571. #define UuidToString UuidToStringA
  1572. #endif /* UNICODE */
  1573. #else /* RPC_UNICODE_SUPPORTED */
  1574. /* client/server */
  1575. RPCRTAPI
  1576. RPC_STATUS
  1577. RPC_ENTRY
  1578. UuidToString (
  1579. IN UUID __RPC_FAR * Uuid,
  1580. OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
  1581. );
  1582. /* client/server */
  1583. RPCRTAPI
  1584. RPC_STATUS
  1585. RPC_ENTRY
  1586. UuidFromString (
  1587. IN unsigned char __RPC_FAR * StringUuid,
  1588. OUT UUID __RPC_FAR * Uuid
  1589. );
  1590. #endif /* RPC_UNICODE_SUPPORTED */
  1591. RPCRTAPI
  1592. signed int
  1593. RPC_ENTRY
  1594. UuidCompare (
  1595. IN UUID __RPC_FAR * Uuid1,
  1596. IN UUID __RPC_FAR * Uuid2,
  1597. OUT RPC_STATUS __RPC_FAR * Status
  1598. );
  1599. RPCRTAPI
  1600. RPC_STATUS
  1601. RPC_ENTRY
  1602. UuidCreateNil (
  1603. OUT UUID __RPC_FAR * NilUuid
  1604. );
  1605. RPCRTAPI
  1606. int
  1607. RPC_ENTRY
  1608. UuidEqual (
  1609. IN UUID __RPC_FAR * Uuid1,
  1610. IN UUID __RPC_FAR * Uuid2,
  1611. OUT RPC_STATUS __RPC_FAR * Status
  1612. );
  1613. RPCRTAPI
  1614. unsigned short
  1615. RPC_ENTRY
  1616. UuidHash (
  1617. IN UUID __RPC_FAR * Uuid,
  1618. OUT RPC_STATUS __RPC_FAR * Status
  1619. );
  1620. RPCRTAPI
  1621. int
  1622. RPC_ENTRY
  1623. UuidIsNil (
  1624. IN UUID __RPC_FAR * Uuid,
  1625. OUT RPC_STATUS __RPC_FAR * Status
  1626. );
  1627. #ifdef RPC_UNICODE_SUPPORTED
  1628. RPCRTAPI
  1629. RPC_STATUS
  1630. RPC_ENTRY
  1631. RpcEpRegisterNoReplaceA (
  1632. IN RPC_IF_HANDLE IfSpec,
  1633. IN RPC_BINDING_VECTOR * BindingVector,
  1634. IN UUID_VECTOR * UuidVector OPTIONAL,
  1635. IN unsigned char * Annotation
  1636. );
  1637. RPCRTAPI
  1638. RPC_STATUS
  1639. RPC_ENTRY
  1640. RpcEpRegisterNoReplaceW (
  1641. IN RPC_IF_HANDLE IfSpec,
  1642. IN RPC_BINDING_VECTOR * BindingVector,
  1643. IN UUID_VECTOR * UuidVector OPTIONAL,
  1644. IN unsigned short * Annotation
  1645. );
  1646. RPCRTAPI
  1647. RPC_STATUS
  1648. RPC_ENTRY
  1649. RpcEpRegisterA (
  1650. IN RPC_IF_HANDLE IfSpec,
  1651. IN RPC_BINDING_VECTOR * BindingVector,
  1652. IN UUID_VECTOR * UuidVector OPTIONAL,
  1653. IN unsigned char * Annotation
  1654. );
  1655. RPCRTAPI
  1656. RPC_STATUS
  1657. RPC_ENTRY
  1658. RpcEpRegisterW (
  1659. IN RPC_IF_HANDLE IfSpec,
  1660. IN RPC_BINDING_VECTOR * BindingVector,
  1661. IN UUID_VECTOR * UuidVector OPTIONAL,
  1662. IN unsigned short * Annotation
  1663. );
  1664. #ifdef UNICODE
  1665. #define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
  1666. #define RpcEpRegister RpcEpRegisterW
  1667. #else /* UNICODE */
  1668. #define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
  1669. #define RpcEpRegister RpcEpRegisterA
  1670. #endif /* UNICODE */
  1671. #else /* RPC_UNICODE_SUPPORTED */
  1672. RPCRTAPI
  1673. RPC_STATUS
  1674. RPC_ENTRY
  1675. RpcEpRegisterNoReplace (
  1676. IN RPC_IF_HANDLE IfSpec,
  1677. IN RPC_BINDING_VECTOR * BindingVector,
  1678. IN UUID_VECTOR * UuidVector OPTIONAL,
  1679. IN unsigned char * Annotation
  1680. );
  1681. RPCRTAPI
  1682. RPC_STATUS
  1683. RPC_ENTRY
  1684. RpcEpRegister (
  1685. IN RPC_IF_HANDLE IfSpec,
  1686. IN RPC_BINDING_VECTOR * BindingVector,
  1687. IN UUID_VECTOR * UuidVector OPTIONAL,
  1688. IN unsigned char * Annotation
  1689. );
  1690. #endif /* RPC_UNICODE_SUPPORTED */
  1691. RPCRTAPI
  1692. RPC_STATUS
  1693. RPC_ENTRY
  1694. RpcEpUnregister(
  1695. IN RPC_IF_HANDLE IfSpec,
  1696. IN RPC_BINDING_VECTOR * BindingVector,
  1697. IN UUID_VECTOR * UuidVector
  1698. );
  1699. #ifdef RPC_UNICODE_SUPPORTED
  1700. RPCRTAPI
  1701. RPC_STATUS
  1702. RPC_ENTRY
  1703. DceErrorInqTextA (
  1704. IN RPC_STATUS RpcStatus,
  1705. OUT unsigned char __RPC_FAR * ErrorText
  1706. );
  1707. RPCRTAPI
  1708. RPC_STATUS
  1709. RPC_ENTRY
  1710. DceErrorInqTextW (
  1711. IN RPC_STATUS RpcStatus,
  1712. OUT unsigned short __RPC_FAR * ErrorText
  1713. );
  1714. #ifdef UNICODE
  1715. #define DceErrorInqText DceErrorInqTextW
  1716. #else /* UNICODE */
  1717. #define DceErrorInqText DceErrorInqTextA
  1718. #endif /* UNICODE */
  1719. #else /* RPC_UNICODE_SUPPORTED */
  1720. RPCRTAPI
  1721. RPC_STATUS
  1722. RPC_ENTRY
  1723. DceErrorInqText (
  1724. IN RPC_STATUS RpcStatus,
  1725. OUT unsigned char __RPC_FAR * ErrorText
  1726. );
  1727. #endif /* RPC_UNICODE_SUPPORTED */
  1728. #define DCE_C_ERROR_STRING_LEN 256
  1729. typedef I_RPC_HANDLE * RPC_EP_INQ_HANDLE;
  1730. #define RPC_C_EP_ALL_ELTS 0
  1731. #define RPC_C_EP_MATCH_BY_IF 1
  1732. #define RPC_C_EP_MATCH_BY_OBJ 2
  1733. #define RPC_C_EP_MATCH_BY_BOTH 3
  1734. #define RPC_C_VERS_ALL 1
  1735. #define RPC_C_VERS_COMPATIBLE 2
  1736. #define RPC_C_VERS_EXACT 3
  1737. #define RPC_C_VERS_MAJOR_ONLY 4
  1738. #define RPC_C_VERS_UPTO 5
  1739. RPCRTAPI
  1740. RPC_STATUS
  1741. RPC_ENTRY
  1742. RpcMgmtEpEltInqBegin (
  1743. IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
  1744. IN unsigned long InquiryType,
  1745. IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
  1746. IN unsigned long VersOption OPTIONAL,
  1747. IN UUID __RPC_FAR * ObjectUuid OPTIONAL,
  1748. OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
  1749. );
  1750. RPCRTAPI
  1751. RPC_STATUS
  1752. RPC_ENTRY
  1753. RpcMgmtEpEltInqDone (
  1754. IN OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
  1755. );
  1756. #ifdef RPC_UNICODE_SUPPORTED
  1757. RPCRTAPI
  1758. RPC_STATUS
  1759. RPC_ENTRY
  1760. RpcMgmtEpEltInqNextA (
  1761. IN RPC_EP_INQ_HANDLE InquiryContext,
  1762. OUT RPC_IF_ID __RPC_FAR * IfId,
  1763. OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
  1764. OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
  1765. OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
  1766. );
  1767. RPCRTAPI
  1768. RPC_STATUS
  1769. RPC_ENTRY
  1770. RpcMgmtEpEltInqNextW (
  1771. IN RPC_EP_INQ_HANDLE InquiryContext,
  1772. OUT RPC_IF_ID __RPC_FAR * IfId,
  1773. OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
  1774. OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
  1775. OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
  1776. );
  1777. #ifdef UNICODE
  1778. #define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
  1779. #else /* UNICODE */
  1780. #define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
  1781. #endif /* UNICODE */
  1782. #else /* RPC_UNICODE_SUPPORTED */
  1783. RPCRTAPI
  1784. RPC_STATUS
  1785. RPC_ENTRY
  1786. RpcMgmtEpEltInqNext (
  1787. IN RPC_EP_INQ_HANDLE InquiryContext,
  1788. OUT RPC_IF_ID __RPC_FAR * IfId,
  1789. OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
  1790. OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
  1791. );
  1792. #endif /* RPC_UNICODE_SUPPORTED */
  1793. RPCRTAPI
  1794. RPC_STATUS
  1795. RPC_ENTRY
  1796. RpcMgmtEpUnregister (
  1797. IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
  1798. IN RPC_IF_ID __RPC_FAR * IfId,
  1799. IN RPC_BINDING_HANDLE Binding,
  1800. IN UUID __RPC_FAR * ObjectUuid OPTIONAL
  1801. );
  1802. typedef int
  1803. (__RPC_API * RPC_MGMT_AUTHORIZATION_FN) (
  1804. IN RPC_BINDING_HANDLE ClientBinding,
  1805. IN unsigned long RequestedMgmtOperation,
  1806. OUT RPC_STATUS __RPC_FAR * Status
  1807. );
  1808. #define RPC_C_MGMT_INQ_IF_IDS 0
  1809. #define RPC_C_MGMT_INQ_PRINC_NAME 1
  1810. #define RPC_C_MGMT_INQ_STATS 2
  1811. #define RPC_C_MGMT_IS_SERVER_LISTEN 3
  1812. #define RPC_C_MGMT_STOP_SERVER_LISTEN 4
  1813. RPCRTAPI
  1814. RPC_STATUS
  1815. RPC_ENTRY
  1816. RpcMgmtSetAuthorizationFn (
  1817. IN RPC_MGMT_AUTHORIZATION_FN AuthorizationFn
  1818. );
  1819. #define RPC_C_PARM_MAX_PACKET_LENGTH 1
  1820. #define RPC_C_PARM_BUFFER_LENGTH 2
  1821. #define RPC_IF_AUTOLISTEN 0x0001
  1822. #define RPC_IF_OLE 0x0002
  1823. #define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004
  1824. #define RPC_IF_ALLOW_SECURE_ONLY 0x0008
  1825. #include <rpcdcep.h>
  1826. #ifdef __cplusplus
  1827. }
  1828. #endif
  1829. #endif /* __RPCDCE_H__ */