1 #ifndef __WINE_RPCNDR_H
2 #define __WINE_RPCNDR_H
4 #ifndef __RPCNDR_H_VERSION__
5 /* FIXME: I'm not sure what version though */
6 #define __RPCNDR_H_VERSION__
7 #endif // __RPCNDR_H_VERSION__
9 typedef unsigned char byte;
10 typedef __int64 hyper;
11 typedef __uint64 MIDL_uhyper;
12 /* 'boolean' tend to conflict, let's call it _wine_boolean */
13 typedef unsigned char _wine_boolean;
14 /* typedef _wine_boolean boolean; */
22 #define NDRSContextValue(hContext) (&(hContext)->userContext)
23 #define cbNDRContext 20
25 typedef void __RPC_USER (*NDR_RUNDOWN)(void *context);
26 typedef void __RPC_USER (*NDR_NOTIFY_ROUTINE)(void);
27 typedef void __RPC_USER (*NDR_NOTIFY2_ROUTINE)(_wine_boolean flag);
29 #define DECLSPEC_UUID(x)
30 #define MIDL_INTERFACE(x) struct
32 struct _MIDL_STUB_MESSAGE;
33 struct _MIDL_STUB_DESC;
34 struct _FULL_PTR_XLAT_TABLES;
36 typedef void __RPC_USER (*EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *);
37 typedef const unsigned char *PFORMAT_STRING;
42 unsigned long *BufferConformanceMark;
43 unsigned long *BufferVarianceMark;
44 unsigned long *MaxCountArray;
45 unsigned long *OffsetArray;
46 unsigned long *ActualCountArray;
47 } ARRAY_INFO, *PARRAY_INFO;
49 typedef struct _NDR_PIPE_DESC *PNDR_PIPE_DESC;
50 typedef struct _NDR_PIPE_MESSAGE *PNDR_PIPE_MESSAGE;
51 typedef struct _NDR_ASYNC_MESSAGE *PNDR_ASYNC_MESSAGE;
52 typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
54 typedef struct _MIDL_STUB_MESSAGE
57 unsigned char *Buffer;
58 unsigned char *BufferStart;
59 unsigned char *BufferEnd;
60 unsigned char *BufferMark;
61 unsigned long BufferLength;
62 unsigned long MemorySize;
63 unsigned char *Memory;
66 unsigned char *AllocAllNodesMemory;
67 unsigned char *AllocAllNodesMemoryEnd;
68 int IgnoreEmbeddedPointers;
69 unsigned char *PointerBufferMark;
70 unsigned char fBufferValid;
74 unsigned long ActualCount;
75 void * __RPC_API (*pfnAllocate)(size_t);
76 void __RPC_API (*pfnFree)(void *);
77 unsigned char *StackTop;
78 unsigned char *pPresentedType;
79 unsigned char *pTransmitType;
81 const struct _MIDL_STUB_DESC *StubDesc;
82 struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables;
83 unsigned long FullPtrRefId;
84 unsigned long ulUnused1;
86 int fDontCallFreeInst:1;
90 int fHasNewCorrDesc:1;
92 unsigned long dwDestContext;
94 NDR_SCONTEXT *SavedContextHandles;
96 struct IRpcChannelBuffer *pRpcChannelBuffer;
97 PARRAY_INFO pArrayInfo;
98 unsigned long *SizePtrCountArray;
99 unsigned long *SizePtrOffsetArray;
100 unsigned long *SizePtrLengthArray;
102 unsigned long dwStubPhase;
103 PNDR_PIPE_DESC pPipeDesc;
104 PNDR_ASYNC_MESSAGE pAsyncMsg;
105 PNDR_CORRELATION_INFO pCorrInfo;
106 unsigned char *pCorrMemory;
108 ULONG_PTR w2kReserved[5];
109 } MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
111 typedef struct _GENERIC_BINDING_ROUTINE_PAIR GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR;
113 typedef struct __GENERIC_BINDING_INFO GENERIC_BINDING_INFO, *PGENERIC_BINDING_INFO;
115 typedef struct _XMIT_ROUTINE_QUINTUPLE XMIT_ROUTINE_QUINTUPLE, *PXMIT_ROUTINE_QUINTUPLE;
117 typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE USER_MARSHAL_ROUTINE_QUADRUPLE;
119 typedef struct _MALLOC_FREE_STRUCT MALLOC_FREE_STRUCT;
121 typedef struct _COMM_FAULT_OFFSETS COMM_FAULT_OFFSETS;
123 typedef struct _MIDL_STUB_DESC
125 void *RpcInterfaceInformation;
126 void * __RPC_API (*pfnAllocate)(size_t);
127 void __RPC_API (*pfnFree)(void *);
129 handle_t *pAutoHandle;
130 handle_t *pPrimitiveHandle;
131 PGENERIC_BINDING_INFO pGenericBindingInfo;
132 } IMPLICIT_HANDLE_INFO;
133 const NDR_RUNDOWN *apfnNdrRundownRoutines;
134 const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs;
135 const EXPR_EVAL *apfnExprEval;
136 const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple;
137 const unsigned char *pFormatTypes;
139 unsigned long Version;
140 MALLOC_FREE_STRUCT *pMallocFreeStruct;
142 const COMM_FAULT_OFFSETS *CommFaultOffsets;
143 const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple;
144 const NDR_NOTIFY_ROUTINE *NotifyRoutineTable;
150 typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC;
152 typedef struct _MIDL_FORMAT_STRING
155 #if defined(__GNUC__)
156 unsigned char Format[0];
158 unsigned char Format[1];
160 } MIDL_FORMAT_STRING;
162 typedef void __RPC_API (*STUB_THUNK)( PMIDL_STUB_MESSAGE );
164 typedef long __RPC_API (*SERVER_ROUTINE)();
166 typedef struct _MIDL_SERVER_INFO_
168 PMIDL_STUB_DESC pStubDesc;
169 const SERVER_ROUTINE *DispatchTable;
170 PFORMAT_STRING ProcString;
171 const unsigned short *FmtStringOffset;
172 const STUB_THUNK *ThunkTable;
173 PFORMAT_STRING LocalFormatTypes;
174 PFORMAT_STRING LocalProcString;
175 const unsigned short *LocalFmtStringOffset;
176 } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
182 STUB_CALL_SERVER_NO_HRESULT
193 struct IRpcStubBuffer;
195 RPCRTAPI void RPC_ENTRY
196 NdrSimpleTypeMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
197 RPCRTAPI void RPC_ENTRY
198 NdrSimpleTypeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
200 /* while MS declares each prototype separately, I prefer to use macros for this kind of thing instead */
201 #define TYPE_MARSHAL(type) \
202 RPCRTAPI unsigned char* RPC_ENTRY \
203 Ndr##type##Marshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); \
204 RPCRTAPI unsigned char* RPC_ENTRY \
205 Ndr##type##Unmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc ); \
206 RPCRTAPI void RPC_ENTRY \
207 Ndr##type##BufferSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); \
208 RPCRTAPI unsigned long RPC_ENTRY \
209 Ndr##type##MemorySize( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat ); \
210 RPCRTAPI void RPC_ENTRY \
211 Ndr##type##Free( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
213 TYPE_MARSHAL(Pointer)
214 TYPE_MARSHAL(SimpleStruct)
215 TYPE_MARSHAL(ConformantStruct)
216 TYPE_MARSHAL(ConformantVaryingStruct)
217 TYPE_MARSHAL(ComplexStruct)
218 TYPE_MARSHAL(FixedArray)
219 TYPE_MARSHAL(ConformantArray)
220 TYPE_MARSHAL(ConformantVaryingArray)
221 TYPE_MARSHAL(VaryingArray)
222 TYPE_MARSHAL(ComplexArray)
223 TYPE_MARSHAL(EncapsulatedUnion)
224 TYPE_MARSHAL(NonEncapsulatedUnion)
225 TYPE_MARSHAL(ByteCountPointer)
226 TYPE_MARSHAL(XmitOrRepAs)
227 TYPE_MARSHAL(UserMarshal)
228 TYPE_MARSHAL(InterfacePointer)
232 RPCRTAPI void RPC_ENTRY
233 NdrConvert2( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, long NumberParams );
234 RPCRTAPI void RPC_ENTRY
235 NdrConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat );
237 RPCRTAPI void* RPC_ENTRY
238 NdrOleAllocate( size_t Size );
239 RPCRTAPI void RPC_ENTRY
240 NdrOleFree( void* NodeToFree );
242 #endif /*__WINE_RPCNDR_H */