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