1 /***********************************************************************\
2 *                               rpcndr.d                                *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                 Translated from MinGW Windows headers                 *
7 *                                                                       *
8 *                       Placed into public domain                       *
9 \***********************************************************************/
10 module win32.rpcndr;
11 pragma(lib, "rpcrt4.lib");
12 
13 /* Translation notes:
14  RPC_CLIENT_ALLOC*, RPC_CLIENT_FREE* were replaced with PRPC_CLIENT_ALLOC, PRPC_CLIENT_FREE
15 */
16 
17 // TODO: Bitfields in MIDL_STUB_MESSAGE.
18 //       Macros need to be converted.
19 const __RPCNDR_H_VERSION__= 450;
20 
21 import win32.rpcnsip;
22 private import win32.rpc, win32.rpcdce, win32.unknwn, win32.windef;
23 private import win32.objidl; // for IRpcChannelBuffer, IRpcStubBuffer
24 private import win32.basetyps;
25 
26 extern (Windows):
27 
28 const uint NDR_CHAR_REP_MASK      = 0xF,
29 	NDR_INT_REP_MASK              = 0xF0,
30 	NDR_FLOAT_REP_MASK            = 0xFF00,
31 	NDR_LITTLE_ENDIAN             = 0x10,
32 	NDR_BIG_ENDIAN                = 0,
33 	NDR_IEEE_FLOAT                = 0,
34 	NDR_VAX_FLOAT                 = 0x100,
35 	NDR_ASCII_CHAR                = 0,
36 	NDR_EBCDIC_CHAR               = 1,
37 	NDR_LOCAL_DATA_REPRESENTATION = 0x10,
38 	NDR_LOCAL_ENDIAN              = NDR_LITTLE_ENDIAN;
39 
40 alias MIDL_user_allocate midl_user_allocate;
41 alias MIDL_user_free midl_user_free;
42 
43 alias long hyper;
44 alias ulong MIDL_uhyper;
45 alias char small;
46 
47 const cbNDRContext=20;
48 //MACRO #define NDRSContextValue(hContext) (&(hContext)->userContext)
49 //MACRO #define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; }
50 
51 //MACRO #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
52 
53 //MACRO #define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; }
54 
55 //MACRO #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
56 
57 //MACRO #define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; }
58 
59 //MACRO #define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; }
60 
61 //MACRO #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
62 
63 //MACRO #define MIDL_ascii_strlen(string) strlen(string)
64 
65 //MACRO #define MIDL_ascii_strcpy(target,source) strcpy(target,source)
66 
67 //MACRO #define MIDL_memset(s,c,n) memset(s,c,n)
68 
69 //MACRO #define _midl_ma1( p, cast ) *(*( cast **)&p)++
70 //MACRO #define _midl_ma2( p, cast ) *(*( cast **)&p)++
71 //MACRO #define _midl_ma4( p, cast ) *(*( cast **)&p)++
72 //MACRO #define _midl_ma8( p, cast ) *(*( cast **)&p)++
73 //MACRO #define _midl_unma1( p, cast ) *(( cast *)p)++
74 //MACRO #define _midl_unma2( p, cast ) *(( cast *)p)++
75 //MACRO #define _midl_unma3( p, cast ) *(( cast *)p)++
76 //MACRO #define _midl_unma4( p, cast ) *(( cast *)p)++
77 //MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
78 //MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
79 //MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
80 //MACRO #define _midl_addp( p, n ) (p += n)
81 //MACRO #define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
82 //MACRO #define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
83 //MACRO #define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
84 //MACRO #define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
85 
86 //MACRO #define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l)
87 
88 //MACRO #define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long))
89 
90 //MACRO #define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
91 //MACRO #define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
92 //MACRO #define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
93 //MACRO #define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
94 
95 //MACRO #define NdrFieldOffset(s,f) (long)(& (((s *)0)->f))
96 //MACRO #define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
97 //MACRO #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
98 //MACRO #define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
99 
100 alias void * NDR_CCONTEXT;
101 struct tagNDR_SCONTEXT {
102 	void *pad[2];
103 	void *userContext;
104 }
105 alias tagNDR_SCONTEXT * NDR_SCONTEXT;
106 
107 struct SCONTEXT_QUEUE {
108 	uint NumberOfObjects;
109 	NDR_SCONTEXT *ArrayOfObjects;
110 }
111 alias SCONTEXT_QUEUE * PSCONTEXT_QUEUE;
112 
113 struct _MIDL_STUB_MESSAGE;
114 struct _MIDL_STUB_DESC;
115 struct _FULL_PTR_XLAT_TABLES;
116 
117 alias ubyte *RPC_BUFPTR;
118 alias uint RPC_LENGTH;
119 
120 alias CPtr!(char) PFORMAT_STRING;
121 
122 struct ARRAY_INFO {
123 	int Dimension;
124 	uint *BufferConformanceMark;
125 	uint *BufferVarianceMark;
126 	uint *MaxCountArray;
127 	uint *OffsetArray;
128 	uint *ActualCountArray;
129 }
130 alias ARRAY_INFO * PARRAY_INFO;
131 
132 RPC_BINDING_HANDLE  NDRCContextBinding(NDR_CCONTEXT);
133 void  NDRCContextMarshall(NDR_CCONTEXT,void*);
134 void  NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,uint);
135 void  NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN);
136 NDR_SCONTEXT  NDRSContextUnmarshall(void*pBuff,uint);
137 void  RpcSsDestroyClientContext(void**);
138 void  NDRcopy(void*,void*,uint);
139 uint  MIDL_wchar_strlen(wchar *);
140 void  MIDL_wchar_strcpy(void*,wchar *);
141 void  char_from_ndr(PRPC_MESSAGE,ubyte*);
142 void  char_array_from_ndr(PRPC_MESSAGE,uint,uint,ubyte*);
143 void  short_from_ndr(PRPC_MESSAGE,ushort*);
144 void  short_array_from_ndr(PRPC_MESSAGE,uint,uint,ushort*);
145 void  short_from_ndr_temp(ubyte**,ushort*,uint);
146 void  int_from_ndr(PRPC_MESSAGE,uint*);
147 void  int_array_from_ndr(PRPC_MESSAGE,uint,uint,uint*);
148 void  int_from_ndr_temp(ubyte**,uint*,uint);
149 void  enum_from_ndr(PRPC_MESSAGE,uint*);
150 void  float_from_ndr(PRPC_MESSAGE,void*);
151 void  float_array_from_ndr(PRPC_MESSAGE,uint,uint,void*);
152 void  double_from_ndr(PRPC_MESSAGE,void*);
153 void  double_array_from_ndr(PRPC_MESSAGE,uint,uint,void*);
154 void  hyper_from_ndr(PRPC_MESSAGE,hyper*);
155 void  hyper_array_from_ndr(PRPC_MESSAGE,uint,uint,hyper*);
156 void  hyper_from_ndr_temp(ubyte**,hyper*,uint);
157 void  data_from_ndr(PRPC_MESSAGE,void*,char*,ubyte);
158 void  data_into_ndr(void*,PRPC_MESSAGE,char*,ubyte);
159 void  tree_into_ndr(void*,PRPC_MESSAGE,char*,ubyte);
160 void  data_size_ndr(void*,PRPC_MESSAGE,char*,ubyte);
161 void  tree_size_ndr(void*,PRPC_MESSAGE,char*,ubyte);
162 void  tree_peek_ndr(PRPC_MESSAGE,ubyte**,char*,ubyte);
163 void * midl_allocate(int);
164 
165 align(4):
166 struct MIDL_STUB_MESSAGE {
167 	PRPC_MESSAGE RpcMsg;
168 	ubyte *Buffer;
169 	ubyte *BufferStart;
170 	ubyte *BufferEnd;
171 	ubyte *BufferMark;
172 	uint BufferLength;
173 	uint MemorySize;
174 	ubyte *Memory;
175 	int IsClient;
176 	int ReuseBuffer;
177 	ubyte *AllocAllNodesMemory;
178 	ubyte *AllocAllNodesMemoryEnd;
179 	int IgnoreEmbeddedPointers;
180 	ubyte *PointerBufferMark;
181 	ubyte fBufferValid;
182 	ubyte Unused;
183 	uint MaxCount;
184 	uint Offset;
185 	uint ActualCount;
186 	void* function (uint) pfnAllocate;
187 	void function (void*) pfnFree;
188 	ubyte * StackTop;
189 	ubyte * pPresentedType;
190 	ubyte * pTransmitType;
191 	handle_t SavedHandle;
192 	CPtr!(_MIDL_STUB_DESC) StubDesc;
193 	_FULL_PTR_XLAT_TABLES *FullPtrXlatTables;
194 	uint FullPtrRefId;
195 	int fCheckBounds;
196 	// FIXME:
197 	byte bit_fields_for_D; // FIXME: Bitfields
198 //	int fInDontFree :1;
199 //	int fDontCallFreeInst :1;
200 //	int fInOnlyParam :1;
201 //	int fHasReturn :1;
202 	uint dwDestContext;
203 	void* pvDestContext;
204 	NDR_SCONTEXT * SavedContextHandles;
205 	int ParamNumber;
206 	IRpcChannelBuffer * pRpcChannelBuffer;
207 	PARRAY_INFO pArrayInfo;
208 	uint * SizePtrCountArray;
209 	uint * SizePtrOffsetArray;
210 	uint * SizePtrLengthArray;
211 	void* pArgQueue;
212 	uint dwStubPhase;
213 	uint w2kReserved[5];
214 }
215 alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE;
216 
217 extern (Windows) {
218 	alias void* function (void*) GENERIC_BINDING_ROUTINE;
219 	alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE;
220 	alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE;
221 	alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE;
222 	alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE;
223 	alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE;
224 	alias void function () NDR_NOTIFY_ROUTINE;
225 }
226 
227 align:
228 struct GENERIC_BINDING_ROUTINE_PAIR {
229 	GENERIC_BINDING_ROUTINE pfnBind;
230 	GENERIC_UNBIND_ROUTINE pfnUnbind;
231 }
232 alias GENERIC_BINDING_ROUTINE_PAIR * PGENERIC_BINDING_ROUTINE_PAIR;
233 
234 struct GENERIC_BINDING_INFO {
235 	void *pObj;
236 	uint Size;
237 	GENERIC_BINDING_ROUTINE pfnBind;
238 	GENERIC_UNBIND_ROUTINE pfnUnbind;
239 }
240 alias GENERIC_BINDING_INFO * PGENERIC_BINDING_INFO;
241 
242 
243 struct XMIT_ROUTINE_QUINTUPLE {
244 	XMIT_HELPER_ROUTINE pfnTranslateToXmit;
245 	XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
246 	XMIT_HELPER_ROUTINE pfnFreeXmit;
247 	XMIT_HELPER_ROUTINE pfnFreeInst;
248 }
249 alias XMIT_ROUTINE_QUINTUPLE * PXMIT_ROUTINE_QUINTUPLE;
250 
251 struct MALLOC_FREE_STRUCT {
252 	void* function (uint) pfnAllocate;
253 	void function (void*) pfnFree;
254 }
255 
256 struct COMM_FAULT_OFFSETS {
257 	short CommOffset;
258 	short FaultOffset;
259 }
260 
261 struct USER_MARSHAL_ROUTINE_QUADRUPLE {
262 	USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
263 	USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
264 	USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
265 	USER_MARSHAL_FREEING_ROUTINE pfnFree;
266 }
267 
268 enum IDL_CS_CONVERT {
269 	IDL_CS_NO_CONVERT,
270 	IDL_CS_IN_PLACE_CONVERT,
271 	IDL_CS_NEW_BUFFER_CONVERT
272 }
273 
274 struct NDR_CS_SIZE_CONVERT_ROUTINES {
275 	CS_TYPE_NET_SIZE_ROUTINE pfnNetSize;
276 	CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs;
277 	CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize;
278 	CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs;
279 }
280 
281 struct NDR_CS_ROUTINES {
282 	NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines;
283 	CS_TAG_GETTING_ROUTINE *pTagGettingRoutines;
284 }
285 
286 struct MIDL_STUB_DESC {
287 	void* RpcInterfaceInformation;
288 	void* function(uint) pfnAllocate;
289 	void function (void*) pfnFree;
290 	union _IMPLICIT_HANDLE_INFO {
291 		handle_t *pAutoHandle;
292 		handle_t *pPrimitiveHandle;
293 		PGENERIC_BINDING_INFO pGenericBindingInfo;
294 	}
295 	_IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO;	
296 	CPtr!(NDR_RUNDOWN) apfnNdrRundownRoutines;
297 	CPtr!(GENERIC_BINDING_ROUTINE_PAIR) aGenericBindingRoutinePairs;
298 	CPtr!(EXPR_EVAL) apfnExprEval;
299 	CPtr!(XMIT_ROUTINE_QUINTUPLE) aXmitQuintuple;
300 	CPtr!(char) *pFormatTypes;
301 	int fCheckBounds;
302 	uint Version;
303 	MALLOC_FREE_STRUCT *pMallocFreeStruct;
304 	int MIDLVersion;
305 	CPtr!(COMM_FAULT_OFFSETS) CommFaultOffsets;
306 	CPtr!(USER_MARSHAL_ROUTINE_QUADRUPLE) aUserMarshalQuadruple;
307 	CPtr!(NDR_NOTIFY_ROUTINE) NotifyRoutineTable;
308 	ULONG_PTR mFlags;
309 	CPtr!(NDR_CS_ROUTINES) CsRoutineTables;
310 	void *Reserved4;
311 	ULONG_PTR Reserved5;
312 }
313 alias CPtr!(MIDL_STUB_DESC) PMIDL_STUB_DESC;
314 
315 alias void * PMIDL_XMIT_TYPE;
316 
317 struct MIDL_FORMAT_STRING {
318 	short Pad;
319 	ubyte Format[1];
320 }
321 
322 struct MIDL_SERVER_INFO {
323 	PMIDL_STUB_DESC pStubDesc;
324 	CPtr!(SERVER_ROUTINE) DispatchTable;
325 	PFORMAT_STRING ProcString;
326 	CPtr!(ushort) FmtStringOffset;
327 	CPtr!(STUB_THUNK) ThunkTable;
328 }
329 alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO;
330 
331 struct MIDL_STUBLESS_PROXY_INFO {
332 	PMIDL_STUB_DESC pStubDesc;
333 	PFORMAT_STRING ProcFormatString;
334 	CPtr!(ushort) FormatStringOffset;
335 }
336 alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO;
337 
338 union CLIENT_CALL_RETURN {
339 	void *Pointer;
340 	int Simple;
341 }
342 
343 enum XLAT_SIDE {
344 	XLAT_SERVER = 1,
345 	XLAT_CLIENT
346 }
347 struct FULL_PTR_TO_REFID_ELEMENT {
348 	FULL_PTR_TO_REFID_ELEMENT * Next;
349 	void* Pointer;
350 	uint RefId;
351 	ubyte State;
352 }
353 alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT;
354 
355 struct FULL_PTR_XLAT_TABLES {
356 	struct RefIdToPointer {
357 		void **XlatTable;
358 		ubyte *StateTable;
359 		uint NumberOfEntries;
360 	}
361 	struct PointerToRefId {
362 		PFULL_PTR_TO_REFID_ELEMENT *XlatTable;
363 		uint NumberOfBuckets;
364 		uint HashMask;
365 	}
366 	uint NextRefId;
367 	XLAT_SIDE XlatSide;
368 }
369 alias FULL_PTR_XLAT_TABLES * PFULL_PTR_XLAT_TABLES;
370 
371 
372 enum STUB_PHASE {
373 	STUB_UNMARSHAL,
374 	STUB_CALL_SERVER,
375 	STUB_MARSHAL,
376 	STUB_CALL_SERVER_NO_HRESULT
377 }
378 
379 enum PROXY_PHASE {
380 	PROXY_CALCSIZE,
381 	PROXY_GETBUFFER,
382 	PROXY_MARSHAL,
383 	PROXY_SENDRECEIVE,
384 	PROXY_UNMARSHAL
385 }
386 
387 alias void * RPC_SS_THREAD_HANDLE;
388 
389 extern (Windows) {
390 alias void function (void*) NDR_RUNDOWN;
391 alias void function (_MIDL_STUB_MESSAGE*) EXPR_EVAL;
392 alias void function(PMIDL_STUB_MESSAGE) XMIT_HELPER_ROUTINE;
393 alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_NET_SIZE_ROUTINE;
394 alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_LOCAL_SIZE_ROUTINE;
395 alias void function (RPC_BINDING_HANDLE,uint,void*,uint,byte*,uint*,error_status_t*) CS_TYPE_TO_NETCS_ROUTINE;
396 alias void function (RPC_BINDING_HANDLE,uint,byte*,uint,uint,void*,uint*,error_status_t*) CS_TYPE_FROM_NETCS_ROUTINE;
397 alias void function (RPC_BINDING_HANDLE,int,uint*,uint*,uint*,error_status_t*) CS_TAG_GETTING_ROUTINE;
398 
399 //alias void* RPC_CLIENT_ALLOC(uint);
400 //alias void RPC_CLIENT_FREE(void*);
401 alias void* function(uint) PRPC_CLIENT_ALLOC;
402 alias void function(void*) PRPC_CLIENT_FREE;
403 
404 	alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK;
405 	alias int function() SERVER_ROUTINE;
406 }
407 
408 void  NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte);
409 ubyte * NdrPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING pFormat);
410 ubyte * NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
411 ubyte * NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
412 ubyte * NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
413 ubyte * NdrHardStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
414 ubyte * NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
415 ubyte * NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
416 ubyte * NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
417 ubyte * NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
418 ubyte * NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
419 ubyte * NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
420 ubyte * NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
421 ubyte * NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
422 ubyte * NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
423 ubyte * NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
424 ubyte * NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
425 ubyte * NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
426 ubyte * NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
427 void  NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int);
428 void  NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN);
429 void  NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte);
430 ubyte * NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
431 ubyte * NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
432 ubyte * NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
433 ubyte * NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
434 ubyte * NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
435 ubyte * NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
436 ubyte * NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
437 ubyte * NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
438 ubyte * NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
439 ubyte * NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
440 ubyte * NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
441 ubyte * NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
442 ubyte * NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
443 ubyte * NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
444 ubyte * NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
445 ubyte * NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
446 ubyte * NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
447 ubyte * NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
448 void  NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE);
449 NDR_SCONTEXT  NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE);
450 void  NdrPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
451 void  NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
452 void  NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
453 void  NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
454 void  NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
455 void  NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
456 void  NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
457 void  NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
458 void  NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
459 void  NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
460 void  NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
461 void  NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
462 void  NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
463 void  NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
464 void  NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
465 void  NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
466 void  NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
467 void  NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
468 void  NdrContextHandleSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
469 uint  NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
470 uint  NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
471 uint  NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
472 uint  NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
473 uint  NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
474 uint  NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
475 uint  NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
476 uint  NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
477 uint  NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
478 uint  NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
479 uint  NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
480 uint  NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
481 uint  NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
482 uint  NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
483 uint  NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
484 uint  NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
485 uint  NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
486 void  NdrPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
487 void  NdrSimpleStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
488 void  NdrConformantStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
489 void  NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
490 void  NdrHardStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
491 void  NdrComplexStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
492 void  NdrFixedArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
493 void  NdrConformantArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
494 void  NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
495 void  NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
496 void  NdrComplexArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
497 void  NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
498 void  NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
499 void  NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
500 void  NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
501 void  NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
502 void  NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
503 void  NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint);
504 ubyte * NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC);
505 void  NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint);
506 ubyte * NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC);
507 ubyte * NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE);
508 void  NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE);
509 ubyte * NdrGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE);
510 ubyte * NdrNsGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE);
511 ubyte * NdrSendReceive(PMIDL_STUB_MESSAGE,ubyte*);
512 ubyte * NdrNsSendReceive(PMIDL_STUB_MESSAGE,ubyte*,RPC_BINDING_HANDLE*);
513 void  NdrFreeBuffer(PMIDL_STUB_MESSAGE);
514 
515 CLIENT_CALL_RETURN  NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...);
516 
517 int  NdrStubCall(IRpcStubBuffer*, IRpcChannelBuffer*,PRPC_MESSAGE,uint*);
518 void  NdrServerCall(PRPC_MESSAGE);
519 int  NdrServerUnmarshall(IRpcChannelBuffer*, PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*);
520 void  NdrServerMarshall(IRpcStubBuffer*, IRpcChannelBuffer*,PMIDL_STUB_MESSAGE,PFORMAT_STRING);
521 RPC_STATUS  NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,uint*,uint*,RPC_STATUS);
522 int  NdrSH_UPDecision(PMIDL_STUB_MESSAGE,ubyte**,RPC_BUFPTR);
523 int  NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,ubyte**);
524 int  NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,ubyte**);
525 int  NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,ubyte**,uint);
526 int  NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,ubyte**,uint);
527 int  NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,ubyte**,uint);
528 RPC_BUFPTR  NdrSH_IfCopy(PMIDL_STUB_MESSAGE,ubyte**,uint);
529 RPC_BUFPTR  NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,ubyte**,uint);
530 uint  NdrSH_Copy(ubyte*,ubyte*,uint);
531 void  NdrSH_IfFree(PMIDL_STUB_MESSAGE,ubyte*);
532 RPC_BUFPTR  NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,ubyte*,uint,int);
533 RPC_BUFPTR  NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,ubyte**,int);
534 void* RpcSsAllocate(uint);
535 void  RpcSsDisableAllocate();
536 void  RpcSsEnableAllocate();
537 void  RpcSsFree(void*);
538 RPC_SS_THREAD_HANDLE  RpcSsGetThreadHandle();
539 void  RpcSsSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE);
540 void  RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE);
541 void  RpcSsSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*);
542 void* RpcSmAllocate(uint,RPC_STATUS*);
543 RPC_STATUS  RpcSmClientFree(void*);
544 RPC_STATUS  RpcSmDestroyClientContext(void**);
545 RPC_STATUS  RpcSmDisableAllocate();
546 RPC_STATUS  RpcSmEnableAllocate();
547 RPC_STATUS  RpcSmFree(void*);
548 RPC_SS_THREAD_HANDLE  RpcSmGetThreadHandle(RPC_STATUS*);
549 RPC_STATUS  RpcSmSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE);
550 RPC_STATUS  RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE);
551 RPC_STATUS  RpcSmSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*);
552 void  NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE);
553 void  NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE);
554 void  NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE);
555 void* NdrRpcSmClientAllocate(uint);
556 void  NdrRpcSmClientFree(void*);
557 void* NdrRpcSsDefaultAllocate(uint);
558 void  NdrRpcSsDefaultFree(void*);
559 PFULL_PTR_XLAT_TABLES  NdrFullPointerXlatInit(uint,XLAT_SIDE);
560 void  NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES);
561 int  NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,ubyte,uint*);
562 int  NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,uint,ubyte,void**);
563 void  NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,uint,void*);
564 int  NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*);
565 void* NdrAllocate(PMIDL_STUB_MESSAGE,uint);
566 void  NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*);
567 void* NdrOleAllocate(uint);
568 void  NdrOleFree(void*);
569 ubyte* NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
570 ubyte* NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte);
571 void  NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);
572 uint  NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
573 void  NdrUserMarshalFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING);