home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / winh / rpcdcep.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-11  |  8.7 KB  |  377 lines

  1. /*++
  2.  
  3. Copyright (c) 1991-1995 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. #define __RPCDCEP_H__
  19.  
  20. // Set the packing level for RPC structures for Dos and Windows.
  21.  
  22. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  23. #pragma pack(2)
  24. #endif
  25.  
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29.  
  30. typedef struct _RPC_VERSION {
  31.     unsigned short MajorVersion;
  32.     unsigned short MinorVersion;
  33. } RPC_VERSION;
  34.  
  35. typedef struct _RPC_SYNTAX_IDENTIFIER {
  36.     GUID SyntaxGUID;
  37.     RPC_VERSION SyntaxVersion;
  38. } RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
  39.  
  40. typedef struct _RPC_MESSAGE
  41. {
  42.     RPC_BINDING_HANDLE Handle;
  43.     unsigned long DataRepresentation;
  44.     void __RPC_FAR * Buffer;
  45.     unsigned int BufferLength;
  46.     unsigned int ProcNum;
  47.     PRPC_SYNTAX_IDENTIFIER TransferSyntax;
  48.     void __RPC_FAR * RpcInterfaceInformation;
  49.     void __RPC_FAR * ReservedForRuntime;
  50.     RPC_MGR_EPV __RPC_FAR * ManagerEpv;
  51.     void __RPC_FAR * ImportContext;
  52.     unsigned long RpcFlags;
  53. } RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
  54.  
  55.  
  56. typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(
  57.                        IN UUID             __RPC_FAR * InterfaceId,
  58.                        IN RPC_VERSION      __RPC_FAR * InterfaceVersion,
  59.                        IN UUID             __RPC_FAR * ObjectId,
  60.                        IN unsigned char         __RPC_FAR * Rpcpro,
  61.                        IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
  62.  
  63. /*
  64.  * Types of function calls for datagram and rpc
  65.  */
  66.  
  67. #define RPC_NCA_FLAGS_DEFAULT       0x00000000  /* 0b000...000 */
  68. #define RPC_NCA_FLAGS_IDEMPOTENT    0x00000001  /* 0b000...001 */
  69. #define RPC_NCA_FLAGS_BROADCAST     0x00000002  /* 0b000...010 */
  70. #define RPC_NCA_FLAGS_MAYBE         0x00000004  /* 0b000...100 */
  71. #define RPCFLG_ASYNCHRONOUS         0x40000000UL
  72. #define RPCFLG_INPUT_SYNCHRONOUS    0x20000000UL
  73.  
  74. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  75. #define RPC_FLAGS_VALID_BIT 0x8000
  76. #endif
  77.  
  78. #if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
  79. #define RPC_FLAGS_VALID_BIT 0x00008000
  80. #endif
  81.  
  82. typedef
  83. void
  84. (__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
  85.     IN OUT PRPC_MESSAGE Message
  86.     );
  87.  
  88. typedef struct {
  89.     unsigned int DispatchTableCount;
  90.     RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
  91.     int Reserved;
  92. } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
  93.  
  94. typedef struct _RPC_PROTSEQ_ENDPOINT
  95. {
  96.     unsigned char __RPC_FAR * RpcProtocolSequence;
  97.     unsigned char __RPC_FAR * Endpoint;
  98. } RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
  99.  
  100. /*
  101. Both of these types MUST start with the InterfaceId and TransferSyntax.
  102. Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
  103. */
  104.  
  105. typedef struct _RPC_SERVER_INTERFACE
  106. {
  107.     unsigned int Length;
  108.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  109.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  110.     PRPC_DISPATCH_TABLE DispatchTable;
  111.     unsigned int RpcProtseqEndpointCount;
  112.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  113.     RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
  114.     void const __RPC_FAR *InterpreterInfo;
  115. } RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
  116.  
  117. typedef struct _RPC_CLIENT_INTERFACE
  118. {
  119.     unsigned int Length;
  120.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  121.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  122.     PRPC_DISPATCH_TABLE DispatchTable;
  123.     unsigned int RpcProtseqEndpointCount;
  124.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  125.     unsigned long Reserved;
  126.     void const __RPC_FAR * InterpreterInfo;
  127. } RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
  128.  
  129. RPC_STATUS RPC_ENTRY
  130. I_RpcGetBuffer (
  131.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  132.     );
  133.  
  134. RPC_STATUS RPC_ENTRY
  135. I_RpcSendReceive (
  136.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  137.     );
  138.  
  139. RPC_STATUS RPC_ENTRY
  140. I_RpcFreeBuffer (
  141.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  142.     );
  143.  
  144. typedef void * I_RPC_MUTEX;
  145.  
  146. void RPC_ENTRY
  147. I_RpcRequestMutex (
  148.     IN OUT I_RPC_MUTEX * Mutex
  149.     );
  150.  
  151. void RPC_ENTRY
  152. I_RpcClearMutex (
  153.     IN I_RPC_MUTEX Mutex
  154.     );
  155.  
  156. void RPC_ENTRY
  157. I_RpcDeleteMutex (
  158.     IN I_RPC_MUTEX Mutex
  159.     );
  160.  
  161. void __RPC_FAR * RPC_ENTRY
  162. I_RpcAllocate (
  163.     IN unsigned int Size
  164.     );
  165.  
  166. void RPC_ENTRY
  167. I_RpcFree (
  168.     IN void __RPC_FAR * Object
  169.     );
  170.  
  171. void RPC_ENTRY
  172. I_RpcPauseExecution (
  173.     IN unsigned long Milliseconds
  174.     );
  175.  
  176. typedef
  177. void
  178. (__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
  179.     void __RPC_FAR * AssociationContext
  180.     );
  181.  
  182. RPC_STATUS RPC_ENTRY
  183. I_RpcMonitorAssociation (
  184.     IN RPC_BINDING_HANDLE Handle,
  185.     IN PRPC_RUNDOWN RundownRoutine,
  186.     IN void * Context
  187.     );
  188.  
  189. RPC_STATUS RPC_ENTRY
  190. I_RpcStopMonitorAssociation (
  191.     IN RPC_BINDING_HANDLE Handle
  192.     );
  193.  
  194. RPC_BINDING_HANDLE RPC_ENTRY
  195. I_RpcGetCurrentCallHandle(
  196.     void
  197.     );
  198.  
  199. RPC_STATUS RPC_ENTRY
  200. I_RpcGetAssociationContext (
  201.     OUT void __RPC_FAR * __RPC_FAR * AssociationContext
  202.     );
  203.  
  204. RPC_STATUS RPC_ENTRY
  205. I_RpcSetAssociationContext (
  206.     IN void __RPC_FAR * AssociationContext
  207.     );
  208.  
  209. #ifdef __RPC_NT__
  210.  
  211. RPC_STATUS RPC_ENTRY
  212. I_RpcNsBindingSetEntryName (
  213.     IN RPC_BINDING_HANDLE Binding,
  214.     IN unsigned long EntryNameSyntax,
  215.     IN unsigned short __RPC_FAR * EntryName
  216.     );
  217.  
  218. #else 
  219.  
  220. RPC_STATUS RPC_ENTRY
  221. I_RpcNsBindingSetEntryName (
  222.     IN RPC_BINDING_HANDLE Binding,
  223.     IN unsigned long EntryNameSyntax,
  224.     IN unsigned char __RPC_FAR * EntryName
  225.     );
  226.  
  227. #endif 
  228.  
  229. #ifdef __RPC_NT__
  230.  
  231. RPC_STATUS RPC_ENTRY
  232. I_RpcBindingInqDynamicEndpoint (
  233.     IN RPC_BINDING_HANDLE Binding,
  234.     OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
  235.     );
  236.  
  237. #else 
  238.  
  239. RPC_STATUS RPC_ENTRY
  240. I_RpcBindingInqDynamicEndpoint (
  241.     IN RPC_BINDING_HANDLE Binding,
  242.     OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  243.     );
  244.  
  245. #endif 
  246.  
  247. #define TRANSPORT_TYPE_CN   0x1
  248. #define TRANSPORT_TYPE_DG   0x2
  249. #define TRANSPORT_TYPE_LPC  0x4
  250. #define TRANSPORT_TYPE_WMSG 0x8
  251.  
  252. RPC_STATUS RPC_ENTRY
  253. I_RpcBindingInqTransportType (
  254.     IN RPC_BINDING_HANDLE Binding,
  255.     OUT unsigned int __RPC_FAR * Type
  256.     );
  257.  
  258. typedef struct _RPC_TRANSFER_SYNTAX
  259. {
  260.     UUID Uuid;
  261.     unsigned short VersMajor;
  262.     unsigned short VersMinor;
  263. } RPC_TRANSFER_SYNTAX;
  264.  
  265. RPC_STATUS RPC_ENTRY
  266. I_RpcIfInqTransferSyntaxes (
  267.     IN RPC_IF_HANDLE RpcIfHandle,
  268.     OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  269.     IN unsigned int TransferSyntaxSize,
  270.     OUT unsigned int __RPC_FAR * TransferSyntaxCount
  271.     );
  272.  
  273. RPC_STATUS RPC_ENTRY
  274. I_UuidCreate (
  275.     OUT UUID __RPC_FAR * Uuid
  276.     );
  277.  
  278. RPC_STATUS RPC_ENTRY
  279. I_RpcBindingCopy (
  280.     IN RPC_BINDING_HANDLE SourceBinding,
  281.     OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  282.     );
  283.  
  284. RPC_STATUS RPC_ENTRY
  285. I_RpcBindingIsClientLocal (
  286.     IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  287.     OUT unsigned int __RPC_FAR * ClientLocalFlag
  288.     );
  289.  
  290. void RPC_ENTRY
  291. I_RpcSsDontSerializeContext (
  292.     void
  293.     );
  294.  
  295.  
  296. RPC_STATUS RPC_ENTRY
  297. I_RpcServerRegisterForwardFunction (
  298.     IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
  299.                        );
  300. RPC_STATUS RPC_ENTRY
  301. I_RpcConnectionInqSockBuffSize(
  302.   OUT unsigned long __RPC_FAR * RecvBuffSize,
  303.   OUT unsigned long __RPC_FAR * SendBuffSize
  304.   );
  305.  
  306. RPC_STATUS RPC_ENTRY
  307. I_RpcConnectionSetSockBuffSize(
  308.   IN unsigned long RecvBuffSize,
  309.   IN unsigned long SendBuffSize
  310.   );
  311.  
  312. #ifdef __RPC_WIN32__
  313.  
  314. typedef
  315. RPC_STATUS
  316. (__RPC_USER __RPC_FAR * RPC_BLOCKING_FUNCTION) (
  317.     IN void __RPC_FAR *RpcWindowHandle,
  318.     IN void __RPC_FAR *Context
  319.     );
  320.  
  321. RPC_STATUS RPC_ENTRY
  322. I_RpcBindingSetAsync(
  323.     IN RPC_BINDING_HANDLE Binding,
  324.     IN RPC_BLOCKING_FUNCTION BlockingHook
  325.     );
  326.  
  327. RPC_STATUS RPC_ENTRY
  328. I_RpcAsyncSendReceive(
  329.     IN OUT RPC_MESSAGE __RPC_FAR * Message,
  330.     IN void __RPC_FAR * Context
  331.     );
  332.  
  333. RPC_STATUS RPC_ENTRY
  334. I_RpcGetThreadWindowHandle(
  335.     OUT void __RPC_FAR * __RPC_FAR * WindowHandle
  336.     );
  337.  
  338. RPC_STATUS RPC_ENTRY
  339. I_RpcServerThreadPauseListening(
  340.     );
  341.  
  342. RPC_STATUS RPC_ENTRY
  343. I_RpcServerThreadContinueListening(
  344.     );
  345.  
  346. RPC_STATUS RPC_ENTRY
  347. I_RpcServerUnregisterEndpointA (
  348.     IN unsigned char * Protseq,
  349.     IN unsigned char * Endpoint
  350.     );
  351.  
  352. RPC_STATUS RPC_ENTRY
  353. I_RpcServerUnregisterEndpointW (
  354.     IN unsigned short * Protseq,
  355.     IN unsigned short * Endpoint
  356.     );
  357.  
  358. #ifdef UNICODE
  359. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
  360. #else
  361. #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
  362. #endif
  363.  
  364. #endif // __RPC_WIN32__
  365.  
  366. #ifdef __cplusplus
  367. }
  368. #endif
  369.  
  370. // Reset the packing level for Dos and Windows.
  371.  
  372. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  373. #pragma pack()
  374. #endif
  375.  
  376. #endif /* __RPCDCEP_H__ */
  377.