Make dinput a properly separated dll.
[wine] / include / rpcndr.h
1 #ifndef __WINE_RPCNDR_H
2 #define __WINE_RPCNDR_H
3
4 #ifndef __RPCNDR_H_VERSION__
5 /* FIXME: I'm not sure what version though */
6 #define __RPCNDR_H_VERSION__
7 #endif // __RPCNDR_H_VERSION__
8
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; */
15
16 typedef struct
17 {
18   void *pad[2];
19   void *userContext;
20 } *NDR_SCONTEXT;
21
22 #define NDRSContextValue(hContext) (&(hContext)->userContext)
23 #define cbNDRContext 20
24
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);
28
29 #define DECLSPEC_UUID(x)
30 #define MIDL_INTERFACE(x)   struct
31
32 struct _MIDL_STUB_MESSAGE;
33 struct _MIDL_STUB_DESC;
34 struct _FULL_PTR_XLAT_TABLES;
35
36 typedef void __RPC_USER (*EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *);
37 typedef const unsigned char *PFORMAT_STRING;
38
39 typedef struct
40 {
41   long Dimension;
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;
48
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;
53
54 typedef struct _MIDL_STUB_MESSAGE
55 {
56   PRPC_MESSAGE RpcMsg;
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;
64   int IsClient;
65   int ReuseBuffer;
66   unsigned char *AllocAllNodesMemory;
67   unsigned char *AllocAllNodesMemoryEnd;
68   int IgnoreEmbeddedPointers;
69   unsigned char *PointerBufferMark;
70   unsigned char fBufferValid;
71   unsigned char uFlags;
72   ULONG_PTR MaxCount;
73   unsigned long Offset;
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;
80   handle_t SavedHandle;
81   const struct _MIDL_STUB_DESC *StubDesc;
82   struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables;
83   unsigned long FullPtrRefId;
84   unsigned long ulUnused1;
85   int fInDontFree:1;
86   int fDontCallFreeInst:1;
87   int fInOnlyParam:1;
88   int fHasReturn:1;
89   int fHasExtensions:1;
90   int fHasNewCorrDesc:1;
91   int fUnused:10;
92   unsigned long dwDestContext;
93   void *pvDestContext;
94   NDR_SCONTEXT *SavedContextHandles;
95   long ParamNumber;
96   struct IRpcChannelBuffer *pRpcChannelBuffer;
97   PARRAY_INFO pArrayInfo;
98   unsigned long *SizePtrCountArray;
99   unsigned long *SizePtrOffsetArray;
100   unsigned long *SizePtrLengthArray;
101   void *pArgQueue;
102   unsigned long dwStubPhase;
103   PNDR_PIPE_DESC pPipeDesc;
104   PNDR_ASYNC_MESSAGE pAsyncMsg;
105   PNDR_CORRELATION_INFO pCorrInfo;
106   unsigned char *pCorrMemory;
107   void *pMemoryList;
108   ULONG_PTR w2kReserved[5];
109 } MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
110
111 typedef struct _GENERIC_BINDING_ROUTINE_PAIR GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR;
112
113 typedef struct __GENERIC_BINDING_INFO GENERIC_BINDING_INFO, *PGENERIC_BINDING_INFO;
114
115 typedef struct _XMIT_ROUTINE_QUINTUPLE XMIT_ROUTINE_QUINTUPLE, *PXMIT_ROUTINE_QUINTUPLE;
116
117 typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE USER_MARSHAL_ROUTINE_QUADRUPLE;
118
119 typedef struct _MALLOC_FREE_STRUCT MALLOC_FREE_STRUCT;
120
121 typedef struct _COMM_FAULT_OFFSETS COMM_FAULT_OFFSETS;
122
123 typedef struct _MIDL_STUB_DESC
124 {
125   void *RpcInterfaceInformation;
126   void * __RPC_API (*pfnAllocate)(size_t);
127   void __RPC_API (*pfnFree)(void *);
128   union {
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;
138   int fCheckBounds;
139   unsigned long Version;
140   MALLOC_FREE_STRUCT *pMallocFreeStruct;
141   long MIDLVersion;
142   const COMM_FAULT_OFFSETS *CommFaultOffsets;
143   const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple;
144   const NDR_NOTIFY_ROUTINE *NotifyRoutineTable;
145   ULONG_PTR mFlags;
146   ULONG_PTR Reserved3;
147   ULONG_PTR Reserved4;
148   ULONG_PTR Reserved5;
149 } MIDL_STUB_DESC;
150 typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC;
151
152 typedef struct _MIDL_FORMAT_STRING
153 {
154   short Pad;
155 #if defined(__GNUC__)
156   unsigned char Format[0];
157 #else
158   unsigned char Format[1];
159 #endif
160 } MIDL_FORMAT_STRING;
161
162 typedef void __RPC_API (*STUB_THUNK)( PMIDL_STUB_MESSAGE );
163
164 typedef long __RPC_API (*SERVER_ROUTINE)();
165
166 typedef struct _MIDL_SERVER_INFO_
167 {
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;
177
178 typedef enum {
179   STUB_UNMARSHAL,
180   STUB_CALL_SERVER,
181   STUB_MARSHAL,
182   STUB_CALL_SERVER_NO_HRESULT
183 } STUB_PHASE;
184
185 typedef enum {
186   PROXY_CALCSIZE,
187   PROXY_GETBUFFER,
188   PROXY_MARSHAL,
189   PROXY_SENDRECEIVE,
190   PROXY_UNMARSHAL
191 } PROXY_PHASE;
192
193 struct IRpcStubBuffer;
194
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 );
199
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 );
212
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)
229
230 #undef TYPE_MARSHAL
231
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 );
236
237 RPCRTAPI void* RPC_ENTRY
238   NdrOleAllocate( size_t Size );
239 RPCRTAPI void RPC_ENTRY
240   NdrOleFree( void* NodeToFree );
241
242 #endif /*__WINE_RPCNDR_H */