home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / RPCDCE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  44.6 KB  |  1,956 lines

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