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

  1. /*++
  2.  
  3. Copyright 1991-1998 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     rpcdcep.h
  8.  
  9. Abstract:
  10.  
  11.     This module contains the private RPC runtime APIs for use by the
  12.     stubs and by support libraries.  Applications must not call these
  13.     routines.
  14.  
  15. --*/
  16.  
  17. #ifndef __RPCDCEP_H__
  18. #pragma option push -b -a8 -pc -A- /*P_O_Push_S*/
  19. #define __RPCDCEP_H__
  20.  
  21. // Set the packing level for RPC structures for Dos and Windows.
  22.  
  23. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  24. #pragma pack(2)
  25. #endif
  26.  
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30.  
  31. typedef struct _RPC_VERSION {
  32.     unsigned short MajorVersion;
  33.     unsigned short MinorVersion;
  34. } RPC_VERSION;
  35.  
  36. typedef struct _RPC_SYNTAX_IDENTIFIER {
  37.     GUID SyntaxGUID;
  38.     RPC_VERSION SyntaxVersion;
  39. } RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
  40.  
  41. typedef struct _RPC_MESSAGE
  42. {
  43.     RPC_BINDING_HANDLE Handle;
  44.     unsigned long DataRepresentation;
  45.     void __RPC_FAR * Buffer;
  46.     unsigned int BufferLength;
  47.     unsigned int ProcNum;
  48.     PRPC_SYNTAX_IDENTIFIER TransferSyntax;
  49.     void __RPC_FAR * RpcInterfaceInformation;
  50.     void __RPC_FAR * ReservedForRuntime;
  51.     RPC_MGR_EPV __RPC_FAR * ManagerEpv;
  52.     void __RPC_FAR * ImportContext;
  53.     unsigned long RpcFlags;
  54. } RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
  55.  
  56.  
  57. typedef RPC_STATUS
  58. RPC_ENTRY RPC_FORWARD_FUNCTION(
  59.                        IN UUID             __RPC_FAR * InterfaceId,
  60.                        IN RPC_VERSION      __RPC_FAR * InterfaceVersion,
  61.                        IN UUID             __RPC_FAR * ObjectId,
  62.                        IN unsigned char         __RPC_FAR * Rpcpro,
  63.                        IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
  64.  
  65. /*
  66.  * Types of function calls for datagram rpc
  67.  */
  68.  
  69. #define RPC_NCA_FLAGS_DEFAULT       0x00000000  /* 0b000...000 */
  70. #define RPC_NCA_FLAGS_IDEMPOTENT    0x00000001  /* 0b000...001 */
  71. #define RPC_NCA_FLAGS_BROADCAST     0x00000002  /* 0b000...010 */
  72. #define RPC_NCA_FLAGS_MAYBE         0x00000004  /* 0b000...100 */
  73.  
  74. #define RPC_BUFFER_COMPLETE         0x00001000 /* used by pipes */
  75. #define RPC_BUFFER_PARTIAL          0x00002000 /* used by pipes */
  76. #define RPC_BUFFER_EXTRA            0x00004000 /* used by pipes */
  77. #define RPC_BUFFER_ASYNC            0x00008000 /* used by async rpc */
  78. #define RPC_BUFFER_NONOTIFY         0x00010000 /* used by async pipes */
  79.  
  80. #define RPCFLG_MESSAGE              0x01000000UL
  81. #define RPCFLG_AUTO_COMPLETE        0x08000000UL
  82. #define RPCFLG_LOCAL_CALL           0x10000000UL
  83. #define RPCFLG_INPUT_SYNCHRONOUS    0x20000000UL
  84. #define RPCFLG_ASYNCHRONOUS         0x40000000UL
  85. #define RPCFLG_NON_NDR              0x80000000UL
  86.  
  87.  
  88. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  89. #define RPC_FLAGS_VALID_BIT 0x8000
  90. #endif
  91.  
  92. #if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
  93. #define RPC_FLAGS_VALID_BIT 0x00008000
  94. #endif
  95.  
  96. typedef
  97. void
  98. (__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
  99.     IN OUT PRPC_MESSAGE Message
  100.     );
  101.  
  102. typedef struct {
  103.     unsigned int DispatchTableCount;
  104.     RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
  105.     int Reserved;
  106. } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
  107.  
  108. typedef struct _RPC_PROTSEQ_ENDPOINT
  109. {
  110.     unsigned char __RPC_FAR * RpcProtocolSequence;
  111.     unsigned char __RPC_FAR * Endpoint;
  112. } RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
  113.  
  114. /*
  115. Both of these types MUST start with the InterfaceId and TransferSyntax.
  116. Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
  117. */
  118. #define NT351_INTERFACE_SIZE 0x40
  119. #define RPC_INTERFACE_HAS_PIPES           0x0001
  120.  
  121. typedef struct _RPC_SERVER_INTERFACE
  122. {
  123.     unsigned int Length;
  124.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  125.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  126.     PRPC_DISPATCH_TABLE DispatchTable;
  127.     unsigned int RpcProtseqEndpointCount;
  128.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  129.     RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
  130.     void const __RPC_FAR *InterpreterInfo;
  131.     unsigned int Flags ;
  132. } RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
  133.  
  134. typedef struct _RPC_CLIENT_INTERFACE
  135. {
  136.     unsigned int Length;
  137.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  138.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  139.     PRPC_DISPATCH_TABLE DispatchTable;
  140.     unsigned int RpcProtseqEndpointCount;
  141.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  142.     unsigned long Reserved;
  143.     void const __RPC_FAR * InterpreterInfo;
  144.     unsigned int Flags ;
  145. } RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
  146.  
  147. RPCRTAPI
  148. RPC_STATUS
  149. RPC_ENTRY
  150. I_RpcGetBuffer (
  151.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  152.     );
  153.  
  154. RPCRTAPI
  155. RPC_STATUS
  156. RPC_ENTRY
  157. I_RpcSendReceive (
  158.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  159.     );
  160.  
  161. RPCRTAPI
  162. RPC_STATUS
  163. RPC_ENTRY
  164. I_RpcFreeBuffer (
  165.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  166.     );
  167.  
  168. RPCRTAPI
  169. RPC_STATUS
  170. RPC_ENTRY
  171. I_RpcSend (
  172.     IN OUT PRPC_MESSAGE Message
  173.     ) ;
  174.  
  175. RPCRTAPI
  176. RPC_STATUS
  177. RPC_ENTRY
  178. I_RpcReceive (
  179.     IN OUT PRPC_MESSAGE Message,
  180.     IN unsigned int Size
  181.     ) ;
  182.  
  183. RPCRTAPI
  184. RPC_STATUS
  185. RPC_ENTRY
  186. I_RpcFreePipeBuffer (
  187.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  188.     ) ;
  189.  
  190. RPCRTAPI
  191. RPC_STATUS
  192. RPC_ENTRY
  193. I_RpcReallocPipeBuffer (
  194.     IN PRPC_MESSAGE Message,
  195.     IN unsigned int NewSize
  196.     ) ;
  197.  
  198. typedef void * I_RPC_MUTEX;
  199.  
  200. RPCRTAPI
  201. void
  202. RPC_ENTRY
  203. I_RpcRequestMutex (
  204.     IN OUT I_RPC_MUTEX * Mutex
  205.     );
  206.  
  207. RPCRTAPI
  208. void
  209. RPC_ENTRY
  210. I_RpcClearMutex (
  211.     IN I_RPC_MUTEX Mutex
  212.     );
  213.  
  214. RPCRTAPI
  215. void
  216. RPC_ENTRY
  217. I_RpcDeleteMutex (
  218.     IN I_RPC_MUTEX Mutex
  219.     );
  220.  
  221. RPCRTAPI
  222. void __RPC_FAR *
  223. RPC_ENTRY
  224. I_RpcAllocate (
  225.     IN unsigned int Size
  226.     );
  227.  
  228. RPCRTAPI
  229. void
  230. RPC_ENTRY
  231. I_RpcFree (
  232.     IN void __RPC_FAR * Object
  233.     );
  234.  
  235. RPCRTAPI
  236. void
  237. RPC_ENTRY
  238. I_RpcPauseExecution (
  239.     IN unsigned long Milliseconds
  240.     );
  241.  
  242. typedef
  243. void
  244. (__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
  245.     void __RPC_FAR * AssociationContext
  246.     );
  247.  
  248. RPCRTAPI
  249. RPC_STATUS
  250. RPC_ENTRY
  251. I_RpcMonitorAssociation (
  252.     IN RPC_BINDING_HANDLE Handle,
  253.     IN PRPC_RUNDOWN RundownRoutine,
  254.     IN void * Context
  255.     );
  256.  
  257. RPCRTAPI
  258. RPC_STATUS
  259. RPC_ENTRY
  260. I_RpcStopMonitorAssociation (
  261.     IN RPC_BINDING_HANDLE Handle
  262.     );
  263.  
  264. RPCRTAPI
  265. RPC_BINDING_HANDLE
  266. RPC_ENTRY
  267. I_RpcGetCurrentCallHandle(
  268.     void
  269.     );
  270.  
  271. RPCRTAPI
  272. RPC_STATUS
  273. RPC_ENTRY
  274. I_RpcGetAssociationContext (
  275.     IN RPC_BINDING_HANDLE BindingHandle,
  276.     OUT void __RPC_FAR * __RPC_FAR * AssociationContext
  277.     );
  278.  
  279. RPCRTAPI
  280. void *
  281. RPC_ENTRY
  282. I_RpcGetServerContextList (
  283.     IN RPC_BINDING_HANDLE BindingHandle
  284.     );
  285.  
  286. RPCRTAPI
  287. void
  288. RPC_ENTRY
  289. I_RpcSetServerContextList (
  290.     IN RPC_BINDING_HANDLE BindingHandle,
  291.     OUT void * ServerContextList
  292.     );
  293.  
  294. #ifdef RPC_UNICODE_SUPPORTED
  295.  
  296. RPCRTAPI
  297. RPC_STATUS
  298. RPC_ENTRY
  299. I_RpcNsBindingSetEntryNameW (
  300.     IN RPC_BINDING_HANDLE Binding,
  301.     IN unsigned long EntryNameSyntax,
  302.     IN unsigned short __RPC_FAR * EntryName
  303.     );
  304.  
  305. RPCRTAPI
  306. RPC_STATUS
  307. RPC_ENTRY
  308. I_RpcNsBindingSetEntryNameA (
  309.     IN RPC_BINDING_HANDLE Binding,
  310.     IN unsigned long EntryNameSyntax,
  311.     IN unsigned char __RPC_FAR * EntryName
  312.     );
  313.  
  314. #ifdef UNICODE
  315. #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameW
  316. #else
  317. #define I_RpcNsBindingSetEntryName I_RpcNsBindingSetEntryNameA
  318. #endif
  319.  
  320. #else
  321.  
  322. RPCRTAPI
  323. RPC_STATUS
  324. RPC_ENTRY
  325. I_RpcNsBindingSetEntryName (
  326.     IN RPC_BINDING_HANDLE Binding,
  327.     IN unsigned long EntryNameSyntax,
  328.     IN unsigned char __RPC_FAR * EntryName
  329.     );
  330.  
  331. #endif
  332.  
  333. #ifdef RPC_UNICODE_SUPPORTED
  334.  
  335. RPCRTAPI
  336. RPC_STATUS
  337. RPC_ENTRY
  338. I_RpcBindingInqDynamicEndpointW (
  339.     IN RPC_BINDING_HANDLE Binding,
  340.     OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
  341.     );
  342.  
  343. RPCRTAPI
  344. RPC_STATUS
  345. RPC_ENTRY
  346. I_RpcBindingInqDynamicEndpointA (
  347.     IN RPC_BINDING_HANDLE Binding,
  348.     OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  349.     );
  350.  
  351. #ifdef UNICODE
  352. #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointW
  353. #else
  354. #define I_RpcBindingInqDynamicEndpoint I_RpcBindingInqDynamicEndpointA
  355. #endif
  356.  
  357. #else
  358.  
  359. RPCRTAPI
  360. RPC_STATUS
  361. RPC_ENTRY
  362. I_RpcBindingInqDynamicEndpoint (
  363.     IN RPC_BINDING_HANDLE Binding,
  364.     OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  365.     );
  366.  
  367. #endif
  368.  
  369. #define TRANSPORT_TYPE_CN        0x01
  370. #define TRANSPORT_TYPE_DG        0x02
  371. #define TRANSPORT_TYPE_LPC       0x04
  372. #define TRANSPORT_TYPE_WMSG      0x08
  373.  
  374. RPCRTAPI
  375. RPC_STATUS
  376. RPC_ENTRY
  377. I_RpcBindingInqTransportType (
  378.     IN RPC_BINDING_HANDLE Binding,
  379.     OUT unsigned int __RPC_FAR * Type
  380.     );
  381.  
  382. typedef struct _RPC_TRANSFER_SYNTAX
  383. {
  384.     UUID Uuid;
  385.     unsigned short VersMajor;
  386.     unsigned short VersMinor;
  387. } RPC_TRANSFER_SYNTAX;
  388.  
  389. RPCRTAPI
  390. RPC_STATUS
  391. RPC_ENTRY
  392. I_RpcIfInqTransferSyntaxes (
  393.     IN RPC_IF_HANDLE RpcIfHandle,
  394.     OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  395.     IN unsigned int TransferSyntaxSize,
  396.     OUT unsigned int __RPC_FAR * TransferSyntaxCount
  397.     );
  398.  
  399. RPCRTAPI
  400. RPC_STATUS
  401. RPC_ENTRY
  402. I_UuidCreate (
  403.     OUT UUID __RPC_FAR * Uuid
  404.     );
  405.  
  406. RPCRTAPI
  407. RPC_STATUS
  408. RPC_ENTRY
  409. I_RpcBindingCopy (
  410.     IN RPC_BINDING_HANDLE SourceBinding,
  411.     OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  412.     );
  413.  
  414. RPCRTAPI
  415. RPC_STATUS
  416. RPC_ENTRY
  417. I_RpcBindingIsClientLocal (
  418.     IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  419.     OUT unsigned int __RPC_FAR * ClientLocalFlag
  420.     );
  421.  
  422. RPCRTAPI
  423. void
  424. RPC_ENTRY
  425. I_RpcSsDontSerializeContext (
  426.     void
  427.     );
  428.  
  429. RPCRTAPI
  430. RPC_STATUS
  431. RPC_ENTRY
  432. I_RpcLaunchDatagramReceiveThread(
  433.     void __RPC_FAR * pAddress
  434.     );
  435.  
  436. RPCRTAPI
  437. RPC_STATUS
  438. RPC_ENTRY
  439. I_RpcServerRegisterForwardFunction (
  440.     IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
  441.     );
  442.  
  443.  
  444. RPCRTAPI
  445. RPC_STATUS
  446. RPC_ENTRY
  447. I_RpcConnectionInqSockBuffSize(
  448.   OUT unsigned long __RPC_FAR * RecvBuffSize,
  449.   OUT unsigned long __RPC_FAR * SendBuffSize
  450.   );
  451.  
  452. RPCRTAPI
  453. RPC_STATUS
  454. RPC_ENTRY
  455. I_RpcConnectionSetSockBuffSize(
  456.    IN unsigned long RecvBuffSize,
  457.    IN unsigned long SendBuffSize
  458.    );
  459.  
  460. #ifdef WINNT
  461. #ifdef MSWMSG
  462. RPCRTAPI
  463. RPC_STATUS
  464. RPC_ENTRY
  465. I_RpcServerStartListening(
  466.     HWND hWnd
  467.     ) ;
  468.  
  469. RPCRTAPI
  470. RPC_STATUS
  471. RPC_ENTRY
  472. I_RpcServerStopListening(
  473.     ) ;
  474.  
  475. RPCRTAPI
  476. RPC_STATUS
  477. RPC_ENTRY
  478. I_RpcGetThreadWindowHandle(
  479.     OUT HWND *WindowHandle
  480.     ) ;
  481.  
  482. typedef RPC_STATUS (*RPC_BLOCKING_FN) (
  483.     IN void *wnd,
  484.     IN void *Context,
  485.     IN HANDLE hSyncEvent
  486.     ) ;
  487.  
  488. RPCRTAPI
  489. RPC_STATUS
  490. RPC_ENTRY
  491. I_RpcAsyncSendReceive(
  492.     IN OUT PRPC_MESSAGE pRpcMessage,
  493.     IN OPTIONAL void *Context,
  494.     HWND hWnd
  495.     ) ;
  496.  
  497. RPCRTAPI
  498. RPC_STATUS
  499. RPC_ENTRY
  500. I_RpcBindingSetAsync(
  501.     IN RPC_BINDING_HANDLE Binding,
  502.     IN RPC_BLOCKING_FN BlockingFn
  503.     ) ;
  504.  
  505. RPCRTAPI
  506. LONG
  507. RPC_ENTRY
  508. I_RpcWindowProc(
  509.     IN HWND hWnd,
  510.     IN UINT Message,
  511.     IN WPARAM wParam,
  512.     IN LPARAM lParam
  513.     ) ;
  514.  
  515. RPCRTAPI
  516. RPC_STATUS
  517. RPC_ENTRY
  518. I_RpcSetWMsgEndpoint (
  519.     IN WCHAR __RPC_FAR * Endpoint
  520.     ) ;
  521. #endif
  522.  
  523. #else
  524.  
  525. RPCRTAPI
  526. RPC_STATUS
  527. RPC_ENTRY
  528. I_RpcServerStartListening(
  529.     void * hWnd
  530.     ) ;
  531.  
  532. RPCRTAPI
  533. RPC_STATUS
  534. RPC_ENTRY
  535. I_RpcServerStopListening(
  536.     ) ;
  537.  
  538. typedef RPC_STATUS (*RPC_BLOCKING_FN) (
  539.     IN void * hWnd,
  540.     IN void * Context,
  541.     IN OPTIONAL void * hSyncEvent
  542.     ) ;
  543.  
  544. RPCRTAPI
  545. RPC_STATUS
  546. RPC_ENTRY
  547. I_RpcBindingSetAsync(
  548.     IN RPC_BINDING_HANDLE Binding,
  549.     IN RPC_BLOCKING_FN BlockingFn,
  550.     IN unsigned long ServerTid
  551.     ) ;
  552.  
  553. RPCRTAPI
  554. RPC_STATUS
  555. RPC_ENTRY
  556. I_RpcSetThreadParams(
  557.     IN int fClientFree,
  558.     IN OPTIONAL void *Context,
  559.     IN OPTIONAL void * hWndClient
  560.     );
  561.  
  562. RPCRTAPI
  563. unsigned int
  564. RPC_ENTRY
  565. I_RpcWindowProc(
  566.     IN void * hWnd,
  567.     IN unsigned int Message,
  568.     IN unsigned int wParam,
  569.     IN unsigned long lParam
  570.     ) ;
  571. #endif
  572.  
  573. #ifndef WINNT
  574. RPCRTAPI
  575. RPC_STATUS
  576. RPC_ENTRY
  577. I_RpcServerUnregisterEndpointA (
  578.     IN unsigned char * Protseq,
  579.     IN unsigned char * Endpoint
  580.     );
  581.  
  582. RPCRTAPI
  583. RPC_STATUS
  584. RPC_ENTRY
  585. I_RpcServerUnregisterEndpointW (
  586.     IN unsigned short * Protseq,
  587.     IN unsigned short * Endpoint
  588.     );
  589.  
  590. #ifdef UNICODE
  591. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
  592. #else
  593. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
  594. #endif
  595. #endif // WINNT
  596.  
  597. RPCRTAPI
  598. RPC_STATUS
  599. RPC_ENTRY
  600. I_RpcServerInqTransportType(
  601.     OUT unsigned int __RPC_FAR * Type
  602.     ) ;
  603.  
  604. #ifdef __cplusplus
  605. }
  606. #endif
  607.  
  608. // Reset the packing level for Dos and Windows.
  609.  
  610. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  611. #pragma pack()
  612. #endif
  613.  
  614. #pragma option pop /*P_O_Pop*/
  615. #endif /* __RPCDCEP_H__ */
  616.