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