|
|
1.1 ! root 1: /*++ ! 2: ! 3: Copyright (c) 1991 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: Author: ! 16: ! 17: Michael Montague (mikemon) 25-Sep-1991 ! 18: ! 19: Revision History: ! 20: ! 21: --*/ ! 22: ! 23: #ifndef __RPCDCEP_H__ ! 24: #define __RPCDCEP_H__ ! 25: ! 26: typedef struct _RPC_VERSION { ! 27: unsigned short MajorVersion; ! 28: unsigned short MinorVersion; ! 29: } RPC_VERSION; ! 30: ! 31: typedef struct _RPC_SYNTAX_IDENTIFIER { ! 32: GUID SyntaxGUID; ! 33: RPC_VERSION SyntaxVersion; ! 34: } RPC_SYNTAX_IDENTIFIER, PAPI * PRPC_SYNTAX_IDENTIFIER; ! 35: ! 36: typedef struct _RPC_MESSAGE ! 37: { ! 38: RPC_BINDING_HANDLE Handle; ! 39: unsigned long DataRepresentation; ! 40: void PAPI * Buffer; ! 41: unsigned int BufferLength; ! 42: unsigned int ProcNum; ! 43: PRPC_SYNTAX_IDENTIFIER TransferSyntax; ! 44: void PAPI * RpcInterfaceInformation; ! 45: void PAPI * ReservedForRuntime; ! 46: RPC_MGR_EPV ManagerEpv; ! 47: void PAPI * ImportContext; ! 48: unsigned long RpcFlags; ! 49: } RPC_MESSAGE, PAPI * PRPC_MESSAGE; ! 50: ! 51: typedef void (PAPI * RPC_DISPATCH_FUNCTION) (IN OUT PRPC_MESSAGE Message); ! 52: ! 53: typedef struct { ! 54: unsigned int DispatchTableCount; ! 55: RPC_DISPATCH_FUNCTION PAPI * DispatchTable; ! 56: int Reserved; ! 57: } RPC_DISPATCH_TABLE, PAPI * PRPC_DISPATCH_TABLE; ! 58: ! 59: typedef struct _RPC_PROTSEQ_ENDPOINT ! 60: { ! 61: unsigned char PAPI * RpcProtocolSequence; ! 62: unsigned char PAPI * Endpoint; ! 63: } RPC_PROTSEQ_ENDPOINT, PAPI * PRPC_PROTSEQ_ENDPOINT; ! 64: ! 65: /* ! 66: Both of this types MUST start with the InterfaceId and TransferSyntax. ! 67: Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why. ! 68: */ ! 69: ! 70: typedef struct _RPC_SERVER_INTERFACE ! 71: { ! 72: unsigned int Length; ! 73: RPC_SYNTAX_IDENTIFIER InterfaceId; ! 74: RPC_SYNTAX_IDENTIFIER TransferSyntax; ! 75: PRPC_DISPATCH_TABLE DispatchTable; ! 76: unsigned int RpcProtseqEndpointCount; ! 77: PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; ! 78: void PAPI * MopInterfaceInformation; ! 79: } RPC_SERVER_INTERFACE, PAPI * PRPC_SERVER_INTERFACE; ! 80: ! 81: typedef struct _RPC_CLIENT_INTERFACE ! 82: { ! 83: unsigned int Length; ! 84: RPC_SYNTAX_IDENTIFIER InterfaceId; ! 85: RPC_SYNTAX_IDENTIFIER TransferSyntax; ! 86: PRPC_DISPATCH_TABLE DispatchTable; ! 87: unsigned int RpcProtseqEndpointCount; ! 88: PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; ! 89: void PAPI * MopInterfaceInformation; ! 90: } RPC_CLIENT_INTERFACE, PAPI * PRPC_CLIENT_INTERFACE; ! 91: ! 92: RPC_STATUS RPC_ENTRY ! 93: I_RpcGetBuffer ( ! 94: IN OUT RPC_MESSAGE PAPI * Message ! 95: ); ! 96: ! 97: RPC_STATUS RPC_ENTRY ! 98: #ifndef WIN16RPC ! 99: I_RpcSendReceive ( ! 100: #else ! 101: I_RpcSendReceiveWin ( ! 102: #endif /* ! WIN16RPC */ ! 103: IN OUT RPC_MESSAGE PAPI * Message ! 104: ); ! 105: ! 106: RPC_STATUS RPC_ENTRY ! 107: I_RpcFreeBuffer ( ! 108: IN OUT RPC_MESSAGE PAPI * Message ! 109: ); ! 110: ! 111: typedef void * I_RPC_MUTEX; ! 112: ! 113: void RPC_ENTRY ! 114: I_RpcRequestMutex ( ! 115: IN OUT I_RPC_MUTEX * Mutex ! 116: ); ! 117: ! 118: void RPC_ENTRY ! 119: I_RpcClearMutex ( ! 120: IN I_RPC_MUTEX Mutex ! 121: ); ! 122: ! 123: void RPC_ENTRY ! 124: I_RpcDeleteMutex ( ! 125: IN I_RPC_MUTEX Mutex ! 126: ); ! 127: ! 128: void PAPI * RPC_ENTRY ! 129: I_RpcAllocate ( ! 130: IN unsigned int Size ! 131: ); ! 132: ! 133: void RPC_ENTRY ! 134: I_RpcFree ( ! 135: IN void PAPI * Object ! 136: ); ! 137: ! 138: void RPC_ENTRY ! 139: I_RpcPauseExecution ( ! 140: IN unsigned long Milliseconds ! 141: ); ! 142: ! 143: typedef ! 144: void ! 145: (PAPI * PRPC_RUNDOWN) ( ! 146: void PAPI * AssociationContext ! 147: ); ! 148: ! 149: RPC_STATUS RPC_ENTRY ! 150: I_RpcMonitorAssociation ( ! 151: IN RPC_BINDING_HANDLE Handle, ! 152: IN PRPC_RUNDOWN RundownRoutine, ! 153: IN void * Context ! 154: ); ! 155: ! 156: RPC_STATUS RPC_ENTRY ! 157: I_RpcStopMonitorAssociation ( ! 158: IN RPC_BINDING_HANDLE Handle ! 159: ); ! 160: ! 161: RPC_BINDING_HANDLE RPC_ENTRY ! 162: I_RpcGetCurrentCallHandle( ! 163: void ! 164: ); ! 165: ! 166: RPC_STATUS RPC_ENTRY ! 167: I_RpcGetAssociationContext ( ! 168: OUT void PAPI * PAPI * AssociationContext ! 169: ); ! 170: ! 171: RPC_STATUS RPC_ENTRY ! 172: I_RpcSetAssociationContext ( ! 173: IN void PAPI * AssociationContext ! 174: ); ! 175: ! 176: #ifdef RPC_UNICODE_SUPPORTED ! 177: ! 178: RPC_STATUS RPC_ENTRY ! 179: I_RpcNsBindingSetEntryName ( ! 180: IN RPC_BINDING_HANDLE Binding, ! 181: IN unsigned long EntryNameSyntax, ! 182: IN unsigned short PAPI * EntryName ! 183: ); ! 184: ! 185: #else /* RPC_UNICODE_SUPPORTED */ ! 186: ! 187: RPC_STATUS RPC_ENTRY ! 188: I_RpcNsBindingSetEntryName ( ! 189: IN RPC_BINDING_HANDLE Binding, ! 190: IN unsigned long EntryNameSyntax, ! 191: IN unsigned char PAPI * EntryName ! 192: ); ! 193: ! 194: #endif /* RPC_UNICODE_SUPPORTED */ ! 195: ! 196: #ifdef RPC_UNICODE_SUPPORTED ! 197: ! 198: RPC_STATUS RPC_ENTRY ! 199: I_RpcBindingInqDynamicEndpoint ( ! 200: IN RPC_BINDING_HANDLE Binding, ! 201: OUT unsigned short PAPI * PAPI * DynamicEndpoint ! 202: ); ! 203: ! 204: #else /* RPC_UNICODE_SUPPORTED */ ! 205: ! 206: RPC_STATUS RPC_ENTRY ! 207: I_RpcBindingInqDynamicEndpoint ( ! 208: IN RPC_BINDING_HANDLE Binding, ! 209: OUT unsigned char PAPI * PAPI * DynamicEndpoint ! 210: ); ! 211: ! 212: #endif /* RPC_UNICODE_SUPPORTED */ ! 213: ! 214: typedef struct _RPC_TRANSFER_SYNTAX ! 215: { ! 216: UUID Uuid; ! 217: unsigned short VersMajor; ! 218: unsigned short VersMinor; ! 219: } RPC_TRANSFER_SYNTAX; ! 220: ! 221: RPC_STATUS RPC_ENTRY ! 222: I_RpcIfInqTransferSyntaxes ( ! 223: IN RPC_IF_HANDLE RpcIfHandle, ! 224: OUT RPC_TRANSFER_SYNTAX PAPI * TransferSyntaxes, ! 225: IN unsigned int TransferSyntaxSize, ! 226: OUT unsigned int PAPI * TransferSyntaxCount ! 227: ); ! 228: ! 229: RPC_STATUS RPC_ENTRY ! 230: I_UuidCreate ( ! 231: OUT UUID PAPI * Uuid ! 232: ); ! 233: ! 234: RPC_STATUS RPC_ENTRY ! 235: I_RpcBindingCopy ( ! 236: IN RPC_BINDING_HANDLE SourceBinding, ! 237: OUT RPC_BINDING_HANDLE PAPI * DestinationBinding ! 238: ); ! 239: ! 240: /* Functions to do performace timing */ ! 241: ! 242: extern unsigned long TraceCallTime; /* Time to call the trace system */ ! 243: extern unsigned long ChargeCallTime; /* Time to call the Charge API */ ! 244: ! 245: typedef enum { ! 246: ! 247: TIME_RUNTIME = 0, ! 248: TIME_STUB, ! 249: TIME_TRANSPORT, ! 250: TIME_USER, ! 251: TIME_MAX, ! 252: TIME_LOST ! 253: ! 254: } TIME_SLOT; ! 255: ! 256: void RPC_ENTRY ! 257: I_RpcTimeReset( ! 258: void ! 259: ); ! 260: ! 261: void RPC_ENTRY ! 262: I_RpcTimeCharge( ! 263: IN TIME_SLOT Account ! 264: ); ! 265: ! 266: unsigned long * RPC_ENTRY ! 267: I_RpcTimeGet( ! 268: char PAPI * ApiName ! 269: ); ! 270: ! 271: ! 272: #endif /* __RPCDCEP_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.