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