|
|
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.