home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / RTLWIN32.PAK / RPCDCEP.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  9.5 KB  |  418 lines

  1. /*++
  2.  
  3. Copyright (c) 1991-1996 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. #pragma option -b
  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 RPC_ENTRY RPC_FORWARD_FUNCTION(
  58.                        IN UUID             __RPC_FAR * InterfaceId,
  59.                        IN RPC_VERSION      __RPC_FAR * InterfaceVersion,
  60.                        IN UUID             __RPC_FAR * ObjectId,
  61.                        IN unsigned char         __RPC_FAR * Rpcpro,
  62.                        IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
  63.  
  64. /*
  65.  * Types of function calls for datagram rpc
  66.  */
  67.  
  68. #define RPC_NCA_FLAGS_DEFAULT       0x00000000  /* 0b000...000 */
  69. #define RPC_NCA_FLAGS_IDEMPOTENT    0x00000001  /* 0b000...001 */
  70. #define RPC_NCA_FLAGS_BROADCAST     0x00000002  /* 0b000...010 */
  71. #define RPC_NCA_FLAGS_MAYBE         0x00000004  /* 0b000...100 */
  72.  
  73. #define RPC_BUFFER_COMPLETE          0x00001000 /* used by pipes */
  74. #define RPC_BUFFER_PARTIAL              0x00002000 /* used by pipes */
  75. #define RPC_BUFFER_EXTRA                 0x00004000 /* used by pipes */
  76.  
  77. #define RPCFLG_NON_NDR                    0x80000000UL
  78. #define RPCFLG_ASYNCHRONOUS         0x40000000UL
  79. #define RPCFLG_INPUT_SYNCHRONOUS    0x20000000UL
  80. #define RPCFLG_LOCAL_CALL                0x10000000UL
  81.  
  82. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  83. #define RPC_FLAGS_VALID_BIT 0x8000
  84. #endif
  85.  
  86. #if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
  87. #define RPC_FLAGS_VALID_BIT 0x00008000
  88. #endif
  89.  
  90. typedef
  91. void
  92. (__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
  93.     IN OUT PRPC_MESSAGE Message
  94.     );
  95.  
  96. typedef struct {
  97.     unsigned int DispatchTableCount;
  98.     RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
  99.     int Reserved;
  100. } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
  101.  
  102. typedef struct _RPC_PROTSEQ_ENDPOINT
  103. {
  104.     unsigned char __RPC_FAR * RpcProtocolSequence;
  105.     unsigned char __RPC_FAR * Endpoint;
  106. } RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
  107.  
  108. /*
  109. Both of these types MUST start with the InterfaceId and TransferSyntax.
  110. Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
  111. */
  112. #define NT351_INTERFACE_SIZE 0x40
  113. #define RPC_INTERFACE_HAS_PIPES           0x0001
  114.  
  115. typedef struct _RPC_SERVER_INTERFACE
  116. {
  117.     unsigned int Length;
  118.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  119.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  120.     PRPC_DISPATCH_TABLE DispatchTable;
  121.     unsigned int RpcProtseqEndpointCount;
  122.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  123.     RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
  124.     void const __RPC_FAR *InterpreterInfo;
  125.     unsigned int Flags ;
  126. } RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
  127.  
  128. typedef struct _RPC_CLIENT_INTERFACE
  129. {
  130.     unsigned int Length;
  131.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  132.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  133.     PRPC_DISPATCH_TABLE DispatchTable;
  134.     unsigned int RpcProtseqEndpointCount;
  135.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  136.     unsigned long Reserved;
  137.     void const __RPC_FAR * InterpreterInfo;
  138.     unsigned int Flags ;
  139. } RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
  140.  
  141. RPC_STATUS RPC_ENTRY
  142. I_RpcGetBuffer (
  143.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  144.     );
  145.  
  146. RPC_STATUS RPC_ENTRY
  147. I_RpcSendReceive (
  148.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  149.     );
  150.  
  151. RPC_STATUS RPC_ENTRY
  152. I_RpcFreeBuffer (
  153.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  154.     );
  155.  
  156. RPC_STATUS RPC_ENTRY
  157. I_RpcSend (
  158.     IN OUT PRPC_MESSAGE Message
  159.     ) ;
  160.  
  161. RPC_STATUS RPC_ENTRY
  162. I_RpcReceive (
  163.     IN OUT PRPC_MESSAGE Message,
  164.     IN unsigned int Size
  165.     ) ;
  166.  
  167. RPC_STATUS RPC_ENTRY
  168. I_RpcFreePipeBuffer (
  169.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  170.     ) ;
  171.  
  172. RPC_STATUS RPC_ENTRY
  173. I_RpcReallocPipeBuffer (
  174.     IN PRPC_MESSAGE Message,
  175.     IN unsigned int NewSize
  176.     ) ;
  177.  
  178. typedef void * I_RPC_MUTEX;
  179.  
  180. void RPC_ENTRY
  181. I_RpcRequestMutex (
  182.     IN OUT I_RPC_MUTEX * Mutex
  183.     );
  184.  
  185. void RPC_ENTRY
  186. I_RpcClearMutex (
  187.     IN I_RPC_MUTEX Mutex
  188.     );
  189.  
  190. void RPC_ENTRY
  191. I_RpcDeleteMutex (
  192.     IN I_RPC_MUTEX Mutex
  193.     );
  194.  
  195. void __RPC_FAR * RPC_ENTRY
  196. I_RpcAllocate (
  197.     IN unsigned int Size
  198.     );
  199.  
  200. void RPC_ENTRY
  201. I_RpcFree (
  202.     IN void __RPC_FAR * Object
  203.     );
  204.  
  205. void RPC_ENTRY
  206. I_RpcPauseExecution (
  207.     IN unsigned long Milliseconds
  208.     );
  209.  
  210. typedef
  211. void
  212. (__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
  213.     void __RPC_FAR * AssociationContext
  214.     );
  215.  
  216. RPC_STATUS RPC_ENTRY
  217. I_RpcMonitorAssociation (
  218.     IN RPC_BINDING_HANDLE Handle,
  219.     IN PRPC_RUNDOWN RundownRoutine,
  220.     IN void * Context
  221.     );
  222.  
  223. RPC_STATUS RPC_ENTRY
  224. I_RpcStopMonitorAssociation (
  225.     IN RPC_BINDING_HANDLE Handle
  226.     );
  227.  
  228. RPC_BINDING_HANDLE RPC_ENTRY
  229. I_RpcGetCurrentCallHandle(
  230.     void
  231.     );
  232.  
  233. RPC_STATUS RPC_ENTRY
  234. I_RpcGetAssociationContext (
  235.     OUT void __RPC_FAR * __RPC_FAR * AssociationContext
  236.     );
  237.  
  238. RPC_STATUS RPC_ENTRY
  239. I_RpcSetAssociationContext (
  240.     IN void __RPC_FAR * AssociationContext
  241.     );
  242.  
  243. #ifdef __RPC_NT__
  244.  
  245. RPC_STATUS RPC_ENTRY
  246. I_RpcNsBindingSetEntryName (
  247.     IN RPC_BINDING_HANDLE Binding,
  248.     IN unsigned long EntryNameSyntax,
  249.     IN unsigned short __RPC_FAR * EntryName
  250.     );
  251.  
  252. #else
  253.  
  254. RPC_STATUS RPC_ENTRY
  255. I_RpcNsBindingSetEntryName (
  256.     IN RPC_BINDING_HANDLE Binding,
  257.     IN unsigned long EntryNameSyntax,
  258.     IN unsigned char __RPC_FAR * EntryName
  259.     );
  260.  
  261. #endif
  262.  
  263. #ifdef __RPC_NT__
  264.  
  265. RPC_STATUS RPC_ENTRY
  266. I_RpcBindingInqDynamicEndpoint (
  267.     IN RPC_BINDING_HANDLE Binding,
  268.     OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
  269.     );
  270.  
  271. #else
  272.  
  273. RPC_STATUS RPC_ENTRY
  274. I_RpcBindingInqDynamicEndpoint (
  275.     IN RPC_BINDING_HANDLE Binding,
  276.     OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  277.     );
  278.  
  279. #endif
  280.  
  281. #define TRANSPORT_TYPE_CN        0x1
  282. #define TRANSPORT_TYPE_DG        0x2
  283. #define TRANSPORT_TYPE_LPC       0x4
  284. #define TRANSPORT_TYPE_WMSG   0x8
  285.  
  286. RPC_STATUS RPC_ENTRY
  287. I_RpcBindingInqTransportType (
  288.     IN RPC_BINDING_HANDLE Binding,
  289.     OUT unsigned int __RPC_FAR * Type
  290.     );
  291.  
  292. typedef struct _RPC_TRANSFER_SYNTAX
  293. {
  294.     UUID Uuid;
  295.     unsigned short VersMajor;
  296.     unsigned short VersMinor;
  297. } RPC_TRANSFER_SYNTAX;
  298.  
  299. RPC_STATUS RPC_ENTRY
  300. I_RpcIfInqTransferSyntaxes (
  301.     IN RPC_IF_HANDLE RpcIfHandle,
  302.     OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  303.     IN unsigned int TransferSyntaxSize,
  304.     OUT unsigned int __RPC_FAR * TransferSyntaxCount
  305.     );
  306.  
  307. RPC_STATUS RPC_ENTRY
  308. I_UuidCreate (
  309.     OUT UUID __RPC_FAR * Uuid
  310.     );
  311.  
  312. RPC_STATUS RPC_ENTRY
  313. I_RpcBindingCopy (
  314.     IN RPC_BINDING_HANDLE SourceBinding,
  315.     OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  316.     );
  317.  
  318. RPC_STATUS RPC_ENTRY
  319. I_RpcBindingIsClientLocal (
  320.     IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  321.     OUT unsigned int __RPC_FAR * ClientLocalFlag
  322.     );
  323.  
  324. void RPC_ENTRY
  325. I_RpcSsDontSerializeContext (
  326.     void
  327.     );
  328.  
  329. RPC_STATUS RPC_ENTRY
  330. I_RpcLaunchDatagramReceiveThread(
  331.     void __RPC_FAR * pAddress
  332.     );
  333.  
  334. RPC_STATUS RPC_ENTRY
  335. I_RpcServerRegisterForwardFunction (
  336.     IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
  337.     );
  338.  
  339.  
  340. RPC_STATUS RPC_ENTRY
  341. I_RpcConnectionInqSockBuffSize(
  342.   OUT unsigned long __RPC_FAR * RecvBuffSize,
  343.   OUT unsigned long __RPC_FAR * SendBuffSize
  344.   );
  345.  
  346. RPC_STATUS RPC_ENTRY
  347. I_RpcConnectionSetSockBuffSize(
  348.    IN unsigned long RecvBuffSize,
  349.    IN unsigned long SendBuffSize
  350.    );
  351.  
  352.  
  353. #ifdef MSWMSG
  354. RPC_STATUS RPC_ENTRY
  355. I_RpcServerStartListening(
  356.     HWND hWnd
  357.     ) ;
  358.  
  359. RPC_STATUS RPC_ENTRY
  360. I_RpcServerStopListening(
  361.     ) ;
  362.  
  363. RPC_STATUS RPC_ENTRY
  364. I_RpcGetThreadWindowHandle(
  365.     OUT HWND *WindowHandle
  366.     ) ;
  367.  
  368. typedef RPC_STATUS (*RPC_BLOCKING_FN) (
  369.     IN void *wnd,
  370.     IN void *Context,
  371.     IN HANDLE hSyncEvent
  372.     ) ;
  373.  
  374. RPC_STATUS RPC_ENTRY
  375. I_RpcAsyncSendReceive(
  376.     IN OUT PRPC_MESSAGE pRpcMessage,
  377.     IN OPTIONAL void *Context,
  378.     HWND hWnd
  379.     ) ;
  380.  
  381. RPC_STATUS RPC_ENTRY
  382. I_RpcBindingSetAsync(
  383.     IN RPC_BINDING_HANDLE Binding,
  384.     IN RPC_BLOCKING_FN BlockingFn
  385.     ) ;
  386.  
  387. LONG RPC_ENTRY
  388. I_RpcWindowProc(
  389.     IN HWND hWnd,
  390.     IN UINT Message,
  391.     IN WPARAM wParam,
  392.     IN LPARAM lParam
  393.     ) ;
  394.  
  395. RPC_STATUS RPC_ENTRY
  396. I_RpcSetWMsgEndpoint (
  397.     IN WCHAR __RPC_FAR * Endpoint
  398.     ) ;
  399. #endif
  400.  
  401. RPC_STATUS RPC_ENTRY
  402. I_RpcServerInqTransportType(
  403.     OUT unsigned int __RPC_FAR * Type
  404.     ) ;
  405.  
  406. #ifdef __cplusplus
  407. }
  408. #endif
  409.  
  410. // Reset the packing level for Dos and Windows.
  411.  
  412. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  413. #pragma pack()
  414. #endif
  415.  
  416. #pragma option -b.
  417. #endif /* __RPCDCEP_H__ */
  418.