home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c083 / 19.ddi / GENINC32.PAK / RPCDCEP.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-02  |  6.8 KB  |  317 lines

  1. /*++
  2.  
  3. Module Name: rpcdcep.h
  4.  
  5. Abstract:
  6.  
  7.     This module contains the private RPC runtime APIs for use by the
  8.     stubs and by support libraries.  Applications must not call these
  9.     routines.
  10.  
  11. --*/
  12.  
  13. /*
  14.  *      C/C++ Run Time Library - Version 6.0
  15.  *
  16.  *      Copyright (c) 1991, 1993 by Borland International
  17.  *      All Rights Reserved.
  18.  *
  19.  */
  20.  
  21. #ifndef __RPCDCEP_H__
  22. #define __RPCDCEP_H__
  23.  
  24. // Set the packing level for RPC structures for Dos and Windows.
  25.  
  26. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  27. #ifndef RC_INVOKED
  28. #pragma option -a.
  29. #endif
  30. #endif
  31.  
  32. #ifdef __RPC_WIN32__
  33. #ifndef RC_INVOKED
  34. #pragma option -a-
  35. #endif /* RC_INVOKED */
  36. #endif /* __RPC_WIN32__ */
  37.  
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41.  
  42. typedef struct _RPC_VERSION {
  43.     unsigned short MajorVersion;
  44.     unsigned short MinorVersion;
  45. } RPC_VERSION;
  46.  
  47. typedef struct _RPC_SYNTAX_IDENTIFIER {
  48.     GUID SyntaxGUID;
  49.     RPC_VERSION SyntaxVersion;
  50. } RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
  51.  
  52. typedef struct _RPC_MESSAGE
  53. {
  54.     RPC_BINDING_HANDLE Handle;
  55.     unsigned long DataRepresentation;
  56.     void __RPC_FAR * Buffer;
  57.     unsigned int BufferLength;
  58.     unsigned int ProcNum;
  59.     PRPC_SYNTAX_IDENTIFIER TransferSyntax;
  60.     void __RPC_FAR * RpcInterfaceInformation;
  61.     void __RPC_FAR * ReservedForRuntime;
  62.     RPC_MGR_EPV __RPC_FAR * ManagerEpv;
  63.     void __RPC_FAR * ImportContext;
  64.     unsigned long RpcFlags;
  65. } RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
  66.  
  67. typedef
  68. void
  69. (__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
  70.     IN OUT PRPC_MESSAGE Message
  71.     );
  72.  
  73. typedef struct {
  74.     unsigned int DispatchTableCount;
  75.     RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
  76.     int Reserved;
  77. } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
  78.  
  79. typedef struct _RPC_PROTSEQ_ENDPOINT
  80. {
  81.     unsigned char __RPC_FAR * RpcProtocolSequence;
  82.     unsigned char __RPC_FAR * Endpoint;
  83. } RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
  84.  
  85. /*
  86. Both of this types MUST start with the InterfaceId and TransferSyntax.
  87. Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
  88. */
  89.  
  90. typedef struct _RPC_SERVER_INTERFACE
  91. {
  92.     unsigned int Length;
  93.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  94.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  95.     PRPC_DISPATCH_TABLE DispatchTable;
  96.     unsigned int RpcProtseqEndpointCount;
  97.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  98.     void __RPC_FAR * MopInterfaceInformation;
  99. } RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
  100.  
  101. typedef struct _RPC_CLIENT_INTERFACE
  102. {
  103.     unsigned int Length;
  104.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  105.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  106.     PRPC_DISPATCH_TABLE DispatchTable;
  107.     unsigned int RpcProtseqEndpointCount;
  108.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  109.     void __RPC_FAR * MopInterfaceInformation;
  110. } RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
  111.  
  112. RPC_STATUS RPC_ENTRY
  113. I_RpcGetBuffer (
  114.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  115.     );
  116.  
  117. RPC_STATUS RPC_ENTRY
  118. I_RpcSendReceive (
  119.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  120.     );
  121.  
  122. RPC_STATUS RPC_ENTRY
  123. I_RpcFreeBuffer (
  124.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  125.     );
  126.  
  127. typedef void * I_RPC_MUTEX;
  128.  
  129. void RPC_ENTRY
  130. I_RpcRequestMutex (
  131.     IN OUT I_RPC_MUTEX * Mutex
  132.     );
  133.  
  134. void RPC_ENTRY
  135. I_RpcClearMutex (
  136.     IN I_RPC_MUTEX Mutex
  137.     );
  138.  
  139. void RPC_ENTRY
  140. I_RpcDeleteMutex (
  141.     IN I_RPC_MUTEX Mutex
  142.     );
  143.  
  144. void __RPC_FAR * RPC_ENTRY
  145. I_RpcAllocate (
  146.     IN unsigned int Size
  147.     );
  148.  
  149. void RPC_ENTRY
  150. I_RpcFree (
  151.     IN void __RPC_FAR * Object
  152.     );
  153.  
  154. void RPC_ENTRY
  155. I_RpcPauseExecution (
  156.     IN unsigned long Milliseconds
  157.     );
  158.  
  159. typedef
  160. void
  161. (__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
  162.     void __RPC_FAR * AssociationContext
  163.     );
  164.  
  165. RPC_STATUS RPC_ENTRY
  166. I_RpcMonitorAssociation (
  167.     IN RPC_BINDING_HANDLE Handle,
  168.     IN PRPC_RUNDOWN RundownRoutine,
  169.     IN void * Context
  170.     );
  171.  
  172. RPC_STATUS RPC_ENTRY
  173. I_RpcStopMonitorAssociation (
  174.     IN RPC_BINDING_HANDLE Handle
  175.     );
  176.  
  177. RPC_BINDING_HANDLE RPC_ENTRY
  178. I_RpcGetCurrentCallHandle(
  179.     void
  180.     );
  181.  
  182. RPC_STATUS RPC_ENTRY
  183. I_RpcGetAssociationContext (
  184.     OUT void __RPC_FAR * __RPC_FAR * AssociationContext
  185.     );
  186.  
  187. RPC_STATUS RPC_ENTRY
  188. I_RpcSetAssociationContext (
  189.     IN void __RPC_FAR * AssociationContext
  190.     );
  191.  
  192. #ifdef RPC_UNICODE_SUPPORTED
  193.  
  194. RPC_STATUS RPC_ENTRY
  195. I_RpcNsBindingSetEntryName (
  196.     IN RPC_BINDING_HANDLE Binding,
  197.     IN unsigned long EntryNameSyntax,
  198.     IN unsigned short __RPC_FAR * EntryName
  199.     );
  200.  
  201. #else /* RPC_UNICODE_SUPPORTED */
  202.  
  203. RPC_STATUS RPC_ENTRY
  204. I_RpcNsBindingSetEntryName (
  205.     IN RPC_BINDING_HANDLE Binding,
  206.     IN unsigned long EntryNameSyntax,
  207.     IN unsigned char __RPC_FAR * EntryName
  208.     );
  209.  
  210. #endif /* RPC_UNICODE_SUPPORTED */
  211.  
  212. #ifdef RPC_UNICODE_SUPPORTED
  213.  
  214. RPC_STATUS RPC_ENTRY
  215. I_RpcBindingInqDynamicEndpoint (
  216.     IN RPC_BINDING_HANDLE Binding,
  217.     OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
  218.     );
  219.  
  220. #else /* RPC_UNICODE_SUPPORTED */
  221.  
  222. RPC_STATUS RPC_ENTRY
  223. I_RpcBindingInqDynamicEndpoint (
  224.     IN RPC_BINDING_HANDLE Binding,
  225.     OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  226.     );
  227.  
  228. #endif /* RPC_UNICODE_SUPPORTED */
  229.  
  230. typedef struct _RPC_TRANSFER_SYNTAX
  231. {
  232.     UUID Uuid;
  233.     unsigned short VersMajor;
  234.     unsigned short VersMinor;
  235. } RPC_TRANSFER_SYNTAX;
  236.  
  237. RPC_STATUS RPC_ENTRY
  238. I_RpcIfInqTransferSyntaxes (
  239.     IN RPC_IF_HANDLE RpcIfHandle,
  240.     OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  241.     IN unsigned int TransferSyntaxSize,
  242.     OUT unsigned int __RPC_FAR * TransferSyntaxCount
  243.     );
  244.  
  245. RPC_STATUS RPC_ENTRY
  246. I_UuidCreate (
  247.     OUT UUID __RPC_FAR * Uuid
  248.     );
  249.  
  250. RPC_STATUS RPC_ENTRY
  251. I_RpcBindingCopy (
  252.     IN RPC_BINDING_HANDLE SourceBinding,
  253.     OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  254.     );
  255.  
  256. RPC_STATUS RPC_ENTRY
  257. I_RpcBindingIsClientLocal (
  258.     IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  259.     OUT unsigned int __RPC_FAR * ClientLocalFlag
  260.     );
  261.  
  262. void RPC_ENTRY
  263. I_RpcSsDontSerializeContext (
  264.     void
  265.     );
  266.  
  267. /* Functions to do performace timing */
  268.  
  269. extern unsigned long TraceCallTime;     /* Time to call the trace system */
  270. extern unsigned long ChargeCallTime;    /* Time to call the Charge API */
  271.  
  272. typedef enum {
  273.  
  274.     TIME_RUNTIME = 0,
  275.     TIME_STUB,
  276.     TIME_TRANSPORT,
  277.     TIME_USER,
  278.     TIME_MAX,
  279.     TIME_LOST
  280.  
  281. } TIME_SLOT;
  282.  
  283. void RPC_ENTRY
  284. I_RpcTimeReset(
  285.     void
  286.     );
  287.  
  288. void RPC_ENTRY
  289. I_RpcTimeCharge(
  290.     IN TIME_SLOT Account
  291.     );
  292.  
  293. unsigned long * RPC_ENTRY
  294. I_RpcTimeGet(
  295.     char __RPC_FAR * ApiName
  296.     );
  297.  
  298. #ifdef __cplusplus
  299. }
  300. #endif
  301.  
  302. // Reset the packing level for Dos and Windows.
  303.  
  304. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  305. #ifndef RC_INVOKED
  306. #pragma option -a.
  307. #endif
  308. #endif
  309.  
  310. #ifdef __RPC_WIN32__
  311. #ifndef RC_INVOKED
  312. #pragma option -a.
  313. #endif /* RC_INVOKED */
  314. #endif /* __RPC_WIN32__ */
  315.  
  316. #endif /* __RPCDCEP_H__ */
  317.