turborex 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.md +38 -0
- data/README.rdoc +19 -0
- data/examples/alpc_client.rb +15 -0
- data/examples/alpc_server.rb +14 -0
- data/examples/com_client.rb +19 -0
- data/examples/com_finder.rb +39 -0
- data/examples/create_instance.rb +15 -0
- data/examples/cstruct.rb +19 -0
- data/examples/find_com_client_calls.rb +16 -0
- data/examples/find_rpc_security_callback.rb +12 -0
- data/examples/rpc_finder.rb +117 -0
- data/examples/scan_exports.rb +5 -0
- data/examples/scan_imports.rb +5 -0
- data/examples/tinysdk.rb +17 -0
- data/lib/turborex.rb +21 -0
- data/lib/turborex/cstruct.rb +565 -0
- data/lib/turborex/cstruct/struct_helper.rb +7 -0
- data/lib/turborex/exception.rb +65 -0
- data/lib/turborex/fuzzer.rb +204 -0
- data/lib/turborex/fuzzer/containers.rb +115 -0
- data/lib/turborex/fuzzer/coverage.rb +67 -0
- data/lib/turborex/fuzzer/mutators.rb +25 -0
- data/lib/turborex/fuzzer/seed.rb +30 -0
- data/lib/turborex/monkey.rb +11 -0
- data/lib/turborex/msrpc.rb +14 -0
- data/lib/turborex/msrpc/decompiler.rb +244 -0
- data/lib/turborex/msrpc/midl.rb +747 -0
- data/lib/turborex/msrpc/ndrtype.rb +167 -0
- data/lib/turborex/msrpc/rpcbase.rb +777 -0
- data/lib/turborex/msrpc/rpcfinder.rb +1426 -0
- data/lib/turborex/msrpc/utils.rb +70 -0
- data/lib/turborex/pefile.rb +8 -0
- data/lib/turborex/pefile/pe.rb +61 -0
- data/lib/turborex/pefile/scanner.rb +82 -0
- data/lib/turborex/utils.rb +321 -0
- data/lib/turborex/windows.rb +402 -0
- data/lib/turborex/windows/alpc.rb +844 -0
- data/lib/turborex/windows/com.rb +266 -0
- data/lib/turborex/windows/com/client.rb +84 -0
- data/lib/turborex/windows/com/com_finder.rb +330 -0
- data/lib/turborex/windows/com/com_registry.rb +100 -0
- data/lib/turborex/windows/com/interface.rb +522 -0
- data/lib/turborex/windows/com/utils.rb +210 -0
- data/lib/turborex/windows/constants.rb +82 -0
- data/lib/turborex/windows/process.rb +56 -0
- data/lib/turborex/windows/security.rb +12 -0
- data/lib/turborex/windows/security/ace.rb +76 -0
- data/lib/turborex/windows/security/acl.rb +25 -0
- data/lib/turborex/windows/security/security_descriptor.rb +118 -0
- data/lib/turborex/windows/tinysdk.rb +89 -0
- data/lib/turborex/windows/utils.rb +138 -0
- data/resources/headers/alpc/ntdef.h +72 -0
- data/resources/headers/alpc/ntlpcapi.h +1014 -0
- data/resources/headers/rpc/common.h +162 -0
- data/resources/headers/rpc/guiddef.h +191 -0
- data/resources/headers/rpc/internal_ndrtypes.h +262 -0
- data/resources/headers/rpc/rpc.h +10 -0
- data/resources/headers/rpc/rpcdce.h +266 -0
- data/resources/headers/rpc/rpcdcep.h +187 -0
- data/resources/headers/rpc/rpcndr.h +39 -0
- data/resources/headers/rpc/v4_x64/rpcinternals.h +154 -0
- data/resources/headers/rpc/wintype.h +517 -0
- data/resources/headers/tinysdk/tinysdk.h +5 -0
- data/resources/headers/tinysdk/tinysdk/comdef.h +645 -0
- data/resources/headers/tinysdk/tinysdk/dbghelp.h +118 -0
- data/resources/headers/tinysdk/tinysdk/guiddef.h +194 -0
- data/resources/headers/tinysdk/tinysdk/memoryapi.h +12 -0
- data/resources/headers/tinysdk/tinysdk/poppack.h +12 -0
- data/resources/headers/tinysdk/tinysdk/pshpack4.h +13 -0
- data/resources/headers/tinysdk/tinysdk/winnt.h +1059 -0
- data/resources/headers/tinysdk/tinysdk/wintype.h +326 -0
- metadata +290 -0
@@ -0,0 +1,645 @@
|
|
1
|
+
#include "rpc.h"
|
2
|
+
#define BEGIN_INTERFACE
|
3
|
+
#define END_INTERFACE
|
4
|
+
#define _COM_Outptr_
|
5
|
+
#define CONST_VTBL
|
6
|
+
#define STDMETHODCALLTYPE __stdcall
|
7
|
+
#define interface struct
|
8
|
+
#define _Inout_
|
9
|
+
#define _Out_opt_
|
10
|
+
#define _Out_
|
11
|
+
#define _Outptr_
|
12
|
+
#define _In_opt_
|
13
|
+
|
14
|
+
typedef struct _COAUTHIDENTITY
|
15
|
+
{
|
16
|
+
/* [size_is] */ USHORT *User;
|
17
|
+
/* [range] */ ULONG UserLength;
|
18
|
+
/* [size_is] */ USHORT *Domain;
|
19
|
+
/* [range] */ ULONG DomainLength;
|
20
|
+
/* [size_is] */ USHORT *Password;
|
21
|
+
/* [range] */ ULONG PasswordLength;
|
22
|
+
ULONG Flags;
|
23
|
+
} COAUTHIDENTITY;
|
24
|
+
|
25
|
+
|
26
|
+
typedef struct _COAUTHINFO
|
27
|
+
{
|
28
|
+
DWORD dwAuthnSvc;
|
29
|
+
DWORD dwAuthzSvc;
|
30
|
+
LPWSTR pwszServerPrincName;
|
31
|
+
DWORD dwAuthnLevel;
|
32
|
+
DWORD dwImpersonationLevel;
|
33
|
+
COAUTHIDENTITY *pAuthIdentityData;
|
34
|
+
DWORD dwCapabilities;
|
35
|
+
} COAUTHINFO;
|
36
|
+
|
37
|
+
typedef struct _COSERVERINFO
|
38
|
+
{
|
39
|
+
DWORD dwReserved1;
|
40
|
+
LPWSTR pwszName;
|
41
|
+
COAUTHINFO *pAuthInfo;
|
42
|
+
DWORD dwReserved2;
|
43
|
+
} COSERVERINFO;
|
44
|
+
|
45
|
+
typedef struct _FILETIME {
|
46
|
+
DWORD dwLowDateTime;
|
47
|
+
DWORD dwHighDateTime;
|
48
|
+
} FILETIME, *PFILETIME, *LPFILETIME;
|
49
|
+
|
50
|
+
typedef enum tagCOINIT
|
51
|
+
{
|
52
|
+
COINIT_APARTMENTTHREADED = 0x2, /* Apartment model */
|
53
|
+
COINIT_MULTITHREADED = 0x0, /* OLE calls objects on any thread */
|
54
|
+
COINIT_DISABLE_OLE1DDE = 0x4, /* Don't use DDE for Ole1 support */
|
55
|
+
COINIT_SPEED_OVER_MEMORY = 0x8 /* Trade memory for speed */
|
56
|
+
} COINIT;
|
57
|
+
|
58
|
+
typedef ULONG RPCOLEDATAREP;
|
59
|
+
|
60
|
+
typedef struct tagRPCOLEMESSAGE
|
61
|
+
{
|
62
|
+
void *reserved1;
|
63
|
+
RPCOLEDATAREP dataRepresentation;
|
64
|
+
void *Buffer;
|
65
|
+
ULONG cbBuffer;
|
66
|
+
ULONG iMethod;
|
67
|
+
void *reserved2[ 5 ];
|
68
|
+
ULONG rpcFlags;
|
69
|
+
} RPCOLEMESSAGE;
|
70
|
+
|
71
|
+
typedef struct tagSTATSTG
|
72
|
+
{
|
73
|
+
LPOLESTR pwcsName;
|
74
|
+
DWORD type;
|
75
|
+
ULARGE_INTEGER cbSize;
|
76
|
+
FILETIME mtime;
|
77
|
+
FILETIME ctime;
|
78
|
+
FILETIME atime;
|
79
|
+
DWORD grfMode;
|
80
|
+
DWORD grfLocksSupported;
|
81
|
+
CLSID clsid;
|
82
|
+
DWORD grfStateBits;
|
83
|
+
DWORD reserved;
|
84
|
+
} STATSTG;
|
85
|
+
|
86
|
+
/* interface IUnkown */
|
87
|
+
typedef interface IUnknown IUnknown;
|
88
|
+
|
89
|
+
typedef struct IUnknownVtbl
|
90
|
+
{
|
91
|
+
BEGIN_INTERFACE
|
92
|
+
|
93
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
94
|
+
IUnknown * This,
|
95
|
+
REFIID riid,
|
96
|
+
_COM_Outptr_ void **ppvObject);
|
97
|
+
|
98
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
99
|
+
IUnknown * This);
|
100
|
+
|
101
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
102
|
+
IUnknown * This);
|
103
|
+
END_INTERFACE
|
104
|
+
} IUnknownVtbl;
|
105
|
+
|
106
|
+
interface IUnknown
|
107
|
+
{
|
108
|
+
CONST_VTBL struct IUnknownVtbl *lpVtbl;
|
109
|
+
};
|
110
|
+
|
111
|
+
typedef IUnknown *LPUNKNOWN;
|
112
|
+
|
113
|
+
typedef struct tagMULTI_QI
|
114
|
+
{
|
115
|
+
const IID *pIID;
|
116
|
+
IUnknown *pItf;
|
117
|
+
HRESULT hr;
|
118
|
+
} MULTI_QI;
|
119
|
+
|
120
|
+
/* interface IClassFactory */
|
121
|
+
typedef interface IClassFactory IClassFactory;
|
122
|
+
typedef struct IClassFactoryVtbl
|
123
|
+
{
|
124
|
+
BEGIN_INTERFACE
|
125
|
+
|
126
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
127
|
+
IClassFactory * This,
|
128
|
+
REFIID riid,
|
129
|
+
_COM_Outptr_ void **ppvObject);
|
130
|
+
|
131
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
132
|
+
IClassFactory * This);
|
133
|
+
|
134
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
135
|
+
IClassFactory * This);
|
136
|
+
|
137
|
+
HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
|
138
|
+
IClassFactory * This,
|
139
|
+
IUnknown *pUnkOuter,
|
140
|
+
REFIID riid,
|
141
|
+
_COM_Outptr_ void **ppvObject);
|
142
|
+
|
143
|
+
HRESULT ( STDMETHODCALLTYPE *LockServer )(
|
144
|
+
IClassFactory * This,
|
145
|
+
BOOL fLock);
|
146
|
+
|
147
|
+
END_INTERFACE
|
148
|
+
} IClassFactoryVtbl;
|
149
|
+
|
150
|
+
interface IClassFactory
|
151
|
+
{
|
152
|
+
CONST_VTBL struct IClassFactoryVtbl *lpVtbl;
|
153
|
+
};
|
154
|
+
|
155
|
+
|
156
|
+
/* IStream */
|
157
|
+
typedef interface IStream IStream;
|
158
|
+
typedef struct IStreamVtbl
|
159
|
+
{
|
160
|
+
BEGIN_INTERFACE
|
161
|
+
|
162
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
163
|
+
IStream * This,
|
164
|
+
REFIID riid,
|
165
|
+
_COM_Outptr_ void **ppvObject);
|
166
|
+
|
167
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
168
|
+
IStream * This);
|
169
|
+
|
170
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
171
|
+
IStream * This);
|
172
|
+
|
173
|
+
HRESULT ( STDMETHODCALLTYPE *Read )(
|
174
|
+
IStream * This,
|
175
|
+
void *pv,
|
176
|
+
ULONG cb,
|
177
|
+
ULONG *pcbRead);
|
178
|
+
|
179
|
+
HRESULT ( STDMETHODCALLTYPE *Write )(
|
180
|
+
IStream * This,
|
181
|
+
const void *pv,
|
182
|
+
ULONG cb,
|
183
|
+
ULONG *pcbWritten);
|
184
|
+
|
185
|
+
HRESULT ( STDMETHODCALLTYPE *Seek )(
|
186
|
+
IStream * This,
|
187
|
+
LARGE_INTEGER dlibMove,
|
188
|
+
DWORD dwOrigin,
|
189
|
+
ULARGE_INTEGER *plibNewPosition);
|
190
|
+
|
191
|
+
HRESULT ( STDMETHODCALLTYPE *SetSize )(
|
192
|
+
IStream * This,
|
193
|
+
ULARGE_INTEGER libNewSize);
|
194
|
+
|
195
|
+
HRESULT ( STDMETHODCALLTYPE *CopyTo )(
|
196
|
+
IStream * This,
|
197
|
+
IStream *pstm,
|
198
|
+
ULARGE_INTEGER cb,
|
199
|
+
ULARGE_INTEGER *pcbRead,
|
200
|
+
ULARGE_INTEGER *pcbWritten);
|
201
|
+
|
202
|
+
HRESULT ( STDMETHODCALLTYPE *Commit )(
|
203
|
+
IStream * This,
|
204
|
+
DWORD grfCommitFlags);
|
205
|
+
|
206
|
+
HRESULT ( STDMETHODCALLTYPE *Revert )(
|
207
|
+
IStream * This);
|
208
|
+
|
209
|
+
HRESULT ( STDMETHODCALLTYPE *LockRegion )(
|
210
|
+
IStream * This,
|
211
|
+
ULARGE_INTEGER libOffset,
|
212
|
+
ULARGE_INTEGER cb,
|
213
|
+
DWORD dwLockType);
|
214
|
+
|
215
|
+
HRESULT ( STDMETHODCALLTYPE *UnlockRegion )(
|
216
|
+
IStream * This,
|
217
|
+
ULARGE_INTEGER libOffset,
|
218
|
+
ULARGE_INTEGER cb,
|
219
|
+
DWORD dwLockType);
|
220
|
+
|
221
|
+
HRESULT ( STDMETHODCALLTYPE *Stat )(
|
222
|
+
IStream * This,
|
223
|
+
STATSTG *pstatstg,
|
224
|
+
DWORD grfStatFlag);
|
225
|
+
|
226
|
+
HRESULT ( STDMETHODCALLTYPE *Clone )(
|
227
|
+
IStream * This,
|
228
|
+
IStream **ppstm);
|
229
|
+
|
230
|
+
END_INTERFACE
|
231
|
+
} IStreamVtbl;
|
232
|
+
|
233
|
+
interface IStream
|
234
|
+
{
|
235
|
+
CONST_VTBL struct IStreamVtbl *lpVtbl;
|
236
|
+
};
|
237
|
+
|
238
|
+
typedef IStream *LPSTREAM;
|
239
|
+
|
240
|
+
|
241
|
+
/* IEnumSTATSTG */
|
242
|
+
typedef interface IEnumSTATSTG IEnumSTATSTG;
|
243
|
+
typedef struct IEnumSTATSTGVtbl
|
244
|
+
{
|
245
|
+
BEGIN_INTERFACE
|
246
|
+
|
247
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
248
|
+
IEnumSTATSTG * This,
|
249
|
+
REFIID riid,
|
250
|
+
void **ppvObject);
|
251
|
+
|
252
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
253
|
+
IEnumSTATSTG * This);
|
254
|
+
|
255
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
256
|
+
IEnumSTATSTG * This);
|
257
|
+
|
258
|
+
HRESULT ( STDMETHODCALLTYPE *Next )(
|
259
|
+
IEnumSTATSTG * This,
|
260
|
+
ULONG celt,
|
261
|
+
STATSTG *rgelt,
|
262
|
+
ULONG *pceltFetched);
|
263
|
+
|
264
|
+
HRESULT ( STDMETHODCALLTYPE *Skip )(
|
265
|
+
IEnumSTATSTG * This,
|
266
|
+
ULONG celt);
|
267
|
+
|
268
|
+
HRESULT ( STDMETHODCALLTYPE *Reset )(
|
269
|
+
IEnumSTATSTG * This);
|
270
|
+
|
271
|
+
HRESULT ( STDMETHODCALLTYPE *Clone )(
|
272
|
+
IEnumSTATSTG * This,
|
273
|
+
IEnumSTATSTG **ppenum);
|
274
|
+
|
275
|
+
END_INTERFACE
|
276
|
+
} IEnumSTATSTGVtbl;
|
277
|
+
|
278
|
+
interface IEnumSTATSTG
|
279
|
+
{
|
280
|
+
CONST_VTBL struct IEnumSTATSTGVtbl *lpVtbl;
|
281
|
+
};
|
282
|
+
|
283
|
+
|
284
|
+
/* IStorage */
|
285
|
+
|
286
|
+
typedef LPOLESTR *SNB;
|
287
|
+
|
288
|
+
typedef interface IStorage IStorage;
|
289
|
+
typedef struct IStorageVtbl
|
290
|
+
{
|
291
|
+
BEGIN_INTERFACE
|
292
|
+
|
293
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
294
|
+
IStorage * This,
|
295
|
+
REFIID riid,
|
296
|
+
_COM_Outptr_ void **ppvObject);
|
297
|
+
|
298
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
299
|
+
IStorage * This);
|
300
|
+
|
301
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
302
|
+
IStorage * This);
|
303
|
+
|
304
|
+
HRESULT ( STDMETHODCALLTYPE *CreateStream )(
|
305
|
+
IStorage * This,
|
306
|
+
const OLECHAR *pwcsName,
|
307
|
+
DWORD grfMode,
|
308
|
+
DWORD reserved1,
|
309
|
+
DWORD reserved2,
|
310
|
+
IStream **ppstm);
|
311
|
+
|
312
|
+
HRESULT ( STDMETHODCALLTYPE *OpenStream )(
|
313
|
+
IStorage * This,
|
314
|
+
const OLECHAR *pwcsName,
|
315
|
+
void *reserved1,
|
316
|
+
DWORD grfMode,
|
317
|
+
DWORD reserved2,
|
318
|
+
IStream **ppstm);
|
319
|
+
|
320
|
+
HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
|
321
|
+
IStorage * This,
|
322
|
+
/* [string][in] */ const OLECHAR *pwcsName,
|
323
|
+
/* [in] */ DWORD grfMode,
|
324
|
+
/* [in] */ DWORD reserved1,
|
325
|
+
/* [in] */ DWORD reserved2,
|
326
|
+
/* [out] */ IStorage **ppstg);
|
327
|
+
|
328
|
+
HRESULT ( STDMETHODCALLTYPE *OpenStorage )(
|
329
|
+
IStorage * This,
|
330
|
+
/* [string][unique][in] */ const OLECHAR *pwcsName,
|
331
|
+
/* [unique][in] */ IStorage *pstgPriority,
|
332
|
+
/* [in] */ DWORD grfMode,
|
333
|
+
/* [unique][in] */ SNB snbExclude,
|
334
|
+
/* [in] */ DWORD reserved,
|
335
|
+
/* [out] */ IStorage **ppstg);
|
336
|
+
|
337
|
+
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )(
|
338
|
+
IStorage * This,
|
339
|
+
/* [in] */ DWORD ciidExclude,
|
340
|
+
/* [annotation][size_is][unique][in] */
|
341
|
+
const IID *rgiidExclude,
|
342
|
+
/* [annotation][unique][in] */
|
343
|
+
SNB snbExclude,
|
344
|
+
/* [annotation][unique][in] */
|
345
|
+
IStorage *pstgDest);
|
346
|
+
|
347
|
+
HRESULT ( STDMETHODCALLTYPE *MoveElementTo )(
|
348
|
+
IStorage * This,
|
349
|
+
/* [string][in] */ const OLECHAR *pwcsName,
|
350
|
+
/* [unique][in] */ IStorage *pstgDest,
|
351
|
+
/* [string][in] */ const OLECHAR *pwcsNewName,
|
352
|
+
/* [in] */ DWORD grfFlags);
|
353
|
+
|
354
|
+
HRESULT ( STDMETHODCALLTYPE *Commit )(
|
355
|
+
IStorage * This,
|
356
|
+
/* [in] */ DWORD grfCommitFlags);
|
357
|
+
|
358
|
+
HRESULT ( STDMETHODCALLTYPE *Revert )(
|
359
|
+
IStorage * This);
|
360
|
+
|
361
|
+
/* [local] */ HRESULT ( STDMETHODCALLTYPE *EnumElements )(
|
362
|
+
IStorage * This,
|
363
|
+
/* [annotation][in] */
|
364
|
+
DWORD reserved1,
|
365
|
+
/* [annotation][size_is][unique][in] */
|
366
|
+
void *reserved2,
|
367
|
+
/* [annotation][in] */
|
368
|
+
DWORD reserved3,
|
369
|
+
/* [annotation][out] */
|
370
|
+
IEnumSTATSTG **ppenum);
|
371
|
+
|
372
|
+
HRESULT ( STDMETHODCALLTYPE *DestroyElement )(
|
373
|
+
IStorage * This,
|
374
|
+
/* [string][in] */ const OLECHAR *pwcsName);
|
375
|
+
|
376
|
+
HRESULT ( STDMETHODCALLTYPE *RenameElement )(
|
377
|
+
IStorage * This,
|
378
|
+
/* [string][in] */ const OLECHAR *pwcsOldName,
|
379
|
+
/* [string][in] */ const OLECHAR *pwcsNewName);
|
380
|
+
|
381
|
+
HRESULT ( STDMETHODCALLTYPE *SetElementTimes )(
|
382
|
+
IStorage * This,
|
383
|
+
/* [string][unique][in] */ const OLECHAR *pwcsName,
|
384
|
+
/* [unique][in] */ const FILETIME *pctime,
|
385
|
+
/* [unique][in] */ const FILETIME *patime,
|
386
|
+
/* [unique][in] */ const FILETIME *pmtime);
|
387
|
+
|
388
|
+
HRESULT ( STDMETHODCALLTYPE *SetClass )(
|
389
|
+
IStorage * This,
|
390
|
+
/* [in] */ REFCLSID clsid);
|
391
|
+
|
392
|
+
HRESULT ( STDMETHODCALLTYPE *SetStateBits )(
|
393
|
+
IStorage * This,
|
394
|
+
/* [in] */ DWORD grfStateBits,
|
395
|
+
/* [in] */ DWORD grfMask);
|
396
|
+
|
397
|
+
HRESULT ( STDMETHODCALLTYPE *Stat )(
|
398
|
+
IStorage * This,
|
399
|
+
/* [out] */ STATSTG *pstatstg,
|
400
|
+
/* [in] */ DWORD grfStatFlag);
|
401
|
+
|
402
|
+
END_INTERFACE
|
403
|
+
} IStorageVtbl;
|
404
|
+
|
405
|
+
interface IStorage
|
406
|
+
{
|
407
|
+
CONST_VTBL struct IStorageVtbl *lpVtbl;
|
408
|
+
};
|
409
|
+
|
410
|
+
typedef /* [unique] */ IStorage *LPSTORAGE;
|
411
|
+
|
412
|
+
typedef interface IRpcChannelBuffer IRpcChannelBuffer;
|
413
|
+
typedef struct IRpcChannelBufferVtbl
|
414
|
+
{
|
415
|
+
BEGIN_INTERFACE
|
416
|
+
|
417
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
418
|
+
IRpcChannelBuffer * This,
|
419
|
+
/* [in] */ REFIID riid,
|
420
|
+
/* [annotation][iid_is][out] */
|
421
|
+
_COM_Outptr_ void **ppvObject);
|
422
|
+
|
423
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
424
|
+
IRpcChannelBuffer * This);
|
425
|
+
|
426
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
427
|
+
IRpcChannelBuffer * This);
|
428
|
+
|
429
|
+
HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
|
430
|
+
IRpcChannelBuffer * This,
|
431
|
+
/* [annotation][out][in] */
|
432
|
+
_Inout_ RPCOLEMESSAGE *pMessage,
|
433
|
+
/* [annotation][in] */
|
434
|
+
_In_ REFIID riid);
|
435
|
+
|
436
|
+
HRESULT ( STDMETHODCALLTYPE *SendReceive )(
|
437
|
+
IRpcChannelBuffer * This,
|
438
|
+
/* [annotation][out][in] */
|
439
|
+
_Inout_ RPCOLEMESSAGE *pMessage,
|
440
|
+
/* [annotation][out] */
|
441
|
+
_Out_opt_ ULONG *pStatus);
|
442
|
+
|
443
|
+
HRESULT ( STDMETHODCALLTYPE *FreeBuffer )(
|
444
|
+
IRpcChannelBuffer * This,
|
445
|
+
/* [annotation][out][in] */
|
446
|
+
_Inout_ RPCOLEMESSAGE *pMessage);
|
447
|
+
|
448
|
+
HRESULT ( STDMETHODCALLTYPE *GetDestCtx )(
|
449
|
+
IRpcChannelBuffer * This,
|
450
|
+
/* [annotation][out] */
|
451
|
+
_Out_ DWORD *pdwDestContext,
|
452
|
+
/* [annotation][out] */
|
453
|
+
void **ppvDestContext);
|
454
|
+
|
455
|
+
HRESULT ( STDMETHODCALLTYPE *IsConnected )(
|
456
|
+
IRpcChannelBuffer * This);
|
457
|
+
|
458
|
+
END_INTERFACE
|
459
|
+
} IRpcChannelBufferVtbl;
|
460
|
+
|
461
|
+
interface IRpcChannelBuffer
|
462
|
+
{
|
463
|
+
CONST_VTBL struct IRpcChannelBufferVtbl *lpVtbl;
|
464
|
+
};
|
465
|
+
|
466
|
+
typedef interface IRpcProxyBuffer IRpcProxyBuffer;
|
467
|
+
typedef struct IRpcProxyBufferVtbl
|
468
|
+
{
|
469
|
+
BEGIN_INTERFACE
|
470
|
+
|
471
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
472
|
+
IRpcProxyBuffer * This,
|
473
|
+
/* [in] */ REFIID riid,
|
474
|
+
/* [annotation][iid_is][out] */
|
475
|
+
_COM_Outptr_ void **ppvObject);
|
476
|
+
|
477
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
478
|
+
IRpcProxyBuffer * This);
|
479
|
+
|
480
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
481
|
+
IRpcProxyBuffer * This);
|
482
|
+
|
483
|
+
HRESULT ( STDMETHODCALLTYPE *Connect )(
|
484
|
+
IRpcProxyBuffer * This,
|
485
|
+
/* [annotation][unique][in] */
|
486
|
+
_In_ IRpcChannelBuffer *pRpcChannelBuffer);
|
487
|
+
|
488
|
+
void ( STDMETHODCALLTYPE *Disconnect )(
|
489
|
+
IRpcProxyBuffer * This);
|
490
|
+
|
491
|
+
END_INTERFACE
|
492
|
+
} IRpcProxyBufferVtbl;
|
493
|
+
|
494
|
+
interface IRpcProxyBuffer
|
495
|
+
{
|
496
|
+
CONST_VTBL struct IRpcProxyBufferVtbl *lpVtbl;
|
497
|
+
};
|
498
|
+
|
499
|
+
typedef interface IRpcStubBuffer IRpcStubBuffer;
|
500
|
+
typedef struct IRpcStubBufferVtbl
|
501
|
+
{
|
502
|
+
BEGIN_INTERFACE
|
503
|
+
|
504
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
505
|
+
IRpcStubBuffer * This,
|
506
|
+
/* [in] */ REFIID riid,
|
507
|
+
/* [annotation][iid_is][out] */
|
508
|
+
_COM_Outptr_ void **ppvObject);
|
509
|
+
|
510
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
511
|
+
IRpcStubBuffer * This);
|
512
|
+
|
513
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
514
|
+
IRpcStubBuffer * This);
|
515
|
+
|
516
|
+
HRESULT ( STDMETHODCALLTYPE *Connect )(
|
517
|
+
IRpcStubBuffer * This,
|
518
|
+
/* [annotation][in] */
|
519
|
+
_In_ IUnknown *pUnkServer);
|
520
|
+
|
521
|
+
void ( STDMETHODCALLTYPE *Disconnect )(
|
522
|
+
IRpcStubBuffer * This);
|
523
|
+
|
524
|
+
HRESULT ( STDMETHODCALLTYPE *Invoke )(
|
525
|
+
IRpcStubBuffer * This,
|
526
|
+
/* [annotation][out][in] */
|
527
|
+
_Inout_ RPCOLEMESSAGE *_prpcmsg,
|
528
|
+
/* [annotation][in] */
|
529
|
+
_In_ IRpcChannelBuffer *_pRpcChannelBuffer);
|
530
|
+
|
531
|
+
IRpcStubBuffer *( STDMETHODCALLTYPE *IsIIDSupported )(
|
532
|
+
IRpcStubBuffer * This,
|
533
|
+
/* [annotation][in] */
|
534
|
+
_In_ REFIID riid);
|
535
|
+
|
536
|
+
ULONG ( STDMETHODCALLTYPE *CountRefs )(
|
537
|
+
IRpcStubBuffer * This);
|
538
|
+
|
539
|
+
HRESULT ( STDMETHODCALLTYPE *DebugServerQueryInterface )(
|
540
|
+
IRpcStubBuffer * This,
|
541
|
+
/* [annotation][out] */
|
542
|
+
_Outptr_ void **ppv);
|
543
|
+
|
544
|
+
void ( STDMETHODCALLTYPE *DebugServerRelease )(
|
545
|
+
IRpcStubBuffer * This,
|
546
|
+
/* [annotation][in] */
|
547
|
+
_In_ void *pv);
|
548
|
+
|
549
|
+
END_INTERFACE
|
550
|
+
} IRpcStubBufferVtbl;
|
551
|
+
|
552
|
+
interface IRpcStubBuffer
|
553
|
+
{
|
554
|
+
CONST_VTBL struct IRpcStubBufferVtbl *lpVtbl;
|
555
|
+
};
|
556
|
+
|
557
|
+
|
558
|
+
|
559
|
+
typedef interface IPSFactoryBuffer IPSFactoryBuffer;
|
560
|
+
typedef struct IPSFactoryBufferVtbl
|
561
|
+
{
|
562
|
+
BEGIN_INTERFACE
|
563
|
+
|
564
|
+
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
565
|
+
IPSFactoryBuffer * This,
|
566
|
+
/* [in] */ REFIID riid,
|
567
|
+
/* [annotation][iid_is][out] */
|
568
|
+
_COM_Outptr_ void **ppvObject);
|
569
|
+
|
570
|
+
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
571
|
+
IPSFactoryBuffer * This);
|
572
|
+
|
573
|
+
ULONG ( STDMETHODCALLTYPE *Release )(
|
574
|
+
IPSFactoryBuffer * This);
|
575
|
+
|
576
|
+
HRESULT ( STDMETHODCALLTYPE *CreateProxy )(
|
577
|
+
IPSFactoryBuffer * This,
|
578
|
+
/* [annotation][in] */
|
579
|
+
_In_ IUnknown *pUnkOuter,
|
580
|
+
/* [annotation][in] */
|
581
|
+
_In_ REFIID riid,
|
582
|
+
/* [annotation][out] */
|
583
|
+
_Outptr_ IRpcProxyBuffer **ppProxy,
|
584
|
+
/* [annotation][out] */
|
585
|
+
_Outptr_ void **ppv);
|
586
|
+
|
587
|
+
HRESULT ( STDMETHODCALLTYPE *CreateStub )(
|
588
|
+
IPSFactoryBuffer * This,
|
589
|
+
/* [annotation][in] */
|
590
|
+
_In_ REFIID riid,
|
591
|
+
/* [annotation][unique][in] */
|
592
|
+
_In_opt_ IUnknown *pUnkServer,
|
593
|
+
/* [annotation][out] */
|
594
|
+
_Outptr_ IRpcStubBuffer **ppStub);
|
595
|
+
|
596
|
+
END_INTERFACE
|
597
|
+
} IPSFactoryBufferVtbl;
|
598
|
+
|
599
|
+
interface IPSFactoryBuffer
|
600
|
+
{
|
601
|
+
CONST_VTBL struct IPSFactoryBufferVtbl *lpVtbl;
|
602
|
+
};
|
603
|
+
|
604
|
+
|
605
|
+
|
606
|
+
typedef __int64 OXID;
|
607
|
+
typedef __int64 OID;
|
608
|
+
typedef GUID IPID;
|
609
|
+
|
610
|
+
typedef struct tagDUALSTRINGARRAY {
|
611
|
+
unsigned short wNumEntries;
|
612
|
+
unsigned short wSecurityOffset;
|
613
|
+
unsigned short aStringArray[ANYSIZE_ARRAY];
|
614
|
+
} DUALSTRINGARRAY;
|
615
|
+
|
616
|
+
typedef struct tagSTDOBJREF {
|
617
|
+
unsigned long flags;
|
618
|
+
unsigned long cPublicRefs;
|
619
|
+
OXID oxid;
|
620
|
+
OID oid;
|
621
|
+
IPID ipid;
|
622
|
+
} STDOBJREF;
|
623
|
+
|
624
|
+
typedef struct tagOBJREF {
|
625
|
+
unsigned long signature;
|
626
|
+
unsigned long flags;
|
627
|
+
GUID iid;
|
628
|
+
union {
|
629
|
+
struct {
|
630
|
+
STDOBJREF std;
|
631
|
+
DUALSTRINGARRAY saResAddr;
|
632
|
+
} u_standard;
|
633
|
+
struct {
|
634
|
+
STDOBJREF std;
|
635
|
+
CLSID clsid;
|
636
|
+
DUALSTRINGARRAY saResAddr;
|
637
|
+
} u_handler;
|
638
|
+
struct {
|
639
|
+
CLSID clsid;
|
640
|
+
unsigned long cbExtension;
|
641
|
+
unsigned long size;
|
642
|
+
BYTE *pData;
|
643
|
+
} u_custom;
|
644
|
+
} u_objref;
|
645
|
+
} OBJREF;
|