Authors: Juraj Hercek <juraj@syncad.com>, Eric Frias <efrias@syncad.com>
[wine] / include / objidl.h
1 /*** Autogenerated by WIDL 0.1 from objidl.idl - Do not edit ***/
2 #include <rpc.h>
3 #include <rpcndr.h>
4
5 #ifndef __WIDL_OBJIDL_H
6 #define __WIDL_OBJIDL_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include <unknwn.h>
11 #ifndef __IStream_FWD_DEFINED__
12 #define __IStream_FWD_DEFINED__
13 typedef struct IStream IStream;
14 #endif
15
16 #ifndef __IStream16_FWD_DEFINED__
17 #define __IStream16_FWD_DEFINED__
18 typedef struct IStream16 IStream16;
19 #endif
20
21 #ifndef __IEnumString_FWD_DEFINED__
22 #define __IEnumString_FWD_DEFINED__
23 typedef struct IEnumString IEnumString;
24 #endif
25
26 #ifndef __IRunningObjectTable_FWD_DEFINED__
27 #define __IRunningObjectTable_FWD_DEFINED__
28 typedef struct IRunningObjectTable IRunningObjectTable;
29 #endif
30
31 #ifndef __IMoniker_FWD_DEFINED__
32 #define __IMoniker_FWD_DEFINED__
33 typedef struct IMoniker IMoniker;
34 #endif
35
36 #ifndef __IAdviseSink_FWD_DEFINED__
37 #define __IAdviseSink_FWD_DEFINED__
38 typedef struct IAdviseSink IAdviseSink;
39 #endif
40
41 #ifndef __IAsyncManager_FWD_DEFINED__
42 #define __IAsyncManager_FWD_DEFINED__
43 typedef struct IAsyncManager IAsyncManager;
44 #endif
45
46 #ifndef __IMarshal_FWD_DEFINED__
47 #define __IMarshal_FWD_DEFINED__
48 typedef struct IMarshal IMarshal;
49 #endif
50
51 typedef IMarshal *LPMARSHAL;
52
53 /*****************************************************************************
54  * IMarshal interface
55  */
56 #ifndef __IMarshal_INTERFACE_DEFINED__
57 #define __IMarshal_INTERFACE_DEFINED__
58
59 DEFINE_GUID(IID_IMarshal, 0x00000003, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
60 #if defined(__cplusplus) && !defined(CINTERFACE)
61 struct IMarshal : public IUnknown
62 {
63     virtual HRESULT STDMETHODCALLTYPE GetUnmarshalClass(
64         REFIID riid,
65         void* pv,
66         DWORD dwDestContext,
67         void* pvDestContext,
68         DWORD mshlflags,
69         CLSID* pCid) = 0;
70
71     virtual HRESULT STDMETHODCALLTYPE GetMarshalSizeMax(
72         REFIID riid,
73         void* pv,
74         DWORD dwDestContext,
75         void* pvDestContext,
76         DWORD mshlflags,
77         DWORD* pSize) = 0;
78
79     virtual HRESULT STDMETHODCALLTYPE MarshalInterface(
80         IStream* pStm,
81         REFIID riid,
82         void* pv,
83         DWORD dwDestContext,
84         void* pvDestContext,
85         DWORD mshlflags) = 0;
86
87     virtual HRESULT STDMETHODCALLTYPE UnmarshalInterface(
88         IStream* pStm,
89         REFIID riid,
90         void** ppv) = 0;
91
92     virtual HRESULT STDMETHODCALLTYPE ReleaseMarshalData(
93         IStream* pStm) = 0;
94
95     virtual HRESULT STDMETHODCALLTYPE DisconnectObject(
96         DWORD dwReserved) = 0;
97
98 };
99 #else
100 typedef struct IMarshalVtbl IMarshalVtbl;
101 struct IMarshal {
102     const IMarshalVtbl* lpVtbl;
103 };
104 struct IMarshalVtbl {
105     ICOM_MSVTABLE_COMPAT_FIELDS
106
107     /*** IUnknown methods ***/
108     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
109         IMarshal* This,
110         REFIID riid,
111         void** ppvObject);
112
113     ULONG (STDMETHODCALLTYPE *AddRef)(
114         IMarshal* This);
115
116     ULONG (STDMETHODCALLTYPE *Release)(
117         IMarshal* This);
118
119     /*** IMarshal methods ***/
120     HRESULT (STDMETHODCALLTYPE *GetUnmarshalClass)(
121         IMarshal* This,
122         REFIID riid,
123         void* pv,
124         DWORD dwDestContext,
125         void* pvDestContext,
126         DWORD mshlflags,
127         CLSID* pCid);
128
129     HRESULT (STDMETHODCALLTYPE *GetMarshalSizeMax)(
130         IMarshal* This,
131         REFIID riid,
132         void* pv,
133         DWORD dwDestContext,
134         void* pvDestContext,
135         DWORD mshlflags,
136         DWORD* pSize);
137
138     HRESULT (STDMETHODCALLTYPE *MarshalInterface)(
139         IMarshal* This,
140         IStream* pStm,
141         REFIID riid,
142         void* pv,
143         DWORD dwDestContext,
144         void* pvDestContext,
145         DWORD mshlflags);
146
147     HRESULT (STDMETHODCALLTYPE *UnmarshalInterface)(
148         IMarshal* This,
149         IStream* pStm,
150         REFIID riid,
151         void** ppv);
152
153     HRESULT (STDMETHODCALLTYPE *ReleaseMarshalData)(
154         IMarshal* This,
155         IStream* pStm);
156
157     HRESULT (STDMETHODCALLTYPE *DisconnectObject)(
158         IMarshal* This,
159         DWORD dwReserved);
160
161 };
162
163 /*** IUnknown methods ***/
164 #define IMarshal_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
165 #define IMarshal_AddRef(p) (p)->lpVtbl->AddRef(p)
166 #define IMarshal_Release(p) (p)->lpVtbl->Release(p)
167 /*** IMarshal methods ***/
168 #define IMarshal_GetUnmarshalClass(p,a,b,c,d,e,f) (p)->lpVtbl->GetUnmarshalClass(p,a,b,c,d,e,f)
169 #define IMarshal_GetMarshalSizeMax(p,a,b,c,d,e,f) (p)->lpVtbl->GetMarshalSizeMax(p,a,b,c,d,e,f)
170 #define IMarshal_MarshalInterface(p,a,b,c,d,e,f) (p)->lpVtbl->MarshalInterface(p,a,b,c,d,e,f)
171 #define IMarshal_UnmarshalInterface(p,a,b,c) (p)->lpVtbl->UnmarshalInterface(p,a,b,c)
172 #define IMarshal_ReleaseMarshalData(p,a) (p)->lpVtbl->ReleaseMarshalData(p,a)
173 #define IMarshal_DisconnectObject(p,a) (p)->lpVtbl->DisconnectObject(p,a)
174
175 #endif
176
177 #define IMarshal_METHODS \
178     ICOM_MSVTABLE_COMPAT_FIELDS \
179     /*** IUnknown methods ***/ \
180     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
181     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
182     STDMETHOD_(ULONG,Release)(THIS) PURE; \
183     /*** IMarshal methods ***/ \
184     STDMETHOD_(HRESULT,GetUnmarshalClass)(THIS_ REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, CLSID* pCid) PURE; \
185     STDMETHOD_(HRESULT,GetMarshalSizeMax)(THIS_ REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, DWORD* pSize) PURE; \
186     STDMETHOD_(HRESULT,MarshalInterface)(THIS_ IStream* pStm, REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags) PURE; \
187     STDMETHOD_(HRESULT,UnmarshalInterface)(THIS_ IStream* pStm, REFIID riid, void** ppv) PURE; \
188     STDMETHOD_(HRESULT,ReleaseMarshalData)(THIS_ IStream* pStm) PURE; \
189     STDMETHOD_(HRESULT,DisconnectObject)(THIS_ DWORD dwReserved) PURE;
190
191 HRESULT CALLBACK IMarshal_GetUnmarshalClass_Proxy(
192     IMarshal* This,
193     REFIID riid,
194     void* pv,
195     DWORD dwDestContext,
196     void* pvDestContext,
197     DWORD mshlflags,
198     CLSID* pCid);
199 void __RPC_STUB IMarshal_GetUnmarshalClass_Stub(
200     struct IRpcStubBuffer* This,
201     struct IRpcChannelBuffer* pRpcChannelBuffer,
202     PRPC_MESSAGE pRpcMessage,
203     DWORD* pdwStubPhase);
204 HRESULT CALLBACK IMarshal_GetMarshalSizeMax_Proxy(
205     IMarshal* This,
206     REFIID riid,
207     void* pv,
208     DWORD dwDestContext,
209     void* pvDestContext,
210     DWORD mshlflags,
211     DWORD* pSize);
212 void __RPC_STUB IMarshal_GetMarshalSizeMax_Stub(
213     struct IRpcStubBuffer* This,
214     struct IRpcChannelBuffer* pRpcChannelBuffer,
215     PRPC_MESSAGE pRpcMessage,
216     DWORD* pdwStubPhase);
217 HRESULT CALLBACK IMarshal_MarshalInterface_Proxy(
218     IMarshal* This,
219     IStream* pStm,
220     REFIID riid,
221     void* pv,
222     DWORD dwDestContext,
223     void* pvDestContext,
224     DWORD mshlflags);
225 void __RPC_STUB IMarshal_MarshalInterface_Stub(
226     struct IRpcStubBuffer* This,
227     struct IRpcChannelBuffer* pRpcChannelBuffer,
228     PRPC_MESSAGE pRpcMessage,
229     DWORD* pdwStubPhase);
230 HRESULT CALLBACK IMarshal_UnmarshalInterface_Proxy(
231     IMarshal* This,
232     IStream* pStm,
233     REFIID riid,
234     void** ppv);
235 void __RPC_STUB IMarshal_UnmarshalInterface_Stub(
236     struct IRpcStubBuffer* This,
237     struct IRpcChannelBuffer* pRpcChannelBuffer,
238     PRPC_MESSAGE pRpcMessage,
239     DWORD* pdwStubPhase);
240 HRESULT CALLBACK IMarshal_ReleaseMarshalData_Proxy(
241     IMarshal* This,
242     IStream* pStm);
243 void __RPC_STUB IMarshal_ReleaseMarshalData_Stub(
244     struct IRpcStubBuffer* This,
245     struct IRpcChannelBuffer* pRpcChannelBuffer,
246     PRPC_MESSAGE pRpcMessage,
247     DWORD* pdwStubPhase);
248 HRESULT CALLBACK IMarshal_DisconnectObject_Proxy(
249     IMarshal* This,
250     DWORD dwReserved);
251 void __RPC_STUB IMarshal_DisconnectObject_Stub(
252     struct IRpcStubBuffer* This,
253     struct IRpcChannelBuffer* pRpcChannelBuffer,
254     PRPC_MESSAGE pRpcMessage,
255     DWORD* pdwStubPhase);
256
257 #endif  /* __IMarshal_INTERFACE_DEFINED__ */
258
259 #ifndef __IStdMarshalInfo_FWD_DEFINED__
260 #define __IStdMarshalInfo_FWD_DEFINED__
261 typedef struct IStdMarshalInfo IStdMarshalInfo;
262 #endif
263
264 typedef IStdMarshalInfo *LPSTDMARSHALINFO;
265
266 /*****************************************************************************
267  * IStdMarshalInfo interface
268  */
269 #ifndef __IStdMarshalInfo_INTERFACE_DEFINED__
270 #define __IStdMarshalInfo_INTERFACE_DEFINED__
271
272 DEFINE_GUID(IID_IStdMarshalInfo, 0x00000018, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
273 #if defined(__cplusplus) && !defined(CINTERFACE)
274 struct IStdMarshalInfo : public IUnknown
275 {
276     virtual HRESULT STDMETHODCALLTYPE GetClassForHandler(
277         DWORD dwDestContext,
278         void* pvDestContext,
279         CLSID* pClsid) = 0;
280
281 };
282 #else
283 typedef struct IStdMarshalInfoVtbl IStdMarshalInfoVtbl;
284 struct IStdMarshalInfo {
285     const IStdMarshalInfoVtbl* lpVtbl;
286 };
287 struct IStdMarshalInfoVtbl {
288     ICOM_MSVTABLE_COMPAT_FIELDS
289
290     /*** IUnknown methods ***/
291     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
292         IStdMarshalInfo* This,
293         REFIID riid,
294         void** ppvObject);
295
296     ULONG (STDMETHODCALLTYPE *AddRef)(
297         IStdMarshalInfo* This);
298
299     ULONG (STDMETHODCALLTYPE *Release)(
300         IStdMarshalInfo* This);
301
302     /*** IStdMarshalInfo methods ***/
303     HRESULT (STDMETHODCALLTYPE *GetClassForHandler)(
304         IStdMarshalInfo* This,
305         DWORD dwDestContext,
306         void* pvDestContext,
307         CLSID* pClsid);
308
309 };
310
311 /*** IUnknown methods ***/
312 #define IStdMarshalInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
313 #define IStdMarshalInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
314 #define IStdMarshalInfo_Release(p) (p)->lpVtbl->Release(p)
315 /*** IStdMarshalInfo methods ***/
316 #define IStdMarshalInfo_GetClassForHandler(p,a,b,c) (p)->lpVtbl->GetClassForHandler(p,a,b,c)
317
318 #endif
319
320 #define IStdMarshalInfo_METHODS \
321     ICOM_MSVTABLE_COMPAT_FIELDS \
322     /*** IUnknown methods ***/ \
323     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
324     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
325     STDMETHOD_(ULONG,Release)(THIS) PURE; \
326     /*** IStdMarshalInfo methods ***/ \
327     STDMETHOD_(HRESULT,GetClassForHandler)(THIS_ DWORD dwDestContext, void* pvDestContext, CLSID* pClsid) PURE;
328
329 HRESULT CALLBACK IStdMarshalInfo_GetClassForHandler_Proxy(
330     IStdMarshalInfo* This,
331     DWORD dwDestContext,
332     void* pvDestContext,
333     CLSID* pClsid);
334 void __RPC_STUB IStdMarshalInfo_GetClassForHandler_Stub(
335     struct IRpcStubBuffer* This,
336     struct IRpcChannelBuffer* pRpcChannelBuffer,
337     PRPC_MESSAGE pRpcMessage,
338     DWORD* pdwStubPhase);
339
340 #endif  /* __IStdMarshalInfo_INTERFACE_DEFINED__ */
341
342 #ifndef __IExternalConnection_FWD_DEFINED__
343 #define __IExternalConnection_FWD_DEFINED__
344 typedef struct IExternalConnection IExternalConnection;
345 #endif
346
347 typedef IExternalConnection *LPEXTERNALCONNECTION;
348
349 typedef enum tagEXTCONN {
350     EXTCONN_STRONG = 0x1,
351     EXTCONN_WEAK = 0x2,
352     EXTCONN_CALLABLE = 0x4
353 } EXTCONN;
354
355 /*****************************************************************************
356  * IExternalConnection interface
357  */
358 #ifndef __IExternalConnection_INTERFACE_DEFINED__
359 #define __IExternalConnection_INTERFACE_DEFINED__
360
361 DEFINE_GUID(IID_IExternalConnection, 0x00000019, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
362 #if defined(__cplusplus) && !defined(CINTERFACE)
363 struct IExternalConnection : public IUnknown
364 {
365     virtual DWORD STDMETHODCALLTYPE AddConnection(
366         DWORD extconn,
367         DWORD reserved) = 0;
368
369     virtual DWORD STDMETHODCALLTYPE ReleaseConnection(
370         DWORD extconn,
371         DWORD reserved,
372         BOOL fLastReleaseCloses) = 0;
373
374 };
375 #else
376 typedef struct IExternalConnectionVtbl IExternalConnectionVtbl;
377 struct IExternalConnection {
378     const IExternalConnectionVtbl* lpVtbl;
379 };
380 struct IExternalConnectionVtbl {
381     ICOM_MSVTABLE_COMPAT_FIELDS
382
383     /*** IUnknown methods ***/
384     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
385         IExternalConnection* This,
386         REFIID riid,
387         void** ppvObject);
388
389     ULONG (STDMETHODCALLTYPE *AddRef)(
390         IExternalConnection* This);
391
392     ULONG (STDMETHODCALLTYPE *Release)(
393         IExternalConnection* This);
394
395     /*** IExternalConnection methods ***/
396     DWORD (STDMETHODCALLTYPE *AddConnection)(
397         IExternalConnection* This,
398         DWORD extconn,
399         DWORD reserved);
400
401     DWORD (STDMETHODCALLTYPE *ReleaseConnection)(
402         IExternalConnection* This,
403         DWORD extconn,
404         DWORD reserved,
405         BOOL fLastReleaseCloses);
406
407 };
408
409 /*** IUnknown methods ***/
410 #define IExternalConnection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
411 #define IExternalConnection_AddRef(p) (p)->lpVtbl->AddRef(p)
412 #define IExternalConnection_Release(p) (p)->lpVtbl->Release(p)
413 /*** IExternalConnection methods ***/
414 #define IExternalConnection_AddConnection(p,a,b) (p)->lpVtbl->AddConnection(p,a,b)
415 #define IExternalConnection_ReleaseConnection(p,a,b,c) (p)->lpVtbl->ReleaseConnection(p,a,b,c)
416
417 #endif
418
419 #define IExternalConnection_METHODS \
420     ICOM_MSVTABLE_COMPAT_FIELDS \
421     /*** IUnknown methods ***/ \
422     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
423     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
424     STDMETHOD_(ULONG,Release)(THIS) PURE; \
425     /*** IExternalConnection methods ***/ \
426     STDMETHOD_(DWORD,AddConnection)(THIS_ DWORD extconn, DWORD reserved) PURE; \
427     STDMETHOD_(DWORD,ReleaseConnection)(THIS_ DWORD extconn, DWORD reserved, BOOL fLastReleaseCloses) PURE;
428
429 DWORD CALLBACK IExternalConnection_AddConnection_Proxy(
430     IExternalConnection* This,
431     DWORD extconn,
432     DWORD reserved);
433 void __RPC_STUB IExternalConnection_AddConnection_Stub(
434     struct IRpcStubBuffer* This,
435     struct IRpcChannelBuffer* pRpcChannelBuffer,
436     PRPC_MESSAGE pRpcMessage,
437     DWORD* pdwStubPhase);
438 DWORD CALLBACK IExternalConnection_ReleaseConnection_Proxy(
439     IExternalConnection* This,
440     DWORD extconn,
441     DWORD reserved,
442     BOOL fLastReleaseCloses);
443 void __RPC_STUB IExternalConnection_ReleaseConnection_Stub(
444     struct IRpcStubBuffer* This,
445     struct IRpcChannelBuffer* pRpcChannelBuffer,
446     PRPC_MESSAGE pRpcMessage,
447     DWORD* pdwStubPhase);
448
449 #endif  /* __IExternalConnection_INTERFACE_DEFINED__ */
450
451 #ifndef __IMultiQI_FWD_DEFINED__
452 #define __IMultiQI_FWD_DEFINED__
453 typedef struct IMultiQI IMultiQI;
454 #endif
455
456 typedef IMultiQI *LPMULTIQI;
457
458 typedef struct tagMULTI_QI {
459     const IID *pIID;
460     IUnknown *pItf;
461     HRESULT hr;
462 } MULTI_QI;
463
464 /*****************************************************************************
465  * IMultiQI interface
466  */
467 #ifndef __IMultiQI_INTERFACE_DEFINED__
468 #define __IMultiQI_INTERFACE_DEFINED__
469
470 DEFINE_GUID(IID_IMultiQI, 0x00000020, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
471 #if defined(__cplusplus) && !defined(CINTERFACE)
472 struct IMultiQI : public IUnknown
473 {
474     virtual HRESULT STDMETHODCALLTYPE QueryMultipleInterfaces(
475         ULONG cMQIs,
476         MULTI_QI* pMQIs) = 0;
477
478 };
479 #else
480 typedef struct IMultiQIVtbl IMultiQIVtbl;
481 struct IMultiQI {
482     const IMultiQIVtbl* lpVtbl;
483 };
484 struct IMultiQIVtbl {
485     ICOM_MSVTABLE_COMPAT_FIELDS
486
487     /*** IUnknown methods ***/
488     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
489         IMultiQI* This,
490         REFIID riid,
491         void** ppvObject);
492
493     ULONG (STDMETHODCALLTYPE *AddRef)(
494         IMultiQI* This);
495
496     ULONG (STDMETHODCALLTYPE *Release)(
497         IMultiQI* This);
498
499     /*** IMultiQI methods ***/
500     HRESULT (STDMETHODCALLTYPE *QueryMultipleInterfaces)(
501         IMultiQI* This,
502         ULONG cMQIs,
503         MULTI_QI* pMQIs);
504
505 };
506
507 /*** IUnknown methods ***/
508 #define IMultiQI_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
509 #define IMultiQI_AddRef(p) (p)->lpVtbl->AddRef(p)
510 #define IMultiQI_Release(p) (p)->lpVtbl->Release(p)
511 /*** IMultiQI methods ***/
512 #define IMultiQI_QueryMultipleInterfaces(p,a,b) (p)->lpVtbl->QueryMultipleInterfaces(p,a,b)
513
514 #endif
515
516 #define IMultiQI_METHODS \
517     ICOM_MSVTABLE_COMPAT_FIELDS \
518     /*** IUnknown methods ***/ \
519     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
520     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
521     STDMETHOD_(ULONG,Release)(THIS) PURE; \
522     /*** IMultiQI methods ***/ \
523     STDMETHOD_(HRESULT,QueryMultipleInterfaces)(THIS_ ULONG cMQIs, MULTI_QI* pMQIs) PURE;
524
525 HRESULT CALLBACK IMultiQI_QueryMultipleInterfaces_Proxy(
526     IMultiQI* This,
527     ULONG cMQIs,
528     MULTI_QI* pMQIs);
529 void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub(
530     struct IRpcStubBuffer* This,
531     struct IRpcChannelBuffer* pRpcChannelBuffer,
532     PRPC_MESSAGE pRpcMessage,
533     DWORD* pdwStubPhase);
534
535 #endif  /* __IMultiQI_INTERFACE_DEFINED__ */
536
537 #ifndef __IMalloc_FWD_DEFINED__
538 #define __IMalloc_FWD_DEFINED__
539 typedef struct IMalloc IMalloc;
540 #endif
541
542 typedef IMalloc *LPMALLOC;
543
544 /*****************************************************************************
545  * IMalloc interface
546  */
547 #ifndef __IMalloc_INTERFACE_DEFINED__
548 #define __IMalloc_INTERFACE_DEFINED__
549
550 DEFINE_GUID(IID_IMalloc, 0x00000002, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
551 #if defined(__cplusplus) && !defined(CINTERFACE)
552 struct IMalloc : public IUnknown
553 {
554     virtual LPVOID STDMETHODCALLTYPE Alloc(
555         ULONG cb) = 0;
556
557     virtual LPVOID STDMETHODCALLTYPE Realloc(
558         LPVOID pv,
559         ULONG cb) = 0;
560
561     virtual void STDMETHODCALLTYPE Free(
562         LPVOID pv) = 0;
563
564     virtual ULONG STDMETHODCALLTYPE GetSize(
565         LPVOID pv) = 0;
566
567     virtual int STDMETHODCALLTYPE DidAlloc(
568         LPVOID pv) = 0;
569
570     virtual void STDMETHODCALLTYPE HeapMinimize(
571         ) = 0;
572
573 };
574 #else
575 typedef struct IMallocVtbl IMallocVtbl;
576 struct IMalloc {
577     const IMallocVtbl* lpVtbl;
578 };
579 struct IMallocVtbl {
580     ICOM_MSVTABLE_COMPAT_FIELDS
581
582     /*** IUnknown methods ***/
583     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
584         IMalloc* This,
585         REFIID riid,
586         void** ppvObject);
587
588     ULONG (STDMETHODCALLTYPE *AddRef)(
589         IMalloc* This);
590
591     ULONG (STDMETHODCALLTYPE *Release)(
592         IMalloc* This);
593
594     /*** IMalloc methods ***/
595     LPVOID (STDMETHODCALLTYPE *Alloc)(
596         IMalloc* This,
597         ULONG cb);
598
599     LPVOID (STDMETHODCALLTYPE *Realloc)(
600         IMalloc* This,
601         LPVOID pv,
602         ULONG cb);
603
604     void (STDMETHODCALLTYPE *Free)(
605         IMalloc* This,
606         LPVOID pv);
607
608     ULONG (STDMETHODCALLTYPE *GetSize)(
609         IMalloc* This,
610         LPVOID pv);
611
612     int (STDMETHODCALLTYPE *DidAlloc)(
613         IMalloc* This,
614         LPVOID pv);
615
616     void (STDMETHODCALLTYPE *HeapMinimize)(
617         IMalloc* This);
618
619 };
620
621 /*** IUnknown methods ***/
622 #define IMalloc_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
623 #define IMalloc_AddRef(p) (p)->lpVtbl->AddRef(p)
624 #define IMalloc_Release(p) (p)->lpVtbl->Release(p)
625 /*** IMalloc methods ***/
626 #define IMalloc_Alloc(p,a) (p)->lpVtbl->Alloc(p,a)
627 #define IMalloc_Realloc(p,a,b) (p)->lpVtbl->Realloc(p,a,b)
628 #define IMalloc_Free(p,a) (p)->lpVtbl->Free(p,a)
629 #define IMalloc_GetSize(p,a) (p)->lpVtbl->GetSize(p,a)
630 #define IMalloc_DidAlloc(p,a) (p)->lpVtbl->DidAlloc(p,a)
631 #define IMalloc_HeapMinimize(p) (p)->lpVtbl->HeapMinimize(p)
632
633 #endif
634
635 #define IMalloc_METHODS \
636     ICOM_MSVTABLE_COMPAT_FIELDS \
637     /*** IUnknown methods ***/ \
638     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
639     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
640     STDMETHOD_(ULONG,Release)(THIS) PURE; \
641     /*** IMalloc methods ***/ \
642     STDMETHOD_(LPVOID,Alloc)(THIS_ ULONG cb) PURE; \
643     STDMETHOD_(LPVOID,Realloc)(THIS_ LPVOID pv, ULONG cb) PURE; \
644     STDMETHOD_(void,Free)(THIS_ LPVOID pv) PURE; \
645     STDMETHOD_(ULONG,GetSize)(THIS_ LPVOID pv) PURE; \
646     STDMETHOD_(int,DidAlloc)(THIS_ LPVOID pv) PURE; \
647     STDMETHOD_(void,HeapMinimize)(THIS) PURE;
648
649 LPVOID CALLBACK IMalloc_Alloc_Proxy(
650     IMalloc* This,
651     ULONG cb);
652 void __RPC_STUB IMalloc_Alloc_Stub(
653     struct IRpcStubBuffer* This,
654     struct IRpcChannelBuffer* pRpcChannelBuffer,
655     PRPC_MESSAGE pRpcMessage,
656     DWORD* pdwStubPhase);
657 LPVOID CALLBACK IMalloc_Realloc_Proxy(
658     IMalloc* This,
659     LPVOID pv,
660     ULONG cb);
661 void __RPC_STUB IMalloc_Realloc_Stub(
662     struct IRpcStubBuffer* This,
663     struct IRpcChannelBuffer* pRpcChannelBuffer,
664     PRPC_MESSAGE pRpcMessage,
665     DWORD* pdwStubPhase);
666 void CALLBACK IMalloc_Free_Proxy(
667     IMalloc* This,
668     LPVOID pv);
669 void __RPC_STUB IMalloc_Free_Stub(
670     struct IRpcStubBuffer* This,
671     struct IRpcChannelBuffer* pRpcChannelBuffer,
672     PRPC_MESSAGE pRpcMessage,
673     DWORD* pdwStubPhase);
674 ULONG CALLBACK IMalloc_GetSize_Proxy(
675     IMalloc* This,
676     LPVOID pv);
677 void __RPC_STUB IMalloc_GetSize_Stub(
678     struct IRpcStubBuffer* This,
679     struct IRpcChannelBuffer* pRpcChannelBuffer,
680     PRPC_MESSAGE pRpcMessage,
681     DWORD* pdwStubPhase);
682 int CALLBACK IMalloc_DidAlloc_Proxy(
683     IMalloc* This,
684     LPVOID pv);
685 void __RPC_STUB IMalloc_DidAlloc_Stub(
686     struct IRpcStubBuffer* This,
687     struct IRpcChannelBuffer* pRpcChannelBuffer,
688     PRPC_MESSAGE pRpcMessage,
689     DWORD* pdwStubPhase);
690 void CALLBACK IMalloc_HeapMinimize_Proxy(
691     IMalloc* This);
692 void __RPC_STUB IMalloc_HeapMinimize_Stub(
693     struct IRpcStubBuffer* This,
694     struct IRpcChannelBuffer* pRpcChannelBuffer,
695     PRPC_MESSAGE pRpcMessage,
696     DWORD* pdwStubPhase);
697
698 #endif  /* __IMalloc_INTERFACE_DEFINED__ */
699
700 #ifndef __IMallocSpy_FWD_DEFINED__
701 #define __IMallocSpy_FWD_DEFINED__
702 typedef struct IMallocSpy IMallocSpy;
703 #endif
704
705 typedef IMallocSpy *LPMALLOCSPY;
706
707 /*****************************************************************************
708  * IMallocSpy interface
709  */
710 #ifndef __IMallocSpy_INTERFACE_DEFINED__
711 #define __IMallocSpy_INTERFACE_DEFINED__
712
713 DEFINE_GUID(IID_IMallocSpy, 0x0000001d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
714 #if defined(__cplusplus) && !defined(CINTERFACE)
715 struct IMallocSpy : public IUnknown
716 {
717     virtual ULONG STDMETHODCALLTYPE PreAlloc(
718         ULONG cbRequest) = 0;
719
720     virtual LPVOID STDMETHODCALLTYPE PostAlloc(
721         LPVOID pActual) = 0;
722
723     virtual LPVOID STDMETHODCALLTYPE PreFree(
724         LPVOID pRequest,
725         BOOL fSpyed) = 0;
726
727     virtual void STDMETHODCALLTYPE PostFree(
728         BOOL fSpyed) = 0;
729
730     virtual ULONG STDMETHODCALLTYPE PreRealloc(
731         LPVOID pRequest,
732         ULONG cbRequest,
733         LPVOID* ppNewRequest,
734         BOOL fSpyed) = 0;
735
736     virtual LPVOID STDMETHODCALLTYPE PostRealloc(
737         LPVOID pActual,
738         BOOL fSpyed) = 0;
739
740     virtual LPVOID STDMETHODCALLTYPE PreGetSize(
741         LPVOID pRequest,
742         BOOL fSpyed) = 0;
743
744     virtual ULONG STDMETHODCALLTYPE PostGetSize(
745         ULONG cbActual,
746         BOOL fSpyed) = 0;
747
748     virtual LPVOID STDMETHODCALLTYPE PreDidAlloc(
749         LPVOID pRequest,
750         BOOL fSpyed) = 0;
751
752     virtual int STDMETHODCALLTYPE PostDidAlloc(
753         LPVOID pRequest,
754         BOOL fSpyed,
755         int fActual) = 0;
756
757     virtual void STDMETHODCALLTYPE PreHeapMinimize(
758         ) = 0;
759
760     virtual void STDMETHODCALLTYPE PostHeapMinimize(
761         ) = 0;
762
763 };
764 #else
765 typedef struct IMallocSpyVtbl IMallocSpyVtbl;
766 struct IMallocSpy {
767     const IMallocSpyVtbl* lpVtbl;
768 };
769 struct IMallocSpyVtbl {
770     ICOM_MSVTABLE_COMPAT_FIELDS
771
772     /*** IUnknown methods ***/
773     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
774         IMallocSpy* This,
775         REFIID riid,
776         void** ppvObject);
777
778     ULONG (STDMETHODCALLTYPE *AddRef)(
779         IMallocSpy* This);
780
781     ULONG (STDMETHODCALLTYPE *Release)(
782         IMallocSpy* This);
783
784     /*** IMallocSpy methods ***/
785     ULONG (STDMETHODCALLTYPE *PreAlloc)(
786         IMallocSpy* This,
787         ULONG cbRequest);
788
789     LPVOID (STDMETHODCALLTYPE *PostAlloc)(
790         IMallocSpy* This,
791         LPVOID pActual);
792
793     LPVOID (STDMETHODCALLTYPE *PreFree)(
794         IMallocSpy* This,
795         LPVOID pRequest,
796         BOOL fSpyed);
797
798     void (STDMETHODCALLTYPE *PostFree)(
799         IMallocSpy* This,
800         BOOL fSpyed);
801
802     ULONG (STDMETHODCALLTYPE *PreRealloc)(
803         IMallocSpy* This,
804         LPVOID pRequest,
805         ULONG cbRequest,
806         LPVOID* ppNewRequest,
807         BOOL fSpyed);
808
809     LPVOID (STDMETHODCALLTYPE *PostRealloc)(
810         IMallocSpy* This,
811         LPVOID pActual,
812         BOOL fSpyed);
813
814     LPVOID (STDMETHODCALLTYPE *PreGetSize)(
815         IMallocSpy* This,
816         LPVOID pRequest,
817         BOOL fSpyed);
818
819     ULONG (STDMETHODCALLTYPE *PostGetSize)(
820         IMallocSpy* This,
821         ULONG cbActual,
822         BOOL fSpyed);
823
824     LPVOID (STDMETHODCALLTYPE *PreDidAlloc)(
825         IMallocSpy* This,
826         LPVOID pRequest,
827         BOOL fSpyed);
828
829     int (STDMETHODCALLTYPE *PostDidAlloc)(
830         IMallocSpy* This,
831         LPVOID pRequest,
832         BOOL fSpyed,
833         int fActual);
834
835     void (STDMETHODCALLTYPE *PreHeapMinimize)(
836         IMallocSpy* This);
837
838     void (STDMETHODCALLTYPE *PostHeapMinimize)(
839         IMallocSpy* This);
840
841 };
842
843 /*** IUnknown methods ***/
844 #define IMallocSpy_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
845 #define IMallocSpy_AddRef(p) (p)->lpVtbl->AddRef(p)
846 #define IMallocSpy_Release(p) (p)->lpVtbl->Release(p)
847 /*** IMallocSpy methods ***/
848 #define IMallocSpy_PreAlloc(p,a) (p)->lpVtbl->PreAlloc(p,a)
849 #define IMallocSpy_PostAlloc(p,a) (p)->lpVtbl->PostAlloc(p,a)
850 #define IMallocSpy_PreFree(p,a,b) (p)->lpVtbl->PreFree(p,a,b)
851 #define IMallocSpy_PostFree(p,a) (p)->lpVtbl->PostFree(p,a)
852 #define IMallocSpy_PreRealloc(p,a,b,c,d) (p)->lpVtbl->PreRealloc(p,a,b,c,d)
853 #define IMallocSpy_PostRealloc(p,a,b) (p)->lpVtbl->PostRealloc(p,a,b)
854 #define IMallocSpy_PreGetSize(p,a,b) (p)->lpVtbl->PreGetSize(p,a,b)
855 #define IMallocSpy_PostGetSize(p,a,b) (p)->lpVtbl->PostGetSize(p,a,b)
856 #define IMallocSpy_PreDidAlloc(p,a,b) (p)->lpVtbl->PreDidAlloc(p,a,b)
857 #define IMallocSpy_PostDidAlloc(p,a,b,c) (p)->lpVtbl->PostDidAlloc(p,a,b,c)
858 #define IMallocSpy_PreHeapMinimize(p) (p)->lpVtbl->PreHeapMinimize(p)
859 #define IMallocSpy_PostHeapMinimize(p) (p)->lpVtbl->PostHeapMinimize(p)
860
861 #endif
862
863 #define IMallocSpy_METHODS \
864     ICOM_MSVTABLE_COMPAT_FIELDS \
865     /*** IUnknown methods ***/ \
866     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
867     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
868     STDMETHOD_(ULONG,Release)(THIS) PURE; \
869     /*** IMallocSpy methods ***/ \
870     STDMETHOD_(ULONG,PreAlloc)(THIS_ ULONG cbRequest) PURE; \
871     STDMETHOD_(LPVOID,PostAlloc)(THIS_ LPVOID pActual) PURE; \
872     STDMETHOD_(LPVOID,PreFree)(THIS_ LPVOID pRequest, BOOL fSpyed) PURE; \
873     STDMETHOD_(void,PostFree)(THIS_ BOOL fSpyed) PURE; \
874     STDMETHOD_(ULONG,PreRealloc)(THIS_ LPVOID pRequest, ULONG cbRequest, LPVOID* ppNewRequest, BOOL fSpyed) PURE; \
875     STDMETHOD_(LPVOID,PostRealloc)(THIS_ LPVOID pActual, BOOL fSpyed) PURE; \
876     STDMETHOD_(LPVOID,PreGetSize)(THIS_ LPVOID pRequest, BOOL fSpyed) PURE; \
877     STDMETHOD_(ULONG,PostGetSize)(THIS_ ULONG cbActual, BOOL fSpyed) PURE; \
878     STDMETHOD_(LPVOID,PreDidAlloc)(THIS_ LPVOID pRequest, BOOL fSpyed) PURE; \
879     STDMETHOD_(int,PostDidAlloc)(THIS_ LPVOID pRequest, BOOL fSpyed, int fActual) PURE; \
880     STDMETHOD_(void,PreHeapMinimize)(THIS) PURE; \
881     STDMETHOD_(void,PostHeapMinimize)(THIS) PURE;
882
883 ULONG CALLBACK IMallocSpy_PreAlloc_Proxy(
884     IMallocSpy* This,
885     ULONG cbRequest);
886 void __RPC_STUB IMallocSpy_PreAlloc_Stub(
887     struct IRpcStubBuffer* This,
888     struct IRpcChannelBuffer* pRpcChannelBuffer,
889     PRPC_MESSAGE pRpcMessage,
890     DWORD* pdwStubPhase);
891 LPVOID CALLBACK IMallocSpy_PostAlloc_Proxy(
892     IMallocSpy* This,
893     LPVOID pActual);
894 void __RPC_STUB IMallocSpy_PostAlloc_Stub(
895     struct IRpcStubBuffer* This,
896     struct IRpcChannelBuffer* pRpcChannelBuffer,
897     PRPC_MESSAGE pRpcMessage,
898     DWORD* pdwStubPhase);
899 LPVOID CALLBACK IMallocSpy_PreFree_Proxy(
900     IMallocSpy* This,
901     LPVOID pRequest,
902     BOOL fSpyed);
903 void __RPC_STUB IMallocSpy_PreFree_Stub(
904     struct IRpcStubBuffer* This,
905     struct IRpcChannelBuffer* pRpcChannelBuffer,
906     PRPC_MESSAGE pRpcMessage,
907     DWORD* pdwStubPhase);
908 void CALLBACK IMallocSpy_PostFree_Proxy(
909     IMallocSpy* This,
910     BOOL fSpyed);
911 void __RPC_STUB IMallocSpy_PostFree_Stub(
912     struct IRpcStubBuffer* This,
913     struct IRpcChannelBuffer* pRpcChannelBuffer,
914     PRPC_MESSAGE pRpcMessage,
915     DWORD* pdwStubPhase);
916 ULONG CALLBACK IMallocSpy_PreRealloc_Proxy(
917     IMallocSpy* This,
918     LPVOID pRequest,
919     ULONG cbRequest,
920     LPVOID* ppNewRequest,
921     BOOL fSpyed);
922 void __RPC_STUB IMallocSpy_PreRealloc_Stub(
923     struct IRpcStubBuffer* This,
924     struct IRpcChannelBuffer* pRpcChannelBuffer,
925     PRPC_MESSAGE pRpcMessage,
926     DWORD* pdwStubPhase);
927 LPVOID CALLBACK IMallocSpy_PostRealloc_Proxy(
928     IMallocSpy* This,
929     LPVOID pActual,
930     BOOL fSpyed);
931 void __RPC_STUB IMallocSpy_PostRealloc_Stub(
932     struct IRpcStubBuffer* This,
933     struct IRpcChannelBuffer* pRpcChannelBuffer,
934     PRPC_MESSAGE pRpcMessage,
935     DWORD* pdwStubPhase);
936 LPVOID CALLBACK IMallocSpy_PreGetSize_Proxy(
937     IMallocSpy* This,
938     LPVOID pRequest,
939     BOOL fSpyed);
940 void __RPC_STUB IMallocSpy_PreGetSize_Stub(
941     struct IRpcStubBuffer* This,
942     struct IRpcChannelBuffer* pRpcChannelBuffer,
943     PRPC_MESSAGE pRpcMessage,
944     DWORD* pdwStubPhase);
945 ULONG CALLBACK IMallocSpy_PostGetSize_Proxy(
946     IMallocSpy* This,
947     ULONG cbActual,
948     BOOL fSpyed);
949 void __RPC_STUB IMallocSpy_PostGetSize_Stub(
950     struct IRpcStubBuffer* This,
951     struct IRpcChannelBuffer* pRpcChannelBuffer,
952     PRPC_MESSAGE pRpcMessage,
953     DWORD* pdwStubPhase);
954 LPVOID CALLBACK IMallocSpy_PreDidAlloc_Proxy(
955     IMallocSpy* This,
956     LPVOID pRequest,
957     BOOL fSpyed);
958 void __RPC_STUB IMallocSpy_PreDidAlloc_Stub(
959     struct IRpcStubBuffer* This,
960     struct IRpcChannelBuffer* pRpcChannelBuffer,
961     PRPC_MESSAGE pRpcMessage,
962     DWORD* pdwStubPhase);
963 int CALLBACK IMallocSpy_PostDidAlloc_Proxy(
964     IMallocSpy* This,
965     LPVOID pRequest,
966     BOOL fSpyed,
967     int fActual);
968 void __RPC_STUB IMallocSpy_PostDidAlloc_Stub(
969     struct IRpcStubBuffer* This,
970     struct IRpcChannelBuffer* pRpcChannelBuffer,
971     PRPC_MESSAGE pRpcMessage,
972     DWORD* pdwStubPhase);
973 void CALLBACK IMallocSpy_PreHeapMinimize_Proxy(
974     IMallocSpy* This);
975 void __RPC_STUB IMallocSpy_PreHeapMinimize_Stub(
976     struct IRpcStubBuffer* This,
977     struct IRpcChannelBuffer* pRpcChannelBuffer,
978     PRPC_MESSAGE pRpcMessage,
979     DWORD* pdwStubPhase);
980 void CALLBACK IMallocSpy_PostHeapMinimize_Proxy(
981     IMallocSpy* This);
982 void __RPC_STUB IMallocSpy_PostHeapMinimize_Stub(
983     struct IRpcStubBuffer* This,
984     struct IRpcChannelBuffer* pRpcChannelBuffer,
985     PRPC_MESSAGE pRpcMessage,
986     DWORD* pdwStubPhase);
987
988 #endif  /* __IMallocSpy_INTERFACE_DEFINED__ */
989
990 #ifndef __IEnumUnknown_FWD_DEFINED__
991 #define __IEnumUnknown_FWD_DEFINED__
992 typedef struct IEnumUnknown IEnumUnknown;
993 #endif
994
995 typedef IEnumUnknown *LPENUMUNKNOWN;
996
997 /*****************************************************************************
998  * IEnumUnknown interface
999  */
1000 #ifndef __IEnumUnknown_INTERFACE_DEFINED__
1001 #define __IEnumUnknown_INTERFACE_DEFINED__
1002
1003 DEFINE_GUID(IID_IEnumUnknown, 0x00000100, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1004 #if defined(__cplusplus) && !defined(CINTERFACE)
1005 struct IEnumUnknown : public IUnknown
1006 {
1007     virtual HRESULT STDMETHODCALLTYPE Next(
1008         ULONG celt,
1009         IUnknown** rgelt,
1010         ULONG* pceltFetched) = 0;
1011
1012     virtual HRESULT STDMETHODCALLTYPE Skip(
1013         ULONG celt) = 0;
1014
1015     virtual HRESULT STDMETHODCALLTYPE Reset(
1016         ) = 0;
1017
1018     virtual HRESULT STDMETHODCALLTYPE Clone(
1019         IEnumUnknown** ppenum) = 0;
1020
1021 };
1022 #else
1023 typedef struct IEnumUnknownVtbl IEnumUnknownVtbl;
1024 struct IEnumUnknown {
1025     const IEnumUnknownVtbl* lpVtbl;
1026 };
1027 struct IEnumUnknownVtbl {
1028     ICOM_MSVTABLE_COMPAT_FIELDS
1029
1030     /*** IUnknown methods ***/
1031     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1032         IEnumUnknown* This,
1033         REFIID riid,
1034         void** ppvObject);
1035
1036     ULONG (STDMETHODCALLTYPE *AddRef)(
1037         IEnumUnknown* This);
1038
1039     ULONG (STDMETHODCALLTYPE *Release)(
1040         IEnumUnknown* This);
1041
1042     /*** IEnumUnknown methods ***/
1043     HRESULT (STDMETHODCALLTYPE *Next)(
1044         IEnumUnknown* This,
1045         ULONG celt,
1046         IUnknown** rgelt,
1047         ULONG* pceltFetched);
1048
1049     HRESULT (STDMETHODCALLTYPE *Skip)(
1050         IEnumUnknown* This,
1051         ULONG celt);
1052
1053     HRESULT (STDMETHODCALLTYPE *Reset)(
1054         IEnumUnknown* This);
1055
1056     HRESULT (STDMETHODCALLTYPE *Clone)(
1057         IEnumUnknown* This,
1058         IEnumUnknown** ppenum);
1059
1060 };
1061
1062 /*** IUnknown methods ***/
1063 #define IEnumUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1064 #define IEnumUnknown_AddRef(p) (p)->lpVtbl->AddRef(p)
1065 #define IEnumUnknown_Release(p) (p)->lpVtbl->Release(p)
1066 /*** IEnumUnknown methods ***/
1067 #define IEnumUnknown_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
1068 #define IEnumUnknown_Skip(p,a) (p)->lpVtbl->Skip(p,a)
1069 #define IEnumUnknown_Reset(p) (p)->lpVtbl->Reset(p)
1070 #define IEnumUnknown_Clone(p,a) (p)->lpVtbl->Clone(p,a)
1071
1072 #endif
1073
1074 #define IEnumUnknown_METHODS \
1075     ICOM_MSVTABLE_COMPAT_FIELDS \
1076     /*** IUnknown methods ***/ \
1077     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1078     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1079     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1080     /*** IEnumUnknown methods ***/ \
1081     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, IUnknown** rgelt, ULONG* pceltFetched) PURE; \
1082     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
1083     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
1084     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumUnknown** ppenum) PURE;
1085
1086 HRESULT CALLBACK IEnumUnknown_RemoteNext_Proxy(
1087     IEnumUnknown* This,
1088     ULONG celt,
1089     IUnknown** rgelt,
1090     ULONG* pceltFetched);
1091 void __RPC_STUB IEnumUnknown_RemoteNext_Stub(
1092     struct IRpcStubBuffer* This,
1093     struct IRpcChannelBuffer* pRpcChannelBuffer,
1094     PRPC_MESSAGE pRpcMessage,
1095     DWORD* pdwStubPhase);
1096 HRESULT CALLBACK IEnumUnknown_Next_Proxy(
1097     IEnumUnknown* This,
1098     ULONG celt,
1099     IUnknown** rgelt,
1100     ULONG* pceltFetched);
1101 HRESULT __RPC_STUB IEnumUnknown_Next_Stub(
1102     IEnumUnknown* This,
1103     ULONG celt,
1104     IUnknown** rgelt,
1105     ULONG* pceltFetched);
1106 HRESULT CALLBACK IEnumUnknown_Skip_Proxy(
1107     IEnumUnknown* This,
1108     ULONG celt);
1109 void __RPC_STUB IEnumUnknown_Skip_Stub(
1110     struct IRpcStubBuffer* This,
1111     struct IRpcChannelBuffer* pRpcChannelBuffer,
1112     PRPC_MESSAGE pRpcMessage,
1113     DWORD* pdwStubPhase);
1114 HRESULT CALLBACK IEnumUnknown_Reset_Proxy(
1115     IEnumUnknown* This);
1116 void __RPC_STUB IEnumUnknown_Reset_Stub(
1117     struct IRpcStubBuffer* This,
1118     struct IRpcChannelBuffer* pRpcChannelBuffer,
1119     PRPC_MESSAGE pRpcMessage,
1120     DWORD* pdwStubPhase);
1121 HRESULT CALLBACK IEnumUnknown_Clone_Proxy(
1122     IEnumUnknown* This,
1123     IEnumUnknown** ppenum);
1124 void __RPC_STUB IEnumUnknown_Clone_Stub(
1125     struct IRpcStubBuffer* This,
1126     struct IRpcChannelBuffer* pRpcChannelBuffer,
1127     PRPC_MESSAGE pRpcMessage,
1128     DWORD* pdwStubPhase);
1129
1130 #endif  /* __IEnumUnknown_INTERFACE_DEFINED__ */
1131
1132 #ifndef __ISurrogate_FWD_DEFINED__
1133 #define __ISurrogate_FWD_DEFINED__
1134 typedef struct ISurrogate ISurrogate;
1135 #endif
1136
1137 typedef ISurrogate *LPSURROGATE;
1138
1139 /*****************************************************************************
1140  * ISurrogate interface
1141  */
1142 #ifndef __ISurrogate_INTERFACE_DEFINED__
1143 #define __ISurrogate_INTERFACE_DEFINED__
1144
1145 DEFINE_GUID(IID_ISurrogate, 0x00000022, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1146 #if defined(__cplusplus) && !defined(CINTERFACE)
1147 struct ISurrogate : public IUnknown
1148 {
1149     virtual HRESULT STDMETHODCALLTYPE LoadDllServer(
1150         REFCLSID Clsid) = 0;
1151
1152     virtual HRESULT STDMETHODCALLTYPE FreeSurrogate(
1153         ) = 0;
1154
1155 };
1156 #else
1157 typedef struct ISurrogateVtbl ISurrogateVtbl;
1158 struct ISurrogate {
1159     const ISurrogateVtbl* lpVtbl;
1160 };
1161 struct ISurrogateVtbl {
1162     ICOM_MSVTABLE_COMPAT_FIELDS
1163
1164     /*** IUnknown methods ***/
1165     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1166         ISurrogate* This,
1167         REFIID riid,
1168         void** ppvObject);
1169
1170     ULONG (STDMETHODCALLTYPE *AddRef)(
1171         ISurrogate* This);
1172
1173     ULONG (STDMETHODCALLTYPE *Release)(
1174         ISurrogate* This);
1175
1176     /*** ISurrogate methods ***/
1177     HRESULT (STDMETHODCALLTYPE *LoadDllServer)(
1178         ISurrogate* This,
1179         REFCLSID Clsid);
1180
1181     HRESULT (STDMETHODCALLTYPE *FreeSurrogate)(
1182         ISurrogate* This);
1183
1184 };
1185
1186 /*** IUnknown methods ***/
1187 #define ISurrogate_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1188 #define ISurrogate_AddRef(p) (p)->lpVtbl->AddRef(p)
1189 #define ISurrogate_Release(p) (p)->lpVtbl->Release(p)
1190 /*** ISurrogate methods ***/
1191 #define ISurrogate_LoadDllServer(p,a) (p)->lpVtbl->LoadDllServer(p,a)
1192 #define ISurrogate_FreeSurrogate(p) (p)->lpVtbl->FreeSurrogate(p)
1193
1194 #endif
1195
1196 #define ISurrogate_METHODS \
1197     ICOM_MSVTABLE_COMPAT_FIELDS \
1198     /*** IUnknown methods ***/ \
1199     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1200     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1201     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1202     /*** ISurrogate methods ***/ \
1203     STDMETHOD_(HRESULT,LoadDllServer)(THIS_ REFCLSID Clsid) PURE; \
1204     STDMETHOD_(HRESULT,FreeSurrogate)(THIS) PURE;
1205
1206 HRESULT CALLBACK ISurrogate_LoadDllServer_Proxy(
1207     ISurrogate* This,
1208     REFCLSID Clsid);
1209 void __RPC_STUB ISurrogate_LoadDllServer_Stub(
1210     struct IRpcStubBuffer* This,
1211     struct IRpcChannelBuffer* pRpcChannelBuffer,
1212     PRPC_MESSAGE pRpcMessage,
1213     DWORD* pdwStubPhase);
1214 HRESULT CALLBACK ISurrogate_FreeSurrogate_Proxy(
1215     ISurrogate* This);
1216 void __RPC_STUB ISurrogate_FreeSurrogate_Stub(
1217     struct IRpcStubBuffer* This,
1218     struct IRpcChannelBuffer* pRpcChannelBuffer,
1219     PRPC_MESSAGE pRpcMessage,
1220     DWORD* pdwStubPhase);
1221
1222 #endif  /* __ISurrogate_INTERFACE_DEFINED__ */
1223
1224 #ifndef __IGlobalInterfaceTable_FWD_DEFINED__
1225 #define __IGlobalInterfaceTable_FWD_DEFINED__
1226 typedef struct IGlobalInterfaceTable IGlobalInterfaceTable;
1227 #endif
1228
1229 typedef IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
1230
1231 /*****************************************************************************
1232  * IGlobalInterfaceTable interface
1233  */
1234 #ifndef __IGlobalInterfaceTable_INTERFACE_DEFINED__
1235 #define __IGlobalInterfaceTable_INTERFACE_DEFINED__
1236
1237 DEFINE_GUID(IID_IGlobalInterfaceTable, 0x00000146, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1238 #if defined(__cplusplus) && !defined(CINTERFACE)
1239 struct IGlobalInterfaceTable : public IUnknown
1240 {
1241     virtual HRESULT STDMETHODCALLTYPE RegisterInterfaceInGlobal(
1242         IUnknown* pUnk,
1243         REFIID riid,
1244         DWORD* pdwCookie) = 0;
1245
1246     virtual HRESULT STDMETHODCALLTYPE RevokeInterfaceFromGlobal(
1247         DWORD dwCookie) = 0;
1248
1249     virtual HRESULT STDMETHODCALLTYPE GetInterfaceFromGlobal(
1250         DWORD dwCookie,
1251         REFIID riid,
1252         void** ppv) = 0;
1253
1254 };
1255 #else
1256 typedef struct IGlobalInterfaceTableVtbl IGlobalInterfaceTableVtbl;
1257 struct IGlobalInterfaceTable {
1258     const IGlobalInterfaceTableVtbl* lpVtbl;
1259 };
1260 struct IGlobalInterfaceTableVtbl {
1261     ICOM_MSVTABLE_COMPAT_FIELDS
1262
1263     /*** IUnknown methods ***/
1264     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1265         IGlobalInterfaceTable* This,
1266         REFIID riid,
1267         void** ppvObject);
1268
1269     ULONG (STDMETHODCALLTYPE *AddRef)(
1270         IGlobalInterfaceTable* This);
1271
1272     ULONG (STDMETHODCALLTYPE *Release)(
1273         IGlobalInterfaceTable* This);
1274
1275     /*** IGlobalInterfaceTable methods ***/
1276     HRESULT (STDMETHODCALLTYPE *RegisterInterfaceInGlobal)(
1277         IGlobalInterfaceTable* This,
1278         IUnknown* pUnk,
1279         REFIID riid,
1280         DWORD* pdwCookie);
1281
1282     HRESULT (STDMETHODCALLTYPE *RevokeInterfaceFromGlobal)(
1283         IGlobalInterfaceTable* This,
1284         DWORD dwCookie);
1285
1286     HRESULT (STDMETHODCALLTYPE *GetInterfaceFromGlobal)(
1287         IGlobalInterfaceTable* This,
1288         DWORD dwCookie,
1289         REFIID riid,
1290         void** ppv);
1291
1292 };
1293
1294 /*** IUnknown methods ***/
1295 #define IGlobalInterfaceTable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1296 #define IGlobalInterfaceTable_AddRef(p) (p)->lpVtbl->AddRef(p)
1297 #define IGlobalInterfaceTable_Release(p) (p)->lpVtbl->Release(p)
1298 /*** IGlobalInterfaceTable methods ***/
1299 #define IGlobalInterfaceTable_RegisterInterfaceInGlobal(p,a,b,c) (p)->lpVtbl->RegisterInterfaceInGlobal(p,a,b,c)
1300 #define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(p,a) (p)->lpVtbl->RevokeInterfaceFromGlobal(p,a)
1301 #define IGlobalInterfaceTable_GetInterfaceFromGlobal(p,a,b,c) (p)->lpVtbl->GetInterfaceFromGlobal(p,a,b,c)
1302
1303 #endif
1304
1305 #define IGlobalInterfaceTable_METHODS \
1306     ICOM_MSVTABLE_COMPAT_FIELDS \
1307     /*** IUnknown methods ***/ \
1308     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1309     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1310     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1311     /*** IGlobalInterfaceTable methods ***/ \
1312     STDMETHOD_(HRESULT,RegisterInterfaceInGlobal)(THIS_ IUnknown* pUnk, REFIID riid, DWORD* pdwCookie) PURE; \
1313     STDMETHOD_(HRESULT,RevokeInterfaceFromGlobal)(THIS_ DWORD dwCookie) PURE; \
1314     STDMETHOD_(HRESULT,GetInterfaceFromGlobal)(THIS_ DWORD dwCookie, REFIID riid, void** ppv) PURE;
1315
1316 HRESULT CALLBACK IGlobalInterfaceTable_RegisterInterfaceInGlobal_Proxy(
1317     IGlobalInterfaceTable* This,
1318     IUnknown* pUnk,
1319     REFIID riid,
1320     DWORD* pdwCookie);
1321 void __RPC_STUB IGlobalInterfaceTable_RegisterInterfaceInGlobal_Stub(
1322     struct IRpcStubBuffer* This,
1323     struct IRpcChannelBuffer* pRpcChannelBuffer,
1324     PRPC_MESSAGE pRpcMessage,
1325     DWORD* pdwStubPhase);
1326 HRESULT CALLBACK IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Proxy(
1327     IGlobalInterfaceTable* This,
1328     DWORD dwCookie);
1329 void __RPC_STUB IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Stub(
1330     struct IRpcStubBuffer* This,
1331     struct IRpcChannelBuffer* pRpcChannelBuffer,
1332     PRPC_MESSAGE pRpcMessage,
1333     DWORD* pdwStubPhase);
1334 HRESULT CALLBACK IGlobalInterfaceTable_GetInterfaceFromGlobal_Proxy(
1335     IGlobalInterfaceTable* This,
1336     DWORD dwCookie,
1337     REFIID riid,
1338     void** ppv);
1339 void __RPC_STUB IGlobalInterfaceTable_GetInterfaceFromGlobal_Stub(
1340     struct IRpcStubBuffer* This,
1341     struct IRpcChannelBuffer* pRpcChannelBuffer,
1342     PRPC_MESSAGE pRpcMessage,
1343     DWORD* pdwStubPhase);
1344
1345 #endif  /* __IGlobalInterfaceTable_INTERFACE_DEFINED__ */
1346
1347 #ifndef __IBindCtx_FWD_DEFINED__
1348 #define __IBindCtx_FWD_DEFINED__
1349 typedef struct IBindCtx IBindCtx;
1350 #endif
1351
1352 typedef IBindCtx *LPBINDCTX;
1353
1354 typedef IBindCtx *LPBC;
1355
1356 typedef struct tagBIND_OPTS {
1357     DWORD cbStruct;
1358     DWORD grfFlags;
1359     DWORD grfMode;
1360     DWORD dwTickCountDeadline;
1361 } BIND_OPTS, *LPBIND_OPTS;
1362
1363 typedef struct tagBIND_OPTS2 {
1364     DWORD cbStruct;
1365     DWORD grfFlags;
1366     DWORD grfMode;
1367     DWORD dwTickCountDeadline;
1368     DWORD dwTrackFlags;
1369     DWORD dwClassContext;
1370     LCID locale;
1371     COSERVERINFO *pServerInfo;
1372 } BIND_OPTS2, *LPBIND_OPTS2;
1373
1374 typedef enum tagBIND_FLAGS {
1375     BIND_MAYBOTHERUSER = 1,
1376     BIND_JUSTTESTEXISTENCE = 2
1377 } BIND_FLAGS;
1378
1379 /*****************************************************************************
1380  * IBindCtx interface
1381  */
1382 #ifndef __IBindCtx_INTERFACE_DEFINED__
1383 #define __IBindCtx_INTERFACE_DEFINED__
1384
1385 DEFINE_GUID(IID_IBindCtx, 0x0000000e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1386 #if defined(__cplusplus) && !defined(CINTERFACE)
1387 struct IBindCtx : public IUnknown
1388 {
1389     virtual HRESULT STDMETHODCALLTYPE RegisterObjectBound(
1390         IUnknown* punk) = 0;
1391
1392     virtual HRESULT STDMETHODCALLTYPE RevokeObjectBound(
1393         IUnknown* punk) = 0;
1394
1395     virtual HRESULT STDMETHODCALLTYPE ReleaseBoundObjects(
1396         ) = 0;
1397
1398     virtual HRESULT STDMETHODCALLTYPE SetBindOptions(
1399         BIND_OPTS* pbindopts) = 0;
1400
1401     virtual HRESULT STDMETHODCALLTYPE GetBindOptions(
1402         BIND_OPTS* pbindopts) = 0;
1403
1404     virtual HRESULT STDMETHODCALLTYPE GetRunningObjectTable(
1405         IRunningObjectTable** pprot) = 0;
1406
1407     virtual HRESULT STDMETHODCALLTYPE RegisterObjectParam(
1408         LPOLESTR pszKey,
1409         IUnknown* punk) = 0;
1410
1411     virtual HRESULT STDMETHODCALLTYPE GetObjectParam(
1412         LPOLESTR pszKey,
1413         IUnknown** ppunk) = 0;
1414
1415     virtual HRESULT STDMETHODCALLTYPE EnumObjectParam(
1416         IEnumString** ppenum) = 0;
1417
1418     virtual HRESULT STDMETHODCALLTYPE RevokeObjectParam(
1419         LPOLESTR pszKey) = 0;
1420
1421 };
1422 #else
1423 typedef struct IBindCtxVtbl IBindCtxVtbl;
1424 struct IBindCtx {
1425     const IBindCtxVtbl* lpVtbl;
1426 };
1427 struct IBindCtxVtbl {
1428     ICOM_MSVTABLE_COMPAT_FIELDS
1429
1430     /*** IUnknown methods ***/
1431     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1432         IBindCtx* This,
1433         REFIID riid,
1434         void** ppvObject);
1435
1436     ULONG (STDMETHODCALLTYPE *AddRef)(
1437         IBindCtx* This);
1438
1439     ULONG (STDMETHODCALLTYPE *Release)(
1440         IBindCtx* This);
1441
1442     /*** IBindCtx methods ***/
1443     HRESULT (STDMETHODCALLTYPE *RegisterObjectBound)(
1444         IBindCtx* This,
1445         IUnknown* punk);
1446
1447     HRESULT (STDMETHODCALLTYPE *RevokeObjectBound)(
1448         IBindCtx* This,
1449         IUnknown* punk);
1450
1451     HRESULT (STDMETHODCALLTYPE *ReleaseBoundObjects)(
1452         IBindCtx* This);
1453
1454     HRESULT (STDMETHODCALLTYPE *SetBindOptions)(
1455         IBindCtx* This,
1456         BIND_OPTS* pbindopts);
1457
1458     HRESULT (STDMETHODCALLTYPE *GetBindOptions)(
1459         IBindCtx* This,
1460         BIND_OPTS* pbindopts);
1461
1462     HRESULT (STDMETHODCALLTYPE *GetRunningObjectTable)(
1463         IBindCtx* This,
1464         IRunningObjectTable** pprot);
1465
1466     HRESULT (STDMETHODCALLTYPE *RegisterObjectParam)(
1467         IBindCtx* This,
1468         LPOLESTR pszKey,
1469         IUnknown* punk);
1470
1471     HRESULT (STDMETHODCALLTYPE *GetObjectParam)(
1472         IBindCtx* This,
1473         LPOLESTR pszKey,
1474         IUnknown** ppunk);
1475
1476     HRESULT (STDMETHODCALLTYPE *EnumObjectParam)(
1477         IBindCtx* This,
1478         IEnumString** ppenum);
1479
1480     HRESULT (STDMETHODCALLTYPE *RevokeObjectParam)(
1481         IBindCtx* This,
1482         LPOLESTR pszKey);
1483
1484 };
1485
1486 /*** IUnknown methods ***/
1487 #define IBindCtx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1488 #define IBindCtx_AddRef(p) (p)->lpVtbl->AddRef(p)
1489 #define IBindCtx_Release(p) (p)->lpVtbl->Release(p)
1490 /*** IBindCtx methods ***/
1491 #define IBindCtx_RegisterObjectBound(p,a) (p)->lpVtbl->RegisterObjectBound(p,a)
1492 #define IBindCtx_RevokeObjectBound(p,a) (p)->lpVtbl->RevokeObjectBound(p,a)
1493 #define IBindCtx_ReleaseBoundObjects(p) (p)->lpVtbl->ReleaseBoundObjects(p)
1494 #define IBindCtx_SetBindOptions(p,a) (p)->lpVtbl->SetBindOptions(p,a)
1495 #define IBindCtx_GetBindOptions(p,a) (p)->lpVtbl->GetBindOptions(p,a)
1496 #define IBindCtx_GetRunningObjectTable(p,a) (p)->lpVtbl->GetRunningObjectTable(p,a)
1497 #define IBindCtx_RegisterObjectParam(p,a,b) (p)->lpVtbl->RegisterObjectParam(p,a,b)
1498 #define IBindCtx_GetObjectParam(p,a,b) (p)->lpVtbl->GetObjectParam(p,a,b)
1499 #define IBindCtx_EnumObjectParam(p,a) (p)->lpVtbl->EnumObjectParam(p,a)
1500 #define IBindCtx_RevokeObjectParam(p,a) (p)->lpVtbl->RevokeObjectParam(p,a)
1501
1502 #endif
1503
1504 #define IBindCtx_METHODS \
1505     ICOM_MSVTABLE_COMPAT_FIELDS \
1506     /*** IUnknown methods ***/ \
1507     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1508     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1509     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1510     /*** IBindCtx methods ***/ \
1511     STDMETHOD_(HRESULT,RegisterObjectBound)(THIS_ IUnknown* punk) PURE; \
1512     STDMETHOD_(HRESULT,RevokeObjectBound)(THIS_ IUnknown* punk) PURE; \
1513     STDMETHOD_(HRESULT,ReleaseBoundObjects)(THIS) PURE; \
1514     STDMETHOD_(HRESULT,SetBindOptions)(THIS_ BIND_OPTS* pbindopts) PURE; \
1515     STDMETHOD_(HRESULT,GetBindOptions)(THIS_ BIND_OPTS* pbindopts) PURE; \
1516     STDMETHOD_(HRESULT,GetRunningObjectTable)(THIS_ IRunningObjectTable** pprot) PURE; \
1517     STDMETHOD_(HRESULT,RegisterObjectParam)(THIS_ LPOLESTR pszKey, IUnknown* punk) PURE; \
1518     STDMETHOD_(HRESULT,GetObjectParam)(THIS_ LPOLESTR pszKey, IUnknown** ppunk) PURE; \
1519     STDMETHOD_(HRESULT,EnumObjectParam)(THIS_ IEnumString** ppenum) PURE; \
1520     STDMETHOD_(HRESULT,RevokeObjectParam)(THIS_ LPOLESTR pszKey) PURE;
1521
1522 HRESULT CALLBACK IBindCtx_RegisterObjectBound_Proxy(
1523     IBindCtx* This,
1524     IUnknown* punk);
1525 void __RPC_STUB IBindCtx_RegisterObjectBound_Stub(
1526     struct IRpcStubBuffer* This,
1527     struct IRpcChannelBuffer* pRpcChannelBuffer,
1528     PRPC_MESSAGE pRpcMessage,
1529     DWORD* pdwStubPhase);
1530 HRESULT CALLBACK IBindCtx_RevokeObjectBound_Proxy(
1531     IBindCtx* This,
1532     IUnknown* punk);
1533 void __RPC_STUB IBindCtx_RevokeObjectBound_Stub(
1534     struct IRpcStubBuffer* This,
1535     struct IRpcChannelBuffer* pRpcChannelBuffer,
1536     PRPC_MESSAGE pRpcMessage,
1537     DWORD* pdwStubPhase);
1538 HRESULT CALLBACK IBindCtx_ReleaseBoundObjects_Proxy(
1539     IBindCtx* This);
1540 void __RPC_STUB IBindCtx_ReleaseBoundObjects_Stub(
1541     struct IRpcStubBuffer* This,
1542     struct IRpcChannelBuffer* pRpcChannelBuffer,
1543     PRPC_MESSAGE pRpcMessage,
1544     DWORD* pdwStubPhase);
1545 HRESULT CALLBACK IBindCtx_RemoteSetBindOptions_Proxy(
1546     IBindCtx* This,
1547     BIND_OPTS2* pbindopts);
1548 void __RPC_STUB IBindCtx_RemoteSetBindOptions_Stub(
1549     struct IRpcStubBuffer* This,
1550     struct IRpcChannelBuffer* pRpcChannelBuffer,
1551     PRPC_MESSAGE pRpcMessage,
1552     DWORD* pdwStubPhase);
1553 HRESULT CALLBACK IBindCtx_SetBindOptions_Proxy(
1554     IBindCtx* This,
1555     BIND_OPTS* pbindopts);
1556 HRESULT __RPC_STUB IBindCtx_SetBindOptions_Stub(
1557     IBindCtx* This,
1558     BIND_OPTS2* pbindopts);
1559 HRESULT CALLBACK IBindCtx_RemoteGetBindOptions_Proxy(
1560     IBindCtx* This,
1561     BIND_OPTS2* pbindopts);
1562 void __RPC_STUB IBindCtx_RemoteGetBindOptions_Stub(
1563     struct IRpcStubBuffer* This,
1564     struct IRpcChannelBuffer* pRpcChannelBuffer,
1565     PRPC_MESSAGE pRpcMessage,
1566     DWORD* pdwStubPhase);
1567 HRESULT CALLBACK IBindCtx_GetBindOptions_Proxy(
1568     IBindCtx* This,
1569     BIND_OPTS* pbindopts);
1570 HRESULT __RPC_STUB IBindCtx_GetBindOptions_Stub(
1571     IBindCtx* This,
1572     BIND_OPTS2* pbindopts);
1573 HRESULT CALLBACK IBindCtx_GetRunningObjectTable_Proxy(
1574     IBindCtx* This,
1575     IRunningObjectTable** pprot);
1576 void __RPC_STUB IBindCtx_GetRunningObjectTable_Stub(
1577     struct IRpcStubBuffer* This,
1578     struct IRpcChannelBuffer* pRpcChannelBuffer,
1579     PRPC_MESSAGE pRpcMessage,
1580     DWORD* pdwStubPhase);
1581 HRESULT CALLBACK IBindCtx_RegisterObjectParam_Proxy(
1582     IBindCtx* This,
1583     LPOLESTR pszKey,
1584     IUnknown* punk);
1585 void __RPC_STUB IBindCtx_RegisterObjectParam_Stub(
1586     struct IRpcStubBuffer* This,
1587     struct IRpcChannelBuffer* pRpcChannelBuffer,
1588     PRPC_MESSAGE pRpcMessage,
1589     DWORD* pdwStubPhase);
1590 HRESULT CALLBACK IBindCtx_GetObjectParam_Proxy(
1591     IBindCtx* This,
1592     LPOLESTR pszKey,
1593     IUnknown** ppunk);
1594 void __RPC_STUB IBindCtx_GetObjectParam_Stub(
1595     struct IRpcStubBuffer* This,
1596     struct IRpcChannelBuffer* pRpcChannelBuffer,
1597     PRPC_MESSAGE pRpcMessage,
1598     DWORD* pdwStubPhase);
1599 HRESULT CALLBACK IBindCtx_EnumObjectParam_Proxy(
1600     IBindCtx* This,
1601     IEnumString** ppenum);
1602 void __RPC_STUB IBindCtx_EnumObjectParam_Stub(
1603     struct IRpcStubBuffer* This,
1604     struct IRpcChannelBuffer* pRpcChannelBuffer,
1605     PRPC_MESSAGE pRpcMessage,
1606     DWORD* pdwStubPhase);
1607 HRESULT CALLBACK IBindCtx_RevokeObjectParam_Proxy(
1608     IBindCtx* This,
1609     LPOLESTR pszKey);
1610 void __RPC_STUB IBindCtx_RevokeObjectParam_Stub(
1611     struct IRpcStubBuffer* This,
1612     struct IRpcChannelBuffer* pRpcChannelBuffer,
1613     PRPC_MESSAGE pRpcMessage,
1614     DWORD* pdwStubPhase);
1615
1616 #endif  /* __IBindCtx_INTERFACE_DEFINED__ */
1617
1618 #ifndef __IEnumMoniker_FWD_DEFINED__
1619 #define __IEnumMoniker_FWD_DEFINED__
1620 typedef struct IEnumMoniker IEnumMoniker;
1621 #endif
1622
1623 typedef IEnumMoniker *LPENUMMONIKER;
1624
1625 /*****************************************************************************
1626  * IEnumMoniker interface
1627  */
1628 #ifndef __IEnumMoniker_INTERFACE_DEFINED__
1629 #define __IEnumMoniker_INTERFACE_DEFINED__
1630
1631 DEFINE_GUID(IID_IEnumMoniker, 0x00000102, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1632 #if defined(__cplusplus) && !defined(CINTERFACE)
1633 struct IEnumMoniker : public IUnknown
1634 {
1635     virtual HRESULT STDMETHODCALLTYPE Next(
1636         ULONG celt,
1637         IMoniker** rgelt,
1638         ULONG* pceltFetched) = 0;
1639
1640     virtual HRESULT STDMETHODCALLTYPE Skip(
1641         ULONG celt) = 0;
1642
1643     virtual HRESULT STDMETHODCALLTYPE Reset(
1644         ) = 0;
1645
1646     virtual HRESULT STDMETHODCALLTYPE Clone(
1647         IEnumMoniker** ppenum) = 0;
1648
1649 };
1650 #else
1651 typedef struct IEnumMonikerVtbl IEnumMonikerVtbl;
1652 struct IEnumMoniker {
1653     const IEnumMonikerVtbl* lpVtbl;
1654 };
1655 struct IEnumMonikerVtbl {
1656     ICOM_MSVTABLE_COMPAT_FIELDS
1657
1658     /*** IUnknown methods ***/
1659     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1660         IEnumMoniker* This,
1661         REFIID riid,
1662         void** ppvObject);
1663
1664     ULONG (STDMETHODCALLTYPE *AddRef)(
1665         IEnumMoniker* This);
1666
1667     ULONG (STDMETHODCALLTYPE *Release)(
1668         IEnumMoniker* This);
1669
1670     /*** IEnumMoniker methods ***/
1671     HRESULT (STDMETHODCALLTYPE *Next)(
1672         IEnumMoniker* This,
1673         ULONG celt,
1674         IMoniker** rgelt,
1675         ULONG* pceltFetched);
1676
1677     HRESULT (STDMETHODCALLTYPE *Skip)(
1678         IEnumMoniker* This,
1679         ULONG celt);
1680
1681     HRESULT (STDMETHODCALLTYPE *Reset)(
1682         IEnumMoniker* This);
1683
1684     HRESULT (STDMETHODCALLTYPE *Clone)(
1685         IEnumMoniker* This,
1686         IEnumMoniker** ppenum);
1687
1688 };
1689
1690 /*** IUnknown methods ***/
1691 #define IEnumMoniker_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1692 #define IEnumMoniker_AddRef(p) (p)->lpVtbl->AddRef(p)
1693 #define IEnumMoniker_Release(p) (p)->lpVtbl->Release(p)
1694 /*** IEnumMoniker methods ***/
1695 #define IEnumMoniker_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
1696 #define IEnumMoniker_Skip(p,a) (p)->lpVtbl->Skip(p,a)
1697 #define IEnumMoniker_Reset(p) (p)->lpVtbl->Reset(p)
1698 #define IEnumMoniker_Clone(p,a) (p)->lpVtbl->Clone(p,a)
1699
1700 #endif
1701
1702 #define IEnumMoniker_METHODS \
1703     ICOM_MSVTABLE_COMPAT_FIELDS \
1704     /*** IUnknown methods ***/ \
1705     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1706     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1707     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1708     /*** IEnumMoniker methods ***/ \
1709     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, IMoniker** rgelt, ULONG* pceltFetched) PURE; \
1710     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
1711     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
1712     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumMoniker** ppenum) PURE;
1713
1714 HRESULT CALLBACK IEnumMoniker_RemoteNext_Proxy(
1715     IEnumMoniker* This,
1716     ULONG celt,
1717     IMoniker** rgelt,
1718     ULONG* pceltFetched);
1719 void __RPC_STUB IEnumMoniker_RemoteNext_Stub(
1720     struct IRpcStubBuffer* This,
1721     struct IRpcChannelBuffer* pRpcChannelBuffer,
1722     PRPC_MESSAGE pRpcMessage,
1723     DWORD* pdwStubPhase);
1724 HRESULT CALLBACK IEnumMoniker_Next_Proxy(
1725     IEnumMoniker* This,
1726     ULONG celt,
1727     IMoniker** rgelt,
1728     ULONG* pceltFetched);
1729 HRESULT __RPC_STUB IEnumMoniker_Next_Stub(
1730     IEnumMoniker* This,
1731     ULONG celt,
1732     IMoniker** rgelt,
1733     ULONG* pceltFetched);
1734 HRESULT CALLBACK IEnumMoniker_Skip_Proxy(
1735     IEnumMoniker* This,
1736     ULONG celt);
1737 void __RPC_STUB IEnumMoniker_Skip_Stub(
1738     struct IRpcStubBuffer* This,
1739     struct IRpcChannelBuffer* pRpcChannelBuffer,
1740     PRPC_MESSAGE pRpcMessage,
1741     DWORD* pdwStubPhase);
1742 HRESULT CALLBACK IEnumMoniker_Reset_Proxy(
1743     IEnumMoniker* This);
1744 void __RPC_STUB IEnumMoniker_Reset_Stub(
1745     struct IRpcStubBuffer* This,
1746     struct IRpcChannelBuffer* pRpcChannelBuffer,
1747     PRPC_MESSAGE pRpcMessage,
1748     DWORD* pdwStubPhase);
1749 HRESULT CALLBACK IEnumMoniker_Clone_Proxy(
1750     IEnumMoniker* This,
1751     IEnumMoniker** ppenum);
1752 void __RPC_STUB IEnumMoniker_Clone_Stub(
1753     struct IRpcStubBuffer* This,
1754     struct IRpcChannelBuffer* pRpcChannelBuffer,
1755     PRPC_MESSAGE pRpcMessage,
1756     DWORD* pdwStubPhase);
1757
1758 #endif  /* __IEnumMoniker_INTERFACE_DEFINED__ */
1759
1760 #ifndef __IRunnableObject_FWD_DEFINED__
1761 #define __IRunnableObject_FWD_DEFINED__
1762 typedef struct IRunnableObject IRunnableObject;
1763 #endif
1764
1765 typedef IRunnableObject *LPRUNNABLEOBJECT;
1766
1767 /*****************************************************************************
1768  * IRunnableObject interface
1769  */
1770 #ifndef __IRunnableObject_INTERFACE_DEFINED__
1771 #define __IRunnableObject_INTERFACE_DEFINED__
1772
1773 DEFINE_GUID(IID_IRunnableObject, 0x00000126, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1774 #if defined(__cplusplus) && !defined(CINTERFACE)
1775 struct IRunnableObject : public IUnknown
1776 {
1777     virtual HRESULT STDMETHODCALLTYPE GetRunningClass(
1778         LPCLSID lpClsid) = 0;
1779
1780     virtual HRESULT STDMETHODCALLTYPE Run(
1781         LPBINDCTX pbc) = 0;
1782
1783     virtual BOOL STDMETHODCALLTYPE IsRunning(
1784         ) = 0;
1785
1786     virtual HRESULT STDMETHODCALLTYPE LockRunning(
1787         BOOL fLock,
1788         BOOL fLastUnlockCloses) = 0;
1789
1790     virtual HRESULT STDMETHODCALLTYPE SetContainedObject(
1791         BOOL fContained) = 0;
1792
1793 };
1794 #else
1795 typedef struct IRunnableObjectVtbl IRunnableObjectVtbl;
1796 struct IRunnableObject {
1797     const IRunnableObjectVtbl* lpVtbl;
1798 };
1799 struct IRunnableObjectVtbl {
1800     ICOM_MSVTABLE_COMPAT_FIELDS
1801
1802     /*** IUnknown methods ***/
1803     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1804         IRunnableObject* This,
1805         REFIID riid,
1806         void** ppvObject);
1807
1808     ULONG (STDMETHODCALLTYPE *AddRef)(
1809         IRunnableObject* This);
1810
1811     ULONG (STDMETHODCALLTYPE *Release)(
1812         IRunnableObject* This);
1813
1814     /*** IRunnableObject methods ***/
1815     HRESULT (STDMETHODCALLTYPE *GetRunningClass)(
1816         IRunnableObject* This,
1817         LPCLSID lpClsid);
1818
1819     HRESULT (STDMETHODCALLTYPE *Run)(
1820         IRunnableObject* This,
1821         LPBINDCTX pbc);
1822
1823     BOOL (STDMETHODCALLTYPE *IsRunning)(
1824         IRunnableObject* This);
1825
1826     HRESULT (STDMETHODCALLTYPE *LockRunning)(
1827         IRunnableObject* This,
1828         BOOL fLock,
1829         BOOL fLastUnlockCloses);
1830
1831     HRESULT (STDMETHODCALLTYPE *SetContainedObject)(
1832         IRunnableObject* This,
1833         BOOL fContained);
1834
1835 };
1836
1837 /*** IUnknown methods ***/
1838 #define IRunnableObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1839 #define IRunnableObject_AddRef(p) (p)->lpVtbl->AddRef(p)
1840 #define IRunnableObject_Release(p) (p)->lpVtbl->Release(p)
1841 /*** IRunnableObject methods ***/
1842 #define IRunnableObject_GetRunningClass(p,a) (p)->lpVtbl->GetRunningClass(p,a)
1843 #define IRunnableObject_Run(p,a) (p)->lpVtbl->Run(p,a)
1844 #define IRunnableObject_IsRunning(p) (p)->lpVtbl->IsRunning(p)
1845 #define IRunnableObject_LockRunning(p,a,b) (p)->lpVtbl->LockRunning(p,a,b)
1846 #define IRunnableObject_SetContainedObject(p,a) (p)->lpVtbl->SetContainedObject(p,a)
1847
1848 #endif
1849
1850 #define IRunnableObject_METHODS \
1851     ICOM_MSVTABLE_COMPAT_FIELDS \
1852     /*** IUnknown methods ***/ \
1853     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1854     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1855     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1856     /*** IRunnableObject methods ***/ \
1857     STDMETHOD_(HRESULT,GetRunningClass)(THIS_ LPCLSID lpClsid) PURE; \
1858     STDMETHOD_(HRESULT,Run)(THIS_ LPBINDCTX pbc) PURE; \
1859     STDMETHOD_(BOOL,IsRunning)(THIS) PURE; \
1860     STDMETHOD_(HRESULT,LockRunning)(THIS_ BOOL fLock, BOOL fLastUnlockCloses) PURE; \
1861     STDMETHOD_(HRESULT,SetContainedObject)(THIS_ BOOL fContained) PURE;
1862
1863 HRESULT CALLBACK IRunnableObject_GetRunningClass_Proxy(
1864     IRunnableObject* This,
1865     LPCLSID lpClsid);
1866 void __RPC_STUB IRunnableObject_GetRunningClass_Stub(
1867     struct IRpcStubBuffer* This,
1868     struct IRpcChannelBuffer* pRpcChannelBuffer,
1869     PRPC_MESSAGE pRpcMessage,
1870     DWORD* pdwStubPhase);
1871 HRESULT CALLBACK IRunnableObject_Run_Proxy(
1872     IRunnableObject* This,
1873     LPBINDCTX pbc);
1874 void __RPC_STUB IRunnableObject_Run_Stub(
1875     struct IRpcStubBuffer* This,
1876     struct IRpcChannelBuffer* pRpcChannelBuffer,
1877     PRPC_MESSAGE pRpcMessage,
1878     DWORD* pdwStubPhase);
1879 HRESULT CALLBACK IRunnableObject_RemoteIsRunning_Proxy(
1880     IRunnableObject* This);
1881 void __RPC_STUB IRunnableObject_RemoteIsRunning_Stub(
1882     struct IRpcStubBuffer* This,
1883     struct IRpcChannelBuffer* pRpcChannelBuffer,
1884     PRPC_MESSAGE pRpcMessage,
1885     DWORD* pdwStubPhase);
1886 BOOL CALLBACK IRunnableObject_IsRunning_Proxy(
1887     IRunnableObject* This);
1888 HRESULT __RPC_STUB IRunnableObject_IsRunning_Stub(
1889     IRunnableObject* This);
1890 HRESULT CALLBACK IRunnableObject_LockRunning_Proxy(
1891     IRunnableObject* This,
1892     BOOL fLock,
1893     BOOL fLastUnlockCloses);
1894 void __RPC_STUB IRunnableObject_LockRunning_Stub(
1895     struct IRpcStubBuffer* This,
1896     struct IRpcChannelBuffer* pRpcChannelBuffer,
1897     PRPC_MESSAGE pRpcMessage,
1898     DWORD* pdwStubPhase);
1899 HRESULT CALLBACK IRunnableObject_SetContainedObject_Proxy(
1900     IRunnableObject* This,
1901     BOOL fContained);
1902 void __RPC_STUB IRunnableObject_SetContainedObject_Stub(
1903     struct IRpcStubBuffer* This,
1904     struct IRpcChannelBuffer* pRpcChannelBuffer,
1905     PRPC_MESSAGE pRpcMessage,
1906     DWORD* pdwStubPhase);
1907
1908 #endif  /* __IRunnableObject_INTERFACE_DEFINED__ */
1909
1910 #ifdef __WINESRC__
1911 #undef GetObject
1912 #endif
1913 typedef IRunningObjectTable *LPRUNNINGOBJECTTABLE;
1914
1915 /*****************************************************************************
1916  * IRunningObjectTable interface
1917  */
1918 #ifndef __IRunningObjectTable_INTERFACE_DEFINED__
1919 #define __IRunningObjectTable_INTERFACE_DEFINED__
1920
1921 DEFINE_GUID(IID_IRunningObjectTable, 0x00000010, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1922 #if defined(__cplusplus) && !defined(CINTERFACE)
1923 struct IRunningObjectTable : public IUnknown
1924 {
1925     virtual HRESULT STDMETHODCALLTYPE Register(
1926         DWORD grfFlags,
1927         IUnknown* punkObject,
1928         IMoniker* pmkObjectName,
1929         DWORD* pdwRegister) = 0;
1930
1931     virtual HRESULT STDMETHODCALLTYPE Revoke(
1932         DWORD dwRegister) = 0;
1933
1934     virtual HRESULT STDMETHODCALLTYPE IsRunning(
1935         IMoniker* pmkObjectName) = 0;
1936
1937     virtual HRESULT STDMETHODCALLTYPE GetObject(
1938         IMoniker* pmkObjectName,
1939         IUnknown** ppunkObject) = 0;
1940
1941     virtual HRESULT STDMETHODCALLTYPE NoteChangeTime(
1942         DWORD dwRegister,
1943         FILETIME* pfiletime) = 0;
1944
1945     virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
1946         IMoniker* pmkObjectName,
1947         FILETIME* pfiletime) = 0;
1948
1949     virtual HRESULT STDMETHODCALLTYPE EnumRunning(
1950         IEnumMoniker** ppenumMoniker) = 0;
1951
1952 };
1953 #else
1954 typedef struct IRunningObjectTableVtbl IRunningObjectTableVtbl;
1955 struct IRunningObjectTable {
1956     const IRunningObjectTableVtbl* lpVtbl;
1957 };
1958 struct IRunningObjectTableVtbl {
1959     ICOM_MSVTABLE_COMPAT_FIELDS
1960
1961     /*** IUnknown methods ***/
1962     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1963         IRunningObjectTable* This,
1964         REFIID riid,
1965         void** ppvObject);
1966
1967     ULONG (STDMETHODCALLTYPE *AddRef)(
1968         IRunningObjectTable* This);
1969
1970     ULONG (STDMETHODCALLTYPE *Release)(
1971         IRunningObjectTable* This);
1972
1973     /*** IRunningObjectTable methods ***/
1974     HRESULT (STDMETHODCALLTYPE *Register)(
1975         IRunningObjectTable* This,
1976         DWORD grfFlags,
1977         IUnknown* punkObject,
1978         IMoniker* pmkObjectName,
1979         DWORD* pdwRegister);
1980
1981     HRESULT (STDMETHODCALLTYPE *Revoke)(
1982         IRunningObjectTable* This,
1983         DWORD dwRegister);
1984
1985     HRESULT (STDMETHODCALLTYPE *IsRunning)(
1986         IRunningObjectTable* This,
1987         IMoniker* pmkObjectName);
1988
1989     HRESULT (STDMETHODCALLTYPE *GetObject)(
1990         IRunningObjectTable* This,
1991         IMoniker* pmkObjectName,
1992         IUnknown** ppunkObject);
1993
1994     HRESULT (STDMETHODCALLTYPE *NoteChangeTime)(
1995         IRunningObjectTable* This,
1996         DWORD dwRegister,
1997         FILETIME* pfiletime);
1998
1999     HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)(
2000         IRunningObjectTable* This,
2001         IMoniker* pmkObjectName,
2002         FILETIME* pfiletime);
2003
2004     HRESULT (STDMETHODCALLTYPE *EnumRunning)(
2005         IRunningObjectTable* This,
2006         IEnumMoniker** ppenumMoniker);
2007
2008 };
2009
2010 /*** IUnknown methods ***/
2011 #define IRunningObjectTable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2012 #define IRunningObjectTable_AddRef(p) (p)->lpVtbl->AddRef(p)
2013 #define IRunningObjectTable_Release(p) (p)->lpVtbl->Release(p)
2014 /*** IRunningObjectTable methods ***/
2015 #define IRunningObjectTable_Register(p,a,b,c,d) (p)->lpVtbl->Register(p,a,b,c,d)
2016 #define IRunningObjectTable_Revoke(p,a) (p)->lpVtbl->Revoke(p,a)
2017 #define IRunningObjectTable_IsRunning(p,a) (p)->lpVtbl->IsRunning(p,a)
2018 #define IRunningObjectTable_GetObject(p,a,b) (p)->lpVtbl->GetObject(p,a,b)
2019 #define IRunningObjectTable_NoteChangeTime(p,a,b) (p)->lpVtbl->NoteChangeTime(p,a,b)
2020 #define IRunningObjectTable_GetTimeOfLastChange(p,a,b) (p)->lpVtbl->GetTimeOfLastChange(p,a,b)
2021 #define IRunningObjectTable_EnumRunning(p,a) (p)->lpVtbl->EnumRunning(p,a)
2022
2023 #endif
2024
2025 #define IRunningObjectTable_METHODS \
2026     ICOM_MSVTABLE_COMPAT_FIELDS \
2027     /*** IUnknown methods ***/ \
2028     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2029     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2030     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2031     /*** IRunningObjectTable methods ***/ \
2032     STDMETHOD_(HRESULT,Register)(THIS_ DWORD grfFlags, IUnknown* punkObject, IMoniker* pmkObjectName, DWORD* pdwRegister) PURE; \
2033     STDMETHOD_(HRESULT,Revoke)(THIS_ DWORD dwRegister) PURE; \
2034     STDMETHOD_(HRESULT,IsRunning)(THIS_ IMoniker* pmkObjectName) PURE; \
2035     STDMETHOD_(HRESULT,GetObject)(THIS_ IMoniker* pmkObjectName, IUnknown** ppunkObject) PURE; \
2036     STDMETHOD_(HRESULT,NoteChangeTime)(THIS_ DWORD dwRegister, FILETIME* pfiletime) PURE; \
2037     STDMETHOD_(HRESULT,GetTimeOfLastChange)(THIS_ IMoniker* pmkObjectName, FILETIME* pfiletime) PURE; \
2038     STDMETHOD_(HRESULT,EnumRunning)(THIS_ IEnumMoniker** ppenumMoniker) PURE;
2039
2040 HRESULT CALLBACK IRunningObjectTable_Register_Proxy(
2041     IRunningObjectTable* This,
2042     DWORD grfFlags,
2043     IUnknown* punkObject,
2044     IMoniker* pmkObjectName,
2045     DWORD* pdwRegister);
2046 void __RPC_STUB IRunningObjectTable_Register_Stub(
2047     struct IRpcStubBuffer* This,
2048     struct IRpcChannelBuffer* pRpcChannelBuffer,
2049     PRPC_MESSAGE pRpcMessage,
2050     DWORD* pdwStubPhase);
2051 HRESULT CALLBACK IRunningObjectTable_Revoke_Proxy(
2052     IRunningObjectTable* This,
2053     DWORD dwRegister);
2054 void __RPC_STUB IRunningObjectTable_Revoke_Stub(
2055     struct IRpcStubBuffer* This,
2056     struct IRpcChannelBuffer* pRpcChannelBuffer,
2057     PRPC_MESSAGE pRpcMessage,
2058     DWORD* pdwStubPhase);
2059 HRESULT CALLBACK IRunningObjectTable_IsRunning_Proxy(
2060     IRunningObjectTable* This,
2061     IMoniker* pmkObjectName);
2062 void __RPC_STUB IRunningObjectTable_IsRunning_Stub(
2063     struct IRpcStubBuffer* This,
2064     struct IRpcChannelBuffer* pRpcChannelBuffer,
2065     PRPC_MESSAGE pRpcMessage,
2066     DWORD* pdwStubPhase);
2067 HRESULT CALLBACK IRunningObjectTable_GetObject_Proxy(
2068     IRunningObjectTable* This,
2069     IMoniker* pmkObjectName,
2070     IUnknown** ppunkObject);
2071 void __RPC_STUB IRunningObjectTable_GetObject_Stub(
2072     struct IRpcStubBuffer* This,
2073     struct IRpcChannelBuffer* pRpcChannelBuffer,
2074     PRPC_MESSAGE pRpcMessage,
2075     DWORD* pdwStubPhase);
2076 HRESULT CALLBACK IRunningObjectTable_NoteChangeTime_Proxy(
2077     IRunningObjectTable* This,
2078     DWORD dwRegister,
2079     FILETIME* pfiletime);
2080 void __RPC_STUB IRunningObjectTable_NoteChangeTime_Stub(
2081     struct IRpcStubBuffer* This,
2082     struct IRpcChannelBuffer* pRpcChannelBuffer,
2083     PRPC_MESSAGE pRpcMessage,
2084     DWORD* pdwStubPhase);
2085 HRESULT CALLBACK IRunningObjectTable_GetTimeOfLastChange_Proxy(
2086     IRunningObjectTable* This,
2087     IMoniker* pmkObjectName,
2088     FILETIME* pfiletime);
2089 void __RPC_STUB IRunningObjectTable_GetTimeOfLastChange_Stub(
2090     struct IRpcStubBuffer* This,
2091     struct IRpcChannelBuffer* pRpcChannelBuffer,
2092     PRPC_MESSAGE pRpcMessage,
2093     DWORD* pdwStubPhase);
2094 HRESULT CALLBACK IRunningObjectTable_EnumRunning_Proxy(
2095     IRunningObjectTable* This,
2096     IEnumMoniker** ppenumMoniker);
2097 void __RPC_STUB IRunningObjectTable_EnumRunning_Stub(
2098     struct IRpcStubBuffer* This,
2099     struct IRpcChannelBuffer* pRpcChannelBuffer,
2100     PRPC_MESSAGE pRpcMessage,
2101     DWORD* pdwStubPhase);
2102
2103 #endif  /* __IRunningObjectTable_INTERFACE_DEFINED__ */
2104
2105 #ifndef __IPersist_FWD_DEFINED__
2106 #define __IPersist_FWD_DEFINED__
2107 typedef struct IPersist IPersist;
2108 #endif
2109
2110 typedef IPersist *LPPERSIST;
2111
2112 /*****************************************************************************
2113  * IPersist interface
2114  */
2115 #ifndef __IPersist_INTERFACE_DEFINED__
2116 #define __IPersist_INTERFACE_DEFINED__
2117
2118 DEFINE_GUID(IID_IPersist, 0x0000010c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2119 #if defined(__cplusplus) && !defined(CINTERFACE)
2120 struct IPersist : public IUnknown
2121 {
2122     virtual HRESULT STDMETHODCALLTYPE GetClassID(
2123         CLSID* pClassID) = 0;
2124
2125 };
2126 #else
2127 typedef struct IPersistVtbl IPersistVtbl;
2128 struct IPersist {
2129     const IPersistVtbl* lpVtbl;
2130 };
2131 struct IPersistVtbl {
2132     ICOM_MSVTABLE_COMPAT_FIELDS
2133
2134     /*** IUnknown methods ***/
2135     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2136         IPersist* This,
2137         REFIID riid,
2138         void** ppvObject);
2139
2140     ULONG (STDMETHODCALLTYPE *AddRef)(
2141         IPersist* This);
2142
2143     ULONG (STDMETHODCALLTYPE *Release)(
2144         IPersist* This);
2145
2146     /*** IPersist methods ***/
2147     HRESULT (STDMETHODCALLTYPE *GetClassID)(
2148         IPersist* This,
2149         CLSID* pClassID);
2150
2151 };
2152
2153 /*** IUnknown methods ***/
2154 #define IPersist_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2155 #define IPersist_AddRef(p) (p)->lpVtbl->AddRef(p)
2156 #define IPersist_Release(p) (p)->lpVtbl->Release(p)
2157 /*** IPersist methods ***/
2158 #define IPersist_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
2159
2160 #endif
2161
2162 #define IPersist_METHODS \
2163     ICOM_MSVTABLE_COMPAT_FIELDS \
2164     /*** IUnknown methods ***/ \
2165     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2166     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2167     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2168     /*** IPersist methods ***/ \
2169     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE;
2170
2171 HRESULT CALLBACK IPersist_GetClassID_Proxy(
2172     IPersist* This,
2173     CLSID* pClassID);
2174 void __RPC_STUB IPersist_GetClassID_Stub(
2175     struct IRpcStubBuffer* This,
2176     struct IRpcChannelBuffer* pRpcChannelBuffer,
2177     PRPC_MESSAGE pRpcMessage,
2178     DWORD* pdwStubPhase);
2179
2180 #endif  /* __IPersist_INTERFACE_DEFINED__ */
2181
2182 #ifndef __IPersistStream_FWD_DEFINED__
2183 #define __IPersistStream_FWD_DEFINED__
2184 typedef struct IPersistStream IPersistStream;
2185 #endif
2186
2187 typedef IPersistStream *LPPERSISTSTREAM;
2188
2189 /*****************************************************************************
2190  * IPersistStream interface
2191  */
2192 #ifndef __IPersistStream_INTERFACE_DEFINED__
2193 #define __IPersistStream_INTERFACE_DEFINED__
2194
2195 DEFINE_GUID(IID_IPersistStream, 0x00000109, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2196 #if defined(__cplusplus) && !defined(CINTERFACE)
2197 struct IPersistStream : public IPersist
2198 {
2199     virtual HRESULT STDMETHODCALLTYPE IsDirty(
2200         ) = 0;
2201
2202     virtual HRESULT STDMETHODCALLTYPE Load(
2203         IStream* pStm) = 0;
2204
2205     virtual HRESULT STDMETHODCALLTYPE Save(
2206         IStream* pStm,
2207         BOOL fClearDirty) = 0;
2208
2209     virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
2210         ULARGE_INTEGER* pcbSize) = 0;
2211
2212 };
2213 #else
2214 typedef struct IPersistStreamVtbl IPersistStreamVtbl;
2215 struct IPersistStream {
2216     const IPersistStreamVtbl* lpVtbl;
2217 };
2218 struct IPersistStreamVtbl {
2219     ICOM_MSVTABLE_COMPAT_FIELDS
2220
2221     /*** IUnknown methods ***/
2222     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2223         IPersistStream* This,
2224         REFIID riid,
2225         void** ppvObject);
2226
2227     ULONG (STDMETHODCALLTYPE *AddRef)(
2228         IPersistStream* This);
2229
2230     ULONG (STDMETHODCALLTYPE *Release)(
2231         IPersistStream* This);
2232
2233     /*** IPersist methods ***/
2234     HRESULT (STDMETHODCALLTYPE *GetClassID)(
2235         IPersistStream* This,
2236         CLSID* pClassID);
2237
2238     /*** IPersistStream methods ***/
2239     HRESULT (STDMETHODCALLTYPE *IsDirty)(
2240         IPersistStream* This);
2241
2242     HRESULT (STDMETHODCALLTYPE *Load)(
2243         IPersistStream* This,
2244         IStream* pStm);
2245
2246     HRESULT (STDMETHODCALLTYPE *Save)(
2247         IPersistStream* This,
2248         IStream* pStm,
2249         BOOL fClearDirty);
2250
2251     HRESULT (STDMETHODCALLTYPE *GetSizeMax)(
2252         IPersistStream* This,
2253         ULARGE_INTEGER* pcbSize);
2254
2255 };
2256
2257 /*** IUnknown methods ***/
2258 #define IPersistStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2259 #define IPersistStream_AddRef(p) (p)->lpVtbl->AddRef(p)
2260 #define IPersistStream_Release(p) (p)->lpVtbl->Release(p)
2261 /*** IPersist methods ***/
2262 #define IPersistStream_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
2263 /*** IPersistStream methods ***/
2264 #define IPersistStream_IsDirty(p) (p)->lpVtbl->IsDirty(p)
2265 #define IPersistStream_Load(p,a) (p)->lpVtbl->Load(p,a)
2266 #define IPersistStream_Save(p,a,b) (p)->lpVtbl->Save(p,a,b)
2267 #define IPersistStream_GetSizeMax(p,a) (p)->lpVtbl->GetSizeMax(p,a)
2268
2269 #endif
2270
2271 #define IPersistStream_METHODS \
2272     ICOM_MSVTABLE_COMPAT_FIELDS \
2273     /*** IUnknown methods ***/ \
2274     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2275     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2276     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2277     /*** IPersist methods ***/ \
2278     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
2279     /*** IPersistStream methods ***/ \
2280     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \
2281     STDMETHOD_(HRESULT,Load)(THIS_ IStream* pStm) PURE; \
2282     STDMETHOD_(HRESULT,Save)(THIS_ IStream* pStm, BOOL fClearDirty) PURE; \
2283     STDMETHOD_(HRESULT,GetSizeMax)(THIS_ ULARGE_INTEGER* pcbSize) PURE;
2284
2285 HRESULT CALLBACK IPersistStream_IsDirty_Proxy(
2286     IPersistStream* This);
2287 void __RPC_STUB IPersistStream_IsDirty_Stub(
2288     struct IRpcStubBuffer* This,
2289     struct IRpcChannelBuffer* pRpcChannelBuffer,
2290     PRPC_MESSAGE pRpcMessage,
2291     DWORD* pdwStubPhase);
2292 HRESULT CALLBACK IPersistStream_Load_Proxy(
2293     IPersistStream* This,
2294     IStream* pStm);
2295 void __RPC_STUB IPersistStream_Load_Stub(
2296     struct IRpcStubBuffer* This,
2297     struct IRpcChannelBuffer* pRpcChannelBuffer,
2298     PRPC_MESSAGE pRpcMessage,
2299     DWORD* pdwStubPhase);
2300 HRESULT CALLBACK IPersistStream_Save_Proxy(
2301     IPersistStream* This,
2302     IStream* pStm,
2303     BOOL fClearDirty);
2304 void __RPC_STUB IPersistStream_Save_Stub(
2305     struct IRpcStubBuffer* This,
2306     struct IRpcChannelBuffer* pRpcChannelBuffer,
2307     PRPC_MESSAGE pRpcMessage,
2308     DWORD* pdwStubPhase);
2309 HRESULT CALLBACK IPersistStream_GetSizeMax_Proxy(
2310     IPersistStream* This,
2311     ULARGE_INTEGER* pcbSize);
2312 void __RPC_STUB IPersistStream_GetSizeMax_Stub(
2313     struct IRpcStubBuffer* This,
2314     struct IRpcChannelBuffer* pRpcChannelBuffer,
2315     PRPC_MESSAGE pRpcMessage,
2316     DWORD* pdwStubPhase);
2317
2318 #endif  /* __IPersistStream_INTERFACE_DEFINED__ */
2319
2320 typedef IMoniker *LPMONIKER;
2321
2322 typedef enum tagMKSYS {
2323     MKSYS_NONE = 0,
2324     MKSYS_GENERICCOMPOSITE = 1,
2325     MKSYS_FILEMONIKER = 2,
2326     MKSYS_ANTIMONIKER = 3,
2327     MKSYS_ITEMMONIKER = 4,
2328     MKSYS_POINTERMONIKER = 5,
2329     MKSYS_CLASSMONIKER = 7
2330 } MKSYS;
2331
2332 typedef enum tagMKREDUCE {
2333     MKRREDUCE_ONE = 3 << 16,
2334     MKRREDUCE_TOUSER = 2 << 16,
2335     MKRREDUCE_THROUGHUSER = 1 << 16,
2336     MKRREDUCE_ALL = 0
2337 } MKRREDUCE;
2338
2339 /*****************************************************************************
2340  * IMoniker interface
2341  */
2342 #ifndef __IMoniker_INTERFACE_DEFINED__
2343 #define __IMoniker_INTERFACE_DEFINED__
2344
2345 DEFINE_GUID(IID_IMoniker, 0x0000000f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2346 #if defined(__cplusplus) && !defined(CINTERFACE)
2347 struct IMoniker : public IPersistStream
2348 {
2349     virtual HRESULT STDMETHODCALLTYPE BindToObject(
2350         IBindCtx* pbc,
2351         IMoniker* pmkToLeft,
2352         REFIID riidResult,
2353         void** ppvResult) = 0;
2354
2355     virtual HRESULT STDMETHODCALLTYPE BindToStorage(
2356         IBindCtx* pbc,
2357         IMoniker* pmkToLeft,
2358         REFIID riid,
2359         void** ppvObj) = 0;
2360
2361     virtual HRESULT STDMETHODCALLTYPE Reduce(
2362         IBindCtx* pbc,
2363         DWORD dwReduceHowFar,
2364         IMoniker** ppmkToLeft,
2365         IMoniker** ppmkReduced) = 0;
2366
2367     virtual HRESULT STDMETHODCALLTYPE ComposeWith(
2368         IMoniker* pmkRight,
2369         BOOL fOnlyIfNotGeneric,
2370         IMoniker** ppmkComposite) = 0;
2371
2372     virtual HRESULT STDMETHODCALLTYPE Enum(
2373         BOOL fForward,
2374         IEnumMoniker** ppenumMoniker) = 0;
2375
2376     virtual HRESULT STDMETHODCALLTYPE IsEqual(
2377         IMoniker* pmkOtherMoniker) = 0;
2378
2379     virtual HRESULT STDMETHODCALLTYPE Hash(
2380         DWORD* pdwHash) = 0;
2381
2382     virtual HRESULT STDMETHODCALLTYPE IsRunning(
2383         IBindCtx* pbc,
2384         IMoniker* pmkToLeft,
2385         IMoniker* pmkNewlyRunning) = 0;
2386
2387     virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
2388         IBindCtx* pbc,
2389         IMoniker* pmkToLeft,
2390         FILETIME* pFileTime) = 0;
2391
2392     virtual HRESULT STDMETHODCALLTYPE Inverse(
2393         IMoniker** ppmk) = 0;
2394
2395     virtual HRESULT STDMETHODCALLTYPE CommonPrefixWith(
2396         IMoniker* pmkOther,
2397         IMoniker** ppmkPrefix) = 0;
2398
2399     virtual HRESULT STDMETHODCALLTYPE RelativePathTo(
2400         IMoniker* pmkOther,
2401         IMoniker** ppmkRelPath) = 0;
2402
2403     virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
2404         IBindCtx* pbc,
2405         IMoniker* pmkToLeft,
2406         LPOLESTR* ppszDisplayName) = 0;
2407
2408     virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
2409         IBindCtx* pbc,
2410         IMoniker* pmkToLeft,
2411         LPOLESTR pszDisplayName,
2412         ULONG* pchEaten,
2413         IMoniker** ppmkOut) = 0;
2414
2415     virtual HRESULT STDMETHODCALLTYPE IsSystemMoniker(
2416         DWORD* pdwMksys) = 0;
2417
2418 };
2419 #else
2420 typedef struct IMonikerVtbl IMonikerVtbl;
2421 struct IMoniker {
2422     const IMonikerVtbl* lpVtbl;
2423 };
2424 struct IMonikerVtbl {
2425     ICOM_MSVTABLE_COMPAT_FIELDS
2426
2427     /*** IUnknown methods ***/
2428     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2429         IMoniker* This,
2430         REFIID riid,
2431         void** ppvObject);
2432
2433     ULONG (STDMETHODCALLTYPE *AddRef)(
2434         IMoniker* This);
2435
2436     ULONG (STDMETHODCALLTYPE *Release)(
2437         IMoniker* This);
2438
2439     /*** IPersist methods ***/
2440     HRESULT (STDMETHODCALLTYPE *GetClassID)(
2441         IMoniker* This,
2442         CLSID* pClassID);
2443
2444     /*** IPersistStream methods ***/
2445     HRESULT (STDMETHODCALLTYPE *IsDirty)(
2446         IMoniker* This);
2447
2448     HRESULT (STDMETHODCALLTYPE *Load)(
2449         IMoniker* This,
2450         IStream* pStm);
2451
2452     HRESULT (STDMETHODCALLTYPE *Save)(
2453         IMoniker* This,
2454         IStream* pStm,
2455         BOOL fClearDirty);
2456
2457     HRESULT (STDMETHODCALLTYPE *GetSizeMax)(
2458         IMoniker* This,
2459         ULARGE_INTEGER* pcbSize);
2460
2461     /*** IMoniker methods ***/
2462     HRESULT (STDMETHODCALLTYPE *BindToObject)(
2463         IMoniker* This,
2464         IBindCtx* pbc,
2465         IMoniker* pmkToLeft,
2466         REFIID riidResult,
2467         void** ppvResult);
2468
2469     HRESULT (STDMETHODCALLTYPE *BindToStorage)(
2470         IMoniker* This,
2471         IBindCtx* pbc,
2472         IMoniker* pmkToLeft,
2473         REFIID riid,
2474         void** ppvObj);
2475
2476     HRESULT (STDMETHODCALLTYPE *Reduce)(
2477         IMoniker* This,
2478         IBindCtx* pbc,
2479         DWORD dwReduceHowFar,
2480         IMoniker** ppmkToLeft,
2481         IMoniker** ppmkReduced);
2482
2483     HRESULT (STDMETHODCALLTYPE *ComposeWith)(
2484         IMoniker* This,
2485         IMoniker* pmkRight,
2486         BOOL fOnlyIfNotGeneric,
2487         IMoniker** ppmkComposite);
2488
2489     HRESULT (STDMETHODCALLTYPE *Enum)(
2490         IMoniker* This,
2491         BOOL fForward,
2492         IEnumMoniker** ppenumMoniker);
2493
2494     HRESULT (STDMETHODCALLTYPE *IsEqual)(
2495         IMoniker* This,
2496         IMoniker* pmkOtherMoniker);
2497
2498     HRESULT (STDMETHODCALLTYPE *Hash)(
2499         IMoniker* This,
2500         DWORD* pdwHash);
2501
2502     HRESULT (STDMETHODCALLTYPE *IsRunning)(
2503         IMoniker* This,
2504         IBindCtx* pbc,
2505         IMoniker* pmkToLeft,
2506         IMoniker* pmkNewlyRunning);
2507
2508     HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)(
2509         IMoniker* This,
2510         IBindCtx* pbc,
2511         IMoniker* pmkToLeft,
2512         FILETIME* pFileTime);
2513
2514     HRESULT (STDMETHODCALLTYPE *Inverse)(
2515         IMoniker* This,
2516         IMoniker** ppmk);
2517
2518     HRESULT (STDMETHODCALLTYPE *CommonPrefixWith)(
2519         IMoniker* This,
2520         IMoniker* pmkOther,
2521         IMoniker** ppmkPrefix);
2522
2523     HRESULT (STDMETHODCALLTYPE *RelativePathTo)(
2524         IMoniker* This,
2525         IMoniker* pmkOther,
2526         IMoniker** ppmkRelPath);
2527
2528     HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
2529         IMoniker* This,
2530         IBindCtx* pbc,
2531         IMoniker* pmkToLeft,
2532         LPOLESTR* ppszDisplayName);
2533
2534     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
2535         IMoniker* This,
2536         IBindCtx* pbc,
2537         IMoniker* pmkToLeft,
2538         LPOLESTR pszDisplayName,
2539         ULONG* pchEaten,
2540         IMoniker** ppmkOut);
2541
2542     HRESULT (STDMETHODCALLTYPE *IsSystemMoniker)(
2543         IMoniker* This,
2544         DWORD* pdwMksys);
2545
2546 };
2547
2548 /*** IUnknown methods ***/
2549 #define IMoniker_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2550 #define IMoniker_AddRef(p) (p)->lpVtbl->AddRef(p)
2551 #define IMoniker_Release(p) (p)->lpVtbl->Release(p)
2552 /*** IPersist methods ***/
2553 #define IMoniker_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
2554 /*** IPersistStream methods ***/
2555 #define IMoniker_IsDirty(p) (p)->lpVtbl->IsDirty(p)
2556 #define IMoniker_Load(p,a) (p)->lpVtbl->Load(p,a)
2557 #define IMoniker_Save(p,a,b) (p)->lpVtbl->Save(p,a,b)
2558 #define IMoniker_GetSizeMax(p,a) (p)->lpVtbl->GetSizeMax(p,a)
2559 /*** IMoniker methods ***/
2560 #define IMoniker_BindToObject(p,a,b,c,d) (p)->lpVtbl->BindToObject(p,a,b,c,d)
2561 #define IMoniker_BindToStorage(p,a,b,c,d) (p)->lpVtbl->BindToStorage(p,a,b,c,d)
2562 #define IMoniker_Reduce(p,a,b,c,d) (p)->lpVtbl->Reduce(p,a,b,c,d)
2563 #define IMoniker_ComposeWith(p,a,b,c) (p)->lpVtbl->ComposeWith(p,a,b,c)
2564 #define IMoniker_Enum(p,a,b) (p)->lpVtbl->Enum(p,a,b)
2565 #define IMoniker_IsEqual(p,a) (p)->lpVtbl->IsEqual(p,a)
2566 #define IMoniker_Hash(p,a) (p)->lpVtbl->Hash(p,a)
2567 #define IMoniker_IsRunning(p,a,b,c) (p)->lpVtbl->IsRunning(p,a,b,c)
2568 #define IMoniker_GetTimeOfLastChange(p,a,b,c) (p)->lpVtbl->GetTimeOfLastChange(p,a,b,c)
2569 #define IMoniker_Inverse(p,a) (p)->lpVtbl->Inverse(p,a)
2570 #define IMoniker_CommonPrefixWith(p,a,b) (p)->lpVtbl->CommonPrefixWith(p,a,b)
2571 #define IMoniker_RelativePathTo(p,a,b) (p)->lpVtbl->RelativePathTo(p,a,b)
2572 #define IMoniker_GetDisplayName(p,a,b,c) (p)->lpVtbl->GetDisplayName(p,a,b,c)
2573 #define IMoniker_ParseDisplayName(p,a,b,c,d,e) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d,e)
2574 #define IMoniker_IsSystemMoniker(p,a) (p)->lpVtbl->IsSystemMoniker(p,a)
2575
2576 #endif
2577
2578 #define IMoniker_METHODS \
2579     ICOM_MSVTABLE_COMPAT_FIELDS \
2580     /*** IUnknown methods ***/ \
2581     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2582     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2583     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2584     /*** IPersist methods ***/ \
2585     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
2586     /*** IPersistStream methods ***/ \
2587     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \
2588     STDMETHOD_(HRESULT,Load)(THIS_ IStream* pStm) PURE; \
2589     STDMETHOD_(HRESULT,Save)(THIS_ IStream* pStm, BOOL fClearDirty) PURE; \
2590     STDMETHOD_(HRESULT,GetSizeMax)(THIS_ ULARGE_INTEGER* pcbSize) PURE; \
2591     /*** IMoniker methods ***/ \
2592     STDMETHOD_(HRESULT,BindToObject)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riidResult, void** ppvResult) PURE; \
2593     STDMETHOD_(HRESULT,BindToStorage)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, void** ppvObj) PURE; \
2594     STDMETHOD_(HRESULT,Reduce)(THIS_ IBindCtx* pbc, DWORD dwReduceHowFar, IMoniker** ppmkToLeft, IMoniker** ppmkReduced) PURE; \
2595     STDMETHOD_(HRESULT,ComposeWith)(THIS_ IMoniker* pmkRight, BOOL fOnlyIfNotGeneric, IMoniker** ppmkComposite) PURE; \
2596     STDMETHOD_(HRESULT,Enum)(THIS_ BOOL fForward, IEnumMoniker** ppenumMoniker) PURE; \
2597     STDMETHOD_(HRESULT,IsEqual)(THIS_ IMoniker* pmkOtherMoniker) PURE; \
2598     STDMETHOD_(HRESULT,Hash)(THIS_ DWORD* pdwHash) PURE; \
2599     STDMETHOD_(HRESULT,IsRunning)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, IMoniker* pmkNewlyRunning) PURE; \
2600     STDMETHOD_(HRESULT,GetTimeOfLastChange)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, FILETIME* pFileTime) PURE; \
2601     STDMETHOD_(HRESULT,Inverse)(THIS_ IMoniker** ppmk) PURE; \
2602     STDMETHOD_(HRESULT,CommonPrefixWith)(THIS_ IMoniker* pmkOther, IMoniker** ppmkPrefix) PURE; \
2603     STDMETHOD_(HRESULT,RelativePathTo)(THIS_ IMoniker* pmkOther, IMoniker** ppmkRelPath) PURE; \
2604     STDMETHOD_(HRESULT,GetDisplayName)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR* ppszDisplayName) PURE; \
2605     STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE; \
2606     STDMETHOD_(HRESULT,IsSystemMoniker)(THIS_ DWORD* pdwMksys) PURE;
2607
2608 HRESULT CALLBACK IMoniker_RemoteBindToObject_Proxy(
2609     IMoniker* This,
2610     IBindCtx* pbc,
2611     IMoniker* pmkToLeft,
2612     REFIID riidResult,
2613     IUnknown** ppvResult);
2614 void __RPC_STUB IMoniker_RemoteBindToObject_Stub(
2615     struct IRpcStubBuffer* This,
2616     struct IRpcChannelBuffer* pRpcChannelBuffer,
2617     PRPC_MESSAGE pRpcMessage,
2618     DWORD* pdwStubPhase);
2619 HRESULT CALLBACK IMoniker_BindToObject_Proxy(
2620     IMoniker* This,
2621     IBindCtx* pbc,
2622     IMoniker* pmkToLeft,
2623     REFIID riidResult,
2624     void** ppvResult);
2625 HRESULT __RPC_STUB IMoniker_BindToObject_Stub(
2626     IMoniker* This,
2627     IBindCtx* pbc,
2628     IMoniker* pmkToLeft,
2629     REFIID riidResult,
2630     IUnknown** ppvResult);
2631 HRESULT CALLBACK IMoniker_RemoteBindToStorage_Proxy(
2632     IMoniker* This,
2633     IBindCtx* pbc,
2634     IMoniker* pmkToLeft,
2635     REFIID riid,
2636     IUnknown** ppvObj);
2637 void __RPC_STUB IMoniker_RemoteBindToStorage_Stub(
2638     struct IRpcStubBuffer* This,
2639     struct IRpcChannelBuffer* pRpcChannelBuffer,
2640     PRPC_MESSAGE pRpcMessage,
2641     DWORD* pdwStubPhase);
2642 HRESULT CALLBACK IMoniker_BindToStorage_Proxy(
2643     IMoniker* This,
2644     IBindCtx* pbc,
2645     IMoniker* pmkToLeft,
2646     REFIID riid,
2647     void** ppvObj);
2648 HRESULT __RPC_STUB IMoniker_BindToStorage_Stub(
2649     IMoniker* This,
2650     IBindCtx* pbc,
2651     IMoniker* pmkToLeft,
2652     REFIID riid,
2653     IUnknown** ppvObj);
2654 HRESULT CALLBACK IMoniker_Reduce_Proxy(
2655     IMoniker* This,
2656     IBindCtx* pbc,
2657     DWORD dwReduceHowFar,
2658     IMoniker** ppmkToLeft,
2659     IMoniker** ppmkReduced);
2660 void __RPC_STUB IMoniker_Reduce_Stub(
2661     struct IRpcStubBuffer* This,
2662     struct IRpcChannelBuffer* pRpcChannelBuffer,
2663     PRPC_MESSAGE pRpcMessage,
2664     DWORD* pdwStubPhase);
2665 HRESULT CALLBACK IMoniker_ComposeWith_Proxy(
2666     IMoniker* This,
2667     IMoniker* pmkRight,
2668     BOOL fOnlyIfNotGeneric,
2669     IMoniker** ppmkComposite);
2670 void __RPC_STUB IMoniker_ComposeWith_Stub(
2671     struct IRpcStubBuffer* This,
2672     struct IRpcChannelBuffer* pRpcChannelBuffer,
2673     PRPC_MESSAGE pRpcMessage,
2674     DWORD* pdwStubPhase);
2675 HRESULT CALLBACK IMoniker_Enum_Proxy(
2676     IMoniker* This,
2677     BOOL fForward,
2678     IEnumMoniker** ppenumMoniker);
2679 void __RPC_STUB IMoniker_Enum_Stub(
2680     struct IRpcStubBuffer* This,
2681     struct IRpcChannelBuffer* pRpcChannelBuffer,
2682     PRPC_MESSAGE pRpcMessage,
2683     DWORD* pdwStubPhase);
2684 HRESULT CALLBACK IMoniker_IsEqual_Proxy(
2685     IMoniker* This,
2686     IMoniker* pmkOtherMoniker);
2687 void __RPC_STUB IMoniker_IsEqual_Stub(
2688     struct IRpcStubBuffer* This,
2689     struct IRpcChannelBuffer* pRpcChannelBuffer,
2690     PRPC_MESSAGE pRpcMessage,
2691     DWORD* pdwStubPhase);
2692 HRESULT CALLBACK IMoniker_Hash_Proxy(
2693     IMoniker* This,
2694     DWORD* pdwHash);
2695 void __RPC_STUB IMoniker_Hash_Stub(
2696     struct IRpcStubBuffer* This,
2697     struct IRpcChannelBuffer* pRpcChannelBuffer,
2698     PRPC_MESSAGE pRpcMessage,
2699     DWORD* pdwStubPhase);
2700 HRESULT CALLBACK IMoniker_IsRunning_Proxy(
2701     IMoniker* This,
2702     IBindCtx* pbc,
2703     IMoniker* pmkToLeft,
2704     IMoniker* pmkNewlyRunning);
2705 void __RPC_STUB IMoniker_IsRunning_Stub(
2706     struct IRpcStubBuffer* This,
2707     struct IRpcChannelBuffer* pRpcChannelBuffer,
2708     PRPC_MESSAGE pRpcMessage,
2709     DWORD* pdwStubPhase);
2710 HRESULT CALLBACK IMoniker_GetTimeOfLastChange_Proxy(
2711     IMoniker* This,
2712     IBindCtx* pbc,
2713     IMoniker* pmkToLeft,
2714     FILETIME* pFileTime);
2715 void __RPC_STUB IMoniker_GetTimeOfLastChange_Stub(
2716     struct IRpcStubBuffer* This,
2717     struct IRpcChannelBuffer* pRpcChannelBuffer,
2718     PRPC_MESSAGE pRpcMessage,
2719     DWORD* pdwStubPhase);
2720 HRESULT CALLBACK IMoniker_Inverse_Proxy(
2721     IMoniker* This,
2722     IMoniker** ppmk);
2723 void __RPC_STUB IMoniker_Inverse_Stub(
2724     struct IRpcStubBuffer* This,
2725     struct IRpcChannelBuffer* pRpcChannelBuffer,
2726     PRPC_MESSAGE pRpcMessage,
2727     DWORD* pdwStubPhase);
2728 HRESULT CALLBACK IMoniker_CommonPrefixWith_Proxy(
2729     IMoniker* This,
2730     IMoniker* pmkOther,
2731     IMoniker** ppmkPrefix);
2732 void __RPC_STUB IMoniker_CommonPrefixWith_Stub(
2733     struct IRpcStubBuffer* This,
2734     struct IRpcChannelBuffer* pRpcChannelBuffer,
2735     PRPC_MESSAGE pRpcMessage,
2736     DWORD* pdwStubPhase);
2737 HRESULT CALLBACK IMoniker_RelativePathTo_Proxy(
2738     IMoniker* This,
2739     IMoniker* pmkOther,
2740     IMoniker** ppmkRelPath);
2741 void __RPC_STUB IMoniker_RelativePathTo_Stub(
2742     struct IRpcStubBuffer* This,
2743     struct IRpcChannelBuffer* pRpcChannelBuffer,
2744     PRPC_MESSAGE pRpcMessage,
2745     DWORD* pdwStubPhase);
2746 HRESULT CALLBACK IMoniker_GetDisplayName_Proxy(
2747     IMoniker* This,
2748     IBindCtx* pbc,
2749     IMoniker* pmkToLeft,
2750     LPOLESTR* ppszDisplayName);
2751 void __RPC_STUB IMoniker_GetDisplayName_Stub(
2752     struct IRpcStubBuffer* This,
2753     struct IRpcChannelBuffer* pRpcChannelBuffer,
2754     PRPC_MESSAGE pRpcMessage,
2755     DWORD* pdwStubPhase);
2756 HRESULT CALLBACK IMoniker_ParseDisplayName_Proxy(
2757     IMoniker* This,
2758     IBindCtx* pbc,
2759     IMoniker* pmkToLeft,
2760     LPOLESTR pszDisplayName,
2761     ULONG* pchEaten,
2762     IMoniker** ppmkOut);
2763 void __RPC_STUB IMoniker_ParseDisplayName_Stub(
2764     struct IRpcStubBuffer* This,
2765     struct IRpcChannelBuffer* pRpcChannelBuffer,
2766     PRPC_MESSAGE pRpcMessage,
2767     DWORD* pdwStubPhase);
2768 HRESULT CALLBACK IMoniker_IsSystemMoniker_Proxy(
2769     IMoniker* This,
2770     DWORD* pdwMksys);
2771 void __RPC_STUB IMoniker_IsSystemMoniker_Stub(
2772     struct IRpcStubBuffer* This,
2773     struct IRpcChannelBuffer* pRpcChannelBuffer,
2774     PRPC_MESSAGE pRpcMessage,
2775     DWORD* pdwStubPhase);
2776
2777 #endif  /* __IMoniker_INTERFACE_DEFINED__ */
2778
2779 #ifndef __IROTData_FWD_DEFINED__
2780 #define __IROTData_FWD_DEFINED__
2781 typedef struct IROTData IROTData;
2782 #endif
2783
2784 /*****************************************************************************
2785  * IROTData interface
2786  */
2787 #ifndef __IROTData_INTERFACE_DEFINED__
2788 #define __IROTData_INTERFACE_DEFINED__
2789
2790 DEFINE_GUID(IID_IROTData, 0xf29f6bc0, 0x5021, 0x11ce, 0xaa,0x15, 0x00,0x00,0x69,0x01,0x29,0x3f);
2791 #if defined(__cplusplus) && !defined(CINTERFACE)
2792 struct IROTData : public IUnknown
2793 {
2794     virtual HRESULT STDMETHODCALLTYPE GetComparisonData(
2795         byte* pbData,
2796         ULONG cbMax,
2797         ULONG* pcbData) = 0;
2798
2799 };
2800 #else
2801 typedef struct IROTDataVtbl IROTDataVtbl;
2802 struct IROTData {
2803     const IROTDataVtbl* lpVtbl;
2804 };
2805 struct IROTDataVtbl {
2806     ICOM_MSVTABLE_COMPAT_FIELDS
2807
2808     /*** IUnknown methods ***/
2809     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2810         IROTData* This,
2811         REFIID riid,
2812         void** ppvObject);
2813
2814     ULONG (STDMETHODCALLTYPE *AddRef)(
2815         IROTData* This);
2816
2817     ULONG (STDMETHODCALLTYPE *Release)(
2818         IROTData* This);
2819
2820     /*** IROTData methods ***/
2821     HRESULT (STDMETHODCALLTYPE *GetComparisonData)(
2822         IROTData* This,
2823         byte* pbData,
2824         ULONG cbMax,
2825         ULONG* pcbData);
2826
2827 };
2828
2829 /*** IUnknown methods ***/
2830 #define IROTData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2831 #define IROTData_AddRef(p) (p)->lpVtbl->AddRef(p)
2832 #define IROTData_Release(p) (p)->lpVtbl->Release(p)
2833 /*** IROTData methods ***/
2834 #define IROTData_GetComparisonData(p,a,b,c) (p)->lpVtbl->GetComparisonData(p,a,b,c)
2835
2836 #endif
2837
2838 #define IROTData_METHODS \
2839     ICOM_MSVTABLE_COMPAT_FIELDS \
2840     /*** IUnknown methods ***/ \
2841     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2842     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2843     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2844     /*** IROTData methods ***/ \
2845     STDMETHOD_(HRESULT,GetComparisonData)(THIS_ byte* pbData, ULONG cbMax, ULONG* pcbData) PURE;
2846
2847 HRESULT CALLBACK IROTData_GetComparisonData_Proxy(
2848     IROTData* This,
2849     byte* pbData,
2850     ULONG cbMax,
2851     ULONG* pcbData);
2852 void __RPC_STUB IROTData_GetComparisonData_Stub(
2853     struct IRpcStubBuffer* This,
2854     struct IRpcChannelBuffer* pRpcChannelBuffer,
2855     PRPC_MESSAGE pRpcMessage,
2856     DWORD* pdwStubPhase);
2857
2858 #endif  /* __IROTData_INTERFACE_DEFINED__ */
2859
2860 typedef IEnumString *LPENUMSTRING;
2861
2862 /*****************************************************************************
2863  * IEnumString interface
2864  */
2865 #ifndef __IEnumString_INTERFACE_DEFINED__
2866 #define __IEnumString_INTERFACE_DEFINED__
2867
2868 DEFINE_GUID(IID_IEnumString, 0x00000101, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2869 #if defined(__cplusplus) && !defined(CINTERFACE)
2870 struct IEnumString : public IUnknown
2871 {
2872     virtual HRESULT STDMETHODCALLTYPE Next(
2873         ULONG celt,
2874         LPOLESTR* rgelt,
2875         ULONG* pceltFetched) = 0;
2876
2877     virtual HRESULT STDMETHODCALLTYPE Skip(
2878         ULONG celt) = 0;
2879
2880     virtual HRESULT STDMETHODCALLTYPE Reset(
2881         ) = 0;
2882
2883     virtual HRESULT STDMETHODCALLTYPE Clone(
2884         IEnumString** ppenum) = 0;
2885
2886 };
2887 #else
2888 typedef struct IEnumStringVtbl IEnumStringVtbl;
2889 struct IEnumString {
2890     const IEnumStringVtbl* lpVtbl;
2891 };
2892 struct IEnumStringVtbl {
2893     ICOM_MSVTABLE_COMPAT_FIELDS
2894
2895     /*** IUnknown methods ***/
2896     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2897         IEnumString* This,
2898         REFIID riid,
2899         void** ppvObject);
2900
2901     ULONG (STDMETHODCALLTYPE *AddRef)(
2902         IEnumString* This);
2903
2904     ULONG (STDMETHODCALLTYPE *Release)(
2905         IEnumString* This);
2906
2907     /*** IEnumString methods ***/
2908     HRESULT (STDMETHODCALLTYPE *Next)(
2909         IEnumString* This,
2910         ULONG celt,
2911         LPOLESTR* rgelt,
2912         ULONG* pceltFetched);
2913
2914     HRESULT (STDMETHODCALLTYPE *Skip)(
2915         IEnumString* This,
2916         ULONG celt);
2917
2918     HRESULT (STDMETHODCALLTYPE *Reset)(
2919         IEnumString* This);
2920
2921     HRESULT (STDMETHODCALLTYPE *Clone)(
2922         IEnumString* This,
2923         IEnumString** ppenum);
2924
2925 };
2926
2927 /*** IUnknown methods ***/
2928 #define IEnumString_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2929 #define IEnumString_AddRef(p) (p)->lpVtbl->AddRef(p)
2930 #define IEnumString_Release(p) (p)->lpVtbl->Release(p)
2931 /*** IEnumString methods ***/
2932 #define IEnumString_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
2933 #define IEnumString_Skip(p,a) (p)->lpVtbl->Skip(p,a)
2934 #define IEnumString_Reset(p) (p)->lpVtbl->Reset(p)
2935 #define IEnumString_Clone(p,a) (p)->lpVtbl->Clone(p,a)
2936
2937 #endif
2938
2939 #define IEnumString_METHODS \
2940     ICOM_MSVTABLE_COMPAT_FIELDS \
2941     /*** IUnknown methods ***/ \
2942     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2943     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2944     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2945     /*** IEnumString methods ***/ \
2946     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, LPOLESTR* rgelt, ULONG* pceltFetched) PURE; \
2947     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
2948     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
2949     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumString** ppenum) PURE;
2950
2951 HRESULT CALLBACK IEnumString_RemoteNext_Proxy(
2952     IEnumString* This,
2953     ULONG celt,
2954     LPOLESTR* rgelt,
2955     ULONG* pceltFetched);
2956 void __RPC_STUB IEnumString_RemoteNext_Stub(
2957     struct IRpcStubBuffer* This,
2958     struct IRpcChannelBuffer* pRpcChannelBuffer,
2959     PRPC_MESSAGE pRpcMessage,
2960     DWORD* pdwStubPhase);
2961 HRESULT CALLBACK IEnumString_Next_Proxy(
2962     IEnumString* This,
2963     ULONG celt,
2964     LPOLESTR* rgelt,
2965     ULONG* pceltFetched);
2966 HRESULT __RPC_STUB IEnumString_Next_Stub(
2967     IEnumString* This,
2968     ULONG celt,
2969     LPOLESTR* rgelt,
2970     ULONG* pceltFetched);
2971 HRESULT CALLBACK IEnumString_Skip_Proxy(
2972     IEnumString* This,
2973     ULONG celt);
2974 void __RPC_STUB IEnumString_Skip_Stub(
2975     struct IRpcStubBuffer* This,
2976     struct IRpcChannelBuffer* pRpcChannelBuffer,
2977     PRPC_MESSAGE pRpcMessage,
2978     DWORD* pdwStubPhase);
2979 HRESULT CALLBACK IEnumString_Reset_Proxy(
2980     IEnumString* This);
2981 void __RPC_STUB IEnumString_Reset_Stub(
2982     struct IRpcStubBuffer* This,
2983     struct IRpcChannelBuffer* pRpcChannelBuffer,
2984     PRPC_MESSAGE pRpcMessage,
2985     DWORD* pdwStubPhase);
2986 HRESULT CALLBACK IEnumString_Clone_Proxy(
2987     IEnumString* This,
2988     IEnumString** ppenum);
2989 void __RPC_STUB IEnumString_Clone_Stub(
2990     struct IRpcStubBuffer* This,
2991     struct IRpcChannelBuffer* pRpcChannelBuffer,
2992     PRPC_MESSAGE pRpcMessage,
2993     DWORD* pdwStubPhase);
2994
2995 #endif  /* __IEnumString_INTERFACE_DEFINED__ */
2996
2997 #ifndef __IClassActivator_FWD_DEFINED__
2998 #define __IClassActivator_FWD_DEFINED__
2999 typedef struct IClassActivator IClassActivator;
3000 #endif
3001
3002 /*****************************************************************************
3003  * IClassActivator interface
3004  */
3005 #ifndef __IClassActivator_INTERFACE_DEFINED__
3006 #define __IClassActivator_INTERFACE_DEFINED__
3007
3008 DEFINE_GUID(IID_IClassActivator, 0x00000140, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3009 #if defined(__cplusplus) && !defined(CINTERFACE)
3010 struct IClassActivator : public IUnknown
3011 {
3012     virtual HRESULT STDMETHODCALLTYPE GetClassObject(
3013         REFCLSID rclsid,
3014         DWORD dwClassContext,
3015         LCID locale,
3016         REFIID riid,
3017         void** ppv) = 0;
3018
3019 };
3020 #else
3021 typedef struct IClassActivatorVtbl IClassActivatorVtbl;
3022 struct IClassActivator {
3023     const IClassActivatorVtbl* lpVtbl;
3024 };
3025 struct IClassActivatorVtbl {
3026     ICOM_MSVTABLE_COMPAT_FIELDS
3027
3028     /*** IUnknown methods ***/
3029     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3030         IClassActivator* This,
3031         REFIID riid,
3032         void** ppvObject);
3033
3034     ULONG (STDMETHODCALLTYPE *AddRef)(
3035         IClassActivator* This);
3036
3037     ULONG (STDMETHODCALLTYPE *Release)(
3038         IClassActivator* This);
3039
3040     /*** IClassActivator methods ***/
3041     HRESULT (STDMETHODCALLTYPE *GetClassObject)(
3042         IClassActivator* This,
3043         REFCLSID rclsid,
3044         DWORD dwClassContext,
3045         LCID locale,
3046         REFIID riid,
3047         void** ppv);
3048
3049 };
3050
3051 /*** IUnknown methods ***/
3052 #define IClassActivator_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3053 #define IClassActivator_AddRef(p) (p)->lpVtbl->AddRef(p)
3054 #define IClassActivator_Release(p) (p)->lpVtbl->Release(p)
3055 /*** IClassActivator methods ***/
3056 #define IClassActivator_GetClassObject(p,a,b,c,d,e) (p)->lpVtbl->GetClassObject(p,a,b,c,d,e)
3057
3058 #endif
3059
3060 #define IClassActivator_METHODS \
3061     ICOM_MSVTABLE_COMPAT_FIELDS \
3062     /*** IUnknown methods ***/ \
3063     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3064     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3065     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3066     /*** IClassActivator methods ***/ \
3067     STDMETHOD_(HRESULT,GetClassObject)(THIS_ REFCLSID rclsid, DWORD dwClassContext, LCID locale, REFIID riid, void** ppv) PURE;
3068
3069 HRESULT CALLBACK IClassActivator_GetClassObject_Proxy(
3070     IClassActivator* This,
3071     REFCLSID rclsid,
3072     DWORD dwClassContext,
3073     LCID locale,
3074     REFIID riid,
3075     void** ppv);
3076 void __RPC_STUB IClassActivator_GetClassObject_Stub(
3077     struct IRpcStubBuffer* This,
3078     struct IRpcChannelBuffer* pRpcChannelBuffer,
3079     PRPC_MESSAGE pRpcMessage,
3080     DWORD* pdwStubPhase);
3081
3082 #endif  /* __IClassActivator_INTERFACE_DEFINED__ */
3083
3084 #ifndef __ISequentialStream_FWD_DEFINED__
3085 #define __ISequentialStream_FWD_DEFINED__
3086 typedef struct ISequentialStream ISequentialStream;
3087 #endif
3088
3089 /*****************************************************************************
3090  * ISequentialStream interface
3091  */
3092 #ifndef __ISequentialStream_INTERFACE_DEFINED__
3093 #define __ISequentialStream_INTERFACE_DEFINED__
3094
3095 DEFINE_GUID(IID_ISequentialStream, 0x0c733a30, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
3096 #if defined(__cplusplus) && !defined(CINTERFACE)
3097 struct ISequentialStream : public IUnknown
3098 {
3099     virtual HRESULT STDMETHODCALLTYPE Read(
3100         void* pv,
3101         ULONG cb,
3102         ULONG* pcbRead) = 0;
3103
3104     virtual HRESULT STDMETHODCALLTYPE Write(
3105         const void* pv,
3106         ULONG cb,
3107         ULONG* pcbWritten) = 0;
3108
3109 };
3110 #else
3111 typedef struct ISequentialStreamVtbl ISequentialStreamVtbl;
3112 struct ISequentialStream {
3113     const ISequentialStreamVtbl* lpVtbl;
3114 };
3115 struct ISequentialStreamVtbl {
3116     ICOM_MSVTABLE_COMPAT_FIELDS
3117
3118     /*** IUnknown methods ***/
3119     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3120         ISequentialStream* This,
3121         REFIID riid,
3122         void** ppvObject);
3123
3124     ULONG (STDMETHODCALLTYPE *AddRef)(
3125         ISequentialStream* This);
3126
3127     ULONG (STDMETHODCALLTYPE *Release)(
3128         ISequentialStream* This);
3129
3130     /*** ISequentialStream methods ***/
3131     HRESULT (STDMETHODCALLTYPE *Read)(
3132         ISequentialStream* This,
3133         void* pv,
3134         ULONG cb,
3135         ULONG* pcbRead);
3136
3137     HRESULT (STDMETHODCALLTYPE *Write)(
3138         ISequentialStream* This,
3139         const void* pv,
3140         ULONG cb,
3141         ULONG* pcbWritten);
3142
3143 };
3144
3145 /*** IUnknown methods ***/
3146 #define ISequentialStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3147 #define ISequentialStream_AddRef(p) (p)->lpVtbl->AddRef(p)
3148 #define ISequentialStream_Release(p) (p)->lpVtbl->Release(p)
3149 /*** ISequentialStream methods ***/
3150 #define ISequentialStream_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c)
3151 #define ISequentialStream_Write(p,a,b,c) (p)->lpVtbl->Write(p,a,b,c)
3152
3153 #endif
3154
3155 #define ISequentialStream_METHODS \
3156     ICOM_MSVTABLE_COMPAT_FIELDS \
3157     /*** IUnknown methods ***/ \
3158     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3159     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3160     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3161     /*** ISequentialStream methods ***/ \
3162     STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; \
3163     STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE;
3164
3165 HRESULT CALLBACK ISequentialStream_RemoteRead_Proxy(
3166     ISequentialStream* This,
3167     byte* pv,
3168     ULONG cb,
3169     ULONG* pcbRead);
3170 void __RPC_STUB ISequentialStream_RemoteRead_Stub(
3171     struct IRpcStubBuffer* This,
3172     struct IRpcChannelBuffer* pRpcChannelBuffer,
3173     PRPC_MESSAGE pRpcMessage,
3174     DWORD* pdwStubPhase);
3175 HRESULT CALLBACK ISequentialStream_Read_Proxy(
3176     ISequentialStream* This,
3177     void* pv,
3178     ULONG cb,
3179     ULONG* pcbRead);
3180 HRESULT __RPC_STUB ISequentialStream_Read_Stub(
3181     ISequentialStream* This,
3182     byte* pv,
3183     ULONG cb,
3184     ULONG* pcbRead);
3185 HRESULT CALLBACK ISequentialStream_RemoteWrite_Proxy(
3186     ISequentialStream* This,
3187     const byte* pv,
3188     ULONG cb,
3189     ULONG* pcbWritten);
3190 void __RPC_STUB ISequentialStream_RemoteWrite_Stub(
3191     struct IRpcStubBuffer* This,
3192     struct IRpcChannelBuffer* pRpcChannelBuffer,
3193     PRPC_MESSAGE pRpcMessage,
3194     DWORD* pdwStubPhase);
3195 HRESULT CALLBACK ISequentialStream_Write_Proxy(
3196     ISequentialStream* This,
3197     const void* pv,
3198     ULONG cb,
3199     ULONG* pcbWritten);
3200 HRESULT __RPC_STUB ISequentialStream_Write_Stub(
3201     ISequentialStream* This,
3202     const byte* pv,
3203     ULONG cb,
3204     ULONG* pcbWritten);
3205
3206 #endif  /* __ISequentialStream_INTERFACE_DEFINED__ */
3207
3208 typedef IStream *LPSTREAM;
3209
3210 typedef struct tagSTATSTG {
3211     LPOLESTR pwcsName;
3212     DWORD type;
3213     ULARGE_INTEGER cbSize;
3214     FILETIME mtime;
3215     FILETIME ctime;
3216     FILETIME atime;
3217     DWORD grfMode;
3218     DWORD grfLocksSupported;
3219     CLSID clsid;
3220     DWORD grfStateBits;
3221     DWORD reserved;
3222 } STATSTG;
3223
3224 typedef enum tagSTGTY {
3225     STGTY_STORAGE = 1,
3226     STGTY_STREAM = 2,
3227     STGTY_LOCKBYTES = 3,
3228     STGTY_PROPERTY = 4
3229 } STGTY;
3230
3231 typedef enum tagSTREAM_SEEK {
3232     STREAM_SEEK_SET = 0,
3233     STREAM_SEEK_CUR = 1,
3234     STREAM_SEEK_END = 2
3235 } STREAM_SEEK;
3236
3237 #undef LOCK_MAND
3238 #undef LOCK_READ
3239 #undef LOCK_WRITE
3240 #undef LOCK_RW
3241 typedef enum tagLOCKTYPE {
3242     LOCK_WRITE = 1,
3243     LOCK_EXCLUSIVE = 2,
3244     LOCK_ONLYONCE = 4
3245 } LOCKTYPE;
3246
3247 /*****************************************************************************
3248  * IStream interface
3249  */
3250 #ifndef __IStream_INTERFACE_DEFINED__
3251 #define __IStream_INTERFACE_DEFINED__
3252
3253 DEFINE_GUID(IID_IStream, 0x0000000c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3254 #if defined(__cplusplus) && !defined(CINTERFACE)
3255 struct IStream : public ISequentialStream
3256 {
3257     virtual HRESULT STDMETHODCALLTYPE Seek(
3258         LARGE_INTEGER dlibMove,
3259         DWORD dwOrigin,
3260         ULARGE_INTEGER* plibNewPosition) = 0;
3261
3262     virtual HRESULT STDMETHODCALLTYPE SetSize(
3263         ULARGE_INTEGER libNewSize) = 0;
3264
3265     virtual HRESULT STDMETHODCALLTYPE CopyTo(
3266         IStream* pstm,
3267         ULARGE_INTEGER cb,
3268         ULARGE_INTEGER* pcbRead,
3269         ULARGE_INTEGER* pcbWritten) = 0;
3270
3271     virtual HRESULT STDMETHODCALLTYPE Commit(
3272         DWORD grfCommitFlags) = 0;
3273
3274     virtual HRESULT STDMETHODCALLTYPE Revert(
3275         ) = 0;
3276
3277     virtual HRESULT STDMETHODCALLTYPE LockRegion(
3278         ULARGE_INTEGER libOffset,
3279         ULARGE_INTEGER cb,
3280         DWORD dwLockType) = 0;
3281
3282     virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
3283         ULARGE_INTEGER libOffset,
3284         ULARGE_INTEGER cb,
3285         DWORD dwLockType) = 0;
3286
3287     virtual HRESULT STDMETHODCALLTYPE Stat(
3288         STATSTG* pstatstg,
3289         DWORD grfStatFlag) = 0;
3290
3291     virtual HRESULT STDMETHODCALLTYPE Clone(
3292         IStream** ppstm) = 0;
3293
3294 };
3295 #else
3296 typedef struct IStreamVtbl IStreamVtbl;
3297 struct IStream {
3298     const IStreamVtbl* lpVtbl;
3299 };
3300 struct IStreamVtbl {
3301     ICOM_MSVTABLE_COMPAT_FIELDS
3302
3303     /*** IUnknown methods ***/
3304     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3305         IStream* This,
3306         REFIID riid,
3307         void** ppvObject);
3308
3309     ULONG (STDMETHODCALLTYPE *AddRef)(
3310         IStream* This);
3311
3312     ULONG (STDMETHODCALLTYPE *Release)(
3313         IStream* This);
3314
3315     /*** ISequentialStream methods ***/
3316     HRESULT (STDMETHODCALLTYPE *Read)(
3317         IStream* This,
3318         void* pv,
3319         ULONG cb,
3320         ULONG* pcbRead);
3321
3322     HRESULT (STDMETHODCALLTYPE *Write)(
3323         IStream* This,
3324         const void* pv,
3325         ULONG cb,
3326         ULONG* pcbWritten);
3327
3328     /*** IStream methods ***/
3329     HRESULT (STDMETHODCALLTYPE *Seek)(
3330         IStream* This,
3331         LARGE_INTEGER dlibMove,
3332         DWORD dwOrigin,
3333         ULARGE_INTEGER* plibNewPosition);
3334
3335     HRESULT (STDMETHODCALLTYPE *SetSize)(
3336         IStream* This,
3337         ULARGE_INTEGER libNewSize);
3338
3339     HRESULT (STDMETHODCALLTYPE *CopyTo)(
3340         IStream* This,
3341         IStream* pstm,
3342         ULARGE_INTEGER cb,
3343         ULARGE_INTEGER* pcbRead,
3344         ULARGE_INTEGER* pcbWritten);
3345
3346     HRESULT (STDMETHODCALLTYPE *Commit)(
3347         IStream* This,
3348         DWORD grfCommitFlags);
3349
3350     HRESULT (STDMETHODCALLTYPE *Revert)(
3351         IStream* This);
3352
3353     HRESULT (STDMETHODCALLTYPE *LockRegion)(
3354         IStream* This,
3355         ULARGE_INTEGER libOffset,
3356         ULARGE_INTEGER cb,
3357         DWORD dwLockType);
3358
3359     HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
3360         IStream* This,
3361         ULARGE_INTEGER libOffset,
3362         ULARGE_INTEGER cb,
3363         DWORD dwLockType);
3364
3365     HRESULT (STDMETHODCALLTYPE *Stat)(
3366         IStream* This,
3367         STATSTG* pstatstg,
3368         DWORD grfStatFlag);
3369
3370     HRESULT (STDMETHODCALLTYPE *Clone)(
3371         IStream* This,
3372         IStream** ppstm);
3373
3374 };
3375
3376 /*** IUnknown methods ***/
3377 #define IStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3378 #define IStream_AddRef(p) (p)->lpVtbl->AddRef(p)
3379 #define IStream_Release(p) (p)->lpVtbl->Release(p)
3380 /*** ISequentialStream methods ***/
3381 #define IStream_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c)
3382 #define IStream_Write(p,a,b,c) (p)->lpVtbl->Write(p,a,b,c)
3383 /*** IStream methods ***/
3384 #define IStream_Seek(p,a,b,c) (p)->lpVtbl->Seek(p,a,b,c)
3385 #define IStream_SetSize(p,a) (p)->lpVtbl->SetSize(p,a)
3386 #define IStream_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d)
3387 #define IStream_Commit(p,a) (p)->lpVtbl->Commit(p,a)
3388 #define IStream_Revert(p) (p)->lpVtbl->Revert(p)
3389 #define IStream_LockRegion(p,a,b,c) (p)->lpVtbl->LockRegion(p,a,b,c)
3390 #define IStream_UnlockRegion(p,a,b,c) (p)->lpVtbl->UnlockRegion(p,a,b,c)
3391 #define IStream_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b)
3392 #define IStream_Clone(p,a) (p)->lpVtbl->Clone(p,a)
3393
3394 #endif
3395
3396 #define IStream_METHODS \
3397     ICOM_MSVTABLE_COMPAT_FIELDS \
3398     /*** IUnknown methods ***/ \
3399     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3400     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3401     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3402     /*** ISequentialStream methods ***/ \
3403     STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; \
3404     STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \
3405     /*** IStream methods ***/ \
3406     STDMETHOD_(HRESULT,Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE; \
3407     STDMETHOD_(HRESULT,SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE; \
3408     STDMETHOD_(HRESULT,CopyTo)(THIS_ IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE; \
3409     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \
3410     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \
3411     STDMETHOD_(HRESULT,LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \
3412     STDMETHOD_(HRESULT,UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \
3413     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; \
3414     STDMETHOD_(HRESULT,Clone)(THIS_ IStream** ppstm) PURE;
3415
3416 HRESULT CALLBACK IStream_RemoteSeek_Proxy(
3417     IStream* This,
3418     LARGE_INTEGER dlibMove,
3419     DWORD dwOrigin,
3420     ULARGE_INTEGER* plibNewPosition);
3421 void __RPC_STUB IStream_RemoteSeek_Stub(
3422     struct IRpcStubBuffer* This,
3423     struct IRpcChannelBuffer* pRpcChannelBuffer,
3424     PRPC_MESSAGE pRpcMessage,
3425     DWORD* pdwStubPhase);
3426 HRESULT CALLBACK IStream_Seek_Proxy(
3427     IStream* This,
3428     LARGE_INTEGER dlibMove,
3429     DWORD dwOrigin,
3430     ULARGE_INTEGER* plibNewPosition);
3431 HRESULT __RPC_STUB IStream_Seek_Stub(
3432     IStream* This,
3433     LARGE_INTEGER dlibMove,
3434     DWORD dwOrigin,
3435     ULARGE_INTEGER* plibNewPosition);
3436 HRESULT CALLBACK IStream_SetSize_Proxy(
3437     IStream* This,
3438     ULARGE_INTEGER libNewSize);
3439 void __RPC_STUB IStream_SetSize_Stub(
3440     struct IRpcStubBuffer* This,
3441     struct IRpcChannelBuffer* pRpcChannelBuffer,
3442     PRPC_MESSAGE pRpcMessage,
3443     DWORD* pdwStubPhase);
3444 HRESULT CALLBACK IStream_RemoteCopyTo_Proxy(
3445     IStream* This,
3446     IStream* pstm,
3447     ULARGE_INTEGER cb,
3448     ULARGE_INTEGER* pcbRead,
3449     ULARGE_INTEGER* pcbWritten);
3450 void __RPC_STUB IStream_RemoteCopyTo_Stub(
3451     struct IRpcStubBuffer* This,
3452     struct IRpcChannelBuffer* pRpcChannelBuffer,
3453     PRPC_MESSAGE pRpcMessage,
3454     DWORD* pdwStubPhase);
3455 HRESULT CALLBACK IStream_CopyTo_Proxy(
3456     IStream* This,
3457     IStream* pstm,
3458     ULARGE_INTEGER cb,
3459     ULARGE_INTEGER* pcbRead,
3460     ULARGE_INTEGER* pcbWritten);
3461 HRESULT __RPC_STUB IStream_CopyTo_Stub(
3462     IStream* This,
3463     IStream* pstm,
3464     ULARGE_INTEGER cb,
3465     ULARGE_INTEGER* pcbRead,
3466     ULARGE_INTEGER* pcbWritten);
3467 HRESULT CALLBACK IStream_Commit_Proxy(
3468     IStream* This,
3469     DWORD grfCommitFlags);
3470 void __RPC_STUB IStream_Commit_Stub(
3471     struct IRpcStubBuffer* This,
3472     struct IRpcChannelBuffer* pRpcChannelBuffer,
3473     PRPC_MESSAGE pRpcMessage,
3474     DWORD* pdwStubPhase);
3475 HRESULT CALLBACK IStream_Revert_Proxy(
3476     IStream* This);
3477 void __RPC_STUB IStream_Revert_Stub(
3478     struct IRpcStubBuffer* This,
3479     struct IRpcChannelBuffer* pRpcChannelBuffer,
3480     PRPC_MESSAGE pRpcMessage,
3481     DWORD* pdwStubPhase);
3482 HRESULT CALLBACK IStream_LockRegion_Proxy(
3483     IStream* This,
3484     ULARGE_INTEGER libOffset,
3485     ULARGE_INTEGER cb,
3486     DWORD dwLockType);
3487 void __RPC_STUB IStream_LockRegion_Stub(
3488     struct IRpcStubBuffer* This,
3489     struct IRpcChannelBuffer* pRpcChannelBuffer,
3490     PRPC_MESSAGE pRpcMessage,
3491     DWORD* pdwStubPhase);
3492 HRESULT CALLBACK IStream_UnlockRegion_Proxy(
3493     IStream* This,
3494     ULARGE_INTEGER libOffset,
3495     ULARGE_INTEGER cb,
3496     DWORD dwLockType);
3497 void __RPC_STUB IStream_UnlockRegion_Stub(
3498     struct IRpcStubBuffer* This,
3499     struct IRpcChannelBuffer* pRpcChannelBuffer,
3500     PRPC_MESSAGE pRpcMessage,
3501     DWORD* pdwStubPhase);
3502 HRESULT CALLBACK IStream_Stat_Proxy(
3503     IStream* This,
3504     STATSTG* pstatstg,
3505     DWORD grfStatFlag);
3506 void __RPC_STUB IStream_Stat_Stub(
3507     struct IRpcStubBuffer* This,
3508     struct IRpcChannelBuffer* pRpcChannelBuffer,
3509     PRPC_MESSAGE pRpcMessage,
3510     DWORD* pdwStubPhase);
3511 HRESULT CALLBACK IStream_Clone_Proxy(
3512     IStream* This,
3513     IStream** ppstm);
3514 void __RPC_STUB IStream_Clone_Stub(
3515     struct IRpcStubBuffer* This,
3516     struct IRpcChannelBuffer* pRpcChannelBuffer,
3517     PRPC_MESSAGE pRpcMessage,
3518     DWORD* pdwStubPhase);
3519
3520 #endif  /* __IStream_INTERFACE_DEFINED__ */
3521
3522 typedef IStream16 *LPSTREAM16;
3523
3524 typedef struct tagSTATSTG16 {
3525     LPOLESTR16 pwcsName;
3526     DWORD type;
3527     ULARGE_INTEGER cbSize;
3528     FILETIME mtime;
3529     FILETIME ctime;
3530     FILETIME atime;
3531     DWORD grfMode;
3532     DWORD grfLocksSupported;
3533     CLSID clsid;
3534     DWORD grfStateBits;
3535     DWORD reserved;
3536 } STATSTG16;
3537
3538 /*****************************************************************************
3539  * IStream16 interface
3540  */
3541 #ifndef __IStream16_INTERFACE_DEFINED__
3542 #define __IStream16_INTERFACE_DEFINED__
3543
3544 #if defined(__cplusplus) && !defined(CINTERFACE)
3545 struct IStream16 : public ISequentialStream
3546 {
3547     virtual HRESULT STDMETHODCALLTYPE Seek(
3548         LARGE_INTEGER dlibMove,
3549         DWORD dwOrigin,
3550         ULARGE_INTEGER* plibNewPosition) = 0;
3551
3552     virtual HRESULT STDMETHODCALLTYPE SetSize(
3553         ULARGE_INTEGER libNewSize) = 0;
3554
3555     virtual HRESULT STDMETHODCALLTYPE CopyTo(
3556         IStream16* pstm,
3557         ULARGE_INTEGER cb,
3558         ULARGE_INTEGER* pcbRead,
3559         ULARGE_INTEGER* pcbWritten) = 0;
3560
3561     virtual HRESULT STDMETHODCALLTYPE Commit(
3562         DWORD grfCommitFlags) = 0;
3563
3564     virtual HRESULT STDMETHODCALLTYPE Revert(
3565         ) = 0;
3566
3567     virtual HRESULT STDMETHODCALLTYPE LockRegion(
3568         ULARGE_INTEGER libOffset,
3569         ULARGE_INTEGER cb,
3570         DWORD dwLockType) = 0;
3571
3572     virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
3573         ULARGE_INTEGER libOffset,
3574         ULARGE_INTEGER cb,
3575         DWORD dwLockType) = 0;
3576
3577     virtual HRESULT STDMETHODCALLTYPE Stat(
3578         STATSTG* pstatstg,
3579         DWORD grfStatFlag) = 0;
3580
3581     virtual HRESULT STDMETHODCALLTYPE Clone(
3582         IStream16** ppstm) = 0;
3583
3584 };
3585 #else
3586 typedef struct IStream16Vtbl IStream16Vtbl;
3587 struct IStream16 {
3588     const IStream16Vtbl* lpVtbl;
3589 };
3590 struct IStream16Vtbl {
3591     ICOM_MSVTABLE_COMPAT_FIELDS
3592
3593     /*** IUnknown methods ***/
3594     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3595         IStream16* This,
3596         REFIID riid,
3597         void** ppvObject);
3598
3599     ULONG (STDMETHODCALLTYPE *AddRef)(
3600         IStream16* This);
3601
3602     ULONG (STDMETHODCALLTYPE *Release)(
3603         IStream16* This);
3604
3605     /*** ISequentialStream methods ***/
3606     HRESULT (STDMETHODCALLTYPE *Read)(
3607         IStream16* This,
3608         void* pv,
3609         ULONG cb,
3610         ULONG* pcbRead);
3611
3612     HRESULT (STDMETHODCALLTYPE *Write)(
3613         IStream16* This,
3614         const void* pv,
3615         ULONG cb,
3616         ULONG* pcbWritten);
3617
3618     /*** IStream16 methods ***/
3619     HRESULT (STDMETHODCALLTYPE *Seek)(
3620         IStream16* This,
3621         LARGE_INTEGER dlibMove,
3622         DWORD dwOrigin,
3623         ULARGE_INTEGER* plibNewPosition);
3624
3625     HRESULT (STDMETHODCALLTYPE *SetSize)(
3626         IStream16* This,
3627         ULARGE_INTEGER libNewSize);
3628
3629     HRESULT (STDMETHODCALLTYPE *CopyTo)(
3630         IStream16* This,
3631         IStream16* pstm,
3632         ULARGE_INTEGER cb,
3633         ULARGE_INTEGER* pcbRead,
3634         ULARGE_INTEGER* pcbWritten);
3635
3636     HRESULT (STDMETHODCALLTYPE *Commit)(
3637         IStream16* This,
3638         DWORD grfCommitFlags);
3639
3640     HRESULT (STDMETHODCALLTYPE *Revert)(
3641         IStream16* This);
3642
3643     HRESULT (STDMETHODCALLTYPE *LockRegion)(
3644         IStream16* This,
3645         ULARGE_INTEGER libOffset,
3646         ULARGE_INTEGER cb,
3647         DWORD dwLockType);
3648
3649     HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
3650         IStream16* This,
3651         ULARGE_INTEGER libOffset,
3652         ULARGE_INTEGER cb,
3653         DWORD dwLockType);
3654
3655     HRESULT (STDMETHODCALLTYPE *Stat)(
3656         IStream16* This,
3657         STATSTG* pstatstg,
3658         DWORD grfStatFlag);
3659
3660     HRESULT (STDMETHODCALLTYPE *Clone)(
3661         IStream16* This,
3662         IStream16** ppstm);
3663
3664 };
3665
3666 /*** IUnknown methods ***/
3667 #define IStream16_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3668 #define IStream16_AddRef(p) (p)->lpVtbl->AddRef(p)
3669 #define IStream16_Release(p) (p)->lpVtbl->Release(p)
3670 /*** ISequentialStream methods ***/
3671 #define IStream16_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c)
3672 #define IStream16_Write(p,a,b,c) (p)->lpVtbl->Write(p,a,b,c)
3673 /*** IStream16 methods ***/
3674 #define IStream16_Seek(p,a,b,c) (p)->lpVtbl->Seek(p,a,b,c)
3675 #define IStream16_SetSize(p,a) (p)->lpVtbl->SetSize(p,a)
3676 #define IStream16_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d)
3677 #define IStream16_Commit(p,a) (p)->lpVtbl->Commit(p,a)
3678 #define IStream16_Revert(p) (p)->lpVtbl->Revert(p)
3679 #define IStream16_LockRegion(p,a,b,c) (p)->lpVtbl->LockRegion(p,a,b,c)
3680 #define IStream16_UnlockRegion(p,a,b,c) (p)->lpVtbl->UnlockRegion(p,a,b,c)
3681 #define IStream16_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b)
3682 #define IStream16_Clone(p,a) (p)->lpVtbl->Clone(p,a)
3683
3684 #endif
3685
3686 #define IStream16_METHODS \
3687     ICOM_MSVTABLE_COMPAT_FIELDS \
3688     /*** IUnknown methods ***/ \
3689     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3690     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3691     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3692     /*** ISequentialStream methods ***/ \
3693     STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; \
3694     STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \
3695     /*** IStream16 methods ***/ \
3696     STDMETHOD_(HRESULT,Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE; \
3697     STDMETHOD_(HRESULT,SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE; \
3698     STDMETHOD_(HRESULT,CopyTo)(THIS_ IStream16* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE; \
3699     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \
3700     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \
3701     STDMETHOD_(HRESULT,LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \
3702     STDMETHOD_(HRESULT,UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \
3703     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; \
3704     STDMETHOD_(HRESULT,Clone)(THIS_ IStream16** ppstm) PURE;
3705
3706 HRESULT CALLBACK IStream16_RemoteSeek_Proxy(
3707     IStream16* This,
3708     LARGE_INTEGER dlibMove,
3709     DWORD dwOrigin,
3710     ULARGE_INTEGER* plibNewPosition);
3711 void __RPC_STUB IStream16_RemoteSeek_Stub(
3712     struct IRpcStubBuffer* This,
3713     struct IRpcChannelBuffer* pRpcChannelBuffer,
3714     PRPC_MESSAGE pRpcMessage,
3715     DWORD* pdwStubPhase);
3716 HRESULT CALLBACK IStream16_Seek_Proxy(
3717     IStream16* This,
3718     LARGE_INTEGER dlibMove,
3719     DWORD dwOrigin,
3720     ULARGE_INTEGER* plibNewPosition);
3721 HRESULT __RPC_STUB IStream16_Seek_Stub(
3722     IStream16* This,
3723     LARGE_INTEGER dlibMove,
3724     DWORD dwOrigin,
3725     ULARGE_INTEGER* plibNewPosition);
3726 HRESULT CALLBACK IStream16_SetSize_Proxy(
3727     IStream16* This,
3728     ULARGE_INTEGER libNewSize);
3729 void __RPC_STUB IStream16_SetSize_Stub(
3730     struct IRpcStubBuffer* This,
3731     struct IRpcChannelBuffer* pRpcChannelBuffer,
3732     PRPC_MESSAGE pRpcMessage,
3733     DWORD* pdwStubPhase);
3734 HRESULT CALLBACK IStream16_RemoteCopyTo_Proxy(
3735     IStream16* This,
3736     IStream16* pstm,
3737     ULARGE_INTEGER cb,
3738     ULARGE_INTEGER* pcbRead,
3739     ULARGE_INTEGER* pcbWritten);
3740 void __RPC_STUB IStream16_RemoteCopyTo_Stub(
3741     struct IRpcStubBuffer* This,
3742     struct IRpcChannelBuffer* pRpcChannelBuffer,
3743     PRPC_MESSAGE pRpcMessage,
3744     DWORD* pdwStubPhase);
3745 HRESULT CALLBACK IStream16_CopyTo_Proxy(
3746     IStream16* This,
3747     IStream16* pstm,
3748     ULARGE_INTEGER cb,
3749     ULARGE_INTEGER* pcbRead,
3750     ULARGE_INTEGER* pcbWritten);
3751 HRESULT __RPC_STUB IStream16_CopyTo_Stub(
3752     IStream16* This,
3753     IStream16* pstm,
3754     ULARGE_INTEGER cb,
3755     ULARGE_INTEGER* pcbRead,
3756     ULARGE_INTEGER* pcbWritten);
3757 HRESULT CALLBACK IStream16_Commit_Proxy(
3758     IStream16* This,
3759     DWORD grfCommitFlags);
3760 void __RPC_STUB IStream16_Commit_Stub(
3761     struct IRpcStubBuffer* This,
3762     struct IRpcChannelBuffer* pRpcChannelBuffer,
3763     PRPC_MESSAGE pRpcMessage,
3764     DWORD* pdwStubPhase);
3765 HRESULT CALLBACK IStream16_Revert_Proxy(
3766     IStream16* This);
3767 void __RPC_STUB IStream16_Revert_Stub(
3768     struct IRpcStubBuffer* This,
3769     struct IRpcChannelBuffer* pRpcChannelBuffer,
3770     PRPC_MESSAGE pRpcMessage,
3771     DWORD* pdwStubPhase);
3772 HRESULT CALLBACK IStream16_LockRegion_Proxy(
3773     IStream16* This,
3774     ULARGE_INTEGER libOffset,
3775     ULARGE_INTEGER cb,
3776     DWORD dwLockType);
3777 void __RPC_STUB IStream16_LockRegion_Stub(
3778     struct IRpcStubBuffer* This,
3779     struct IRpcChannelBuffer* pRpcChannelBuffer,
3780     PRPC_MESSAGE pRpcMessage,
3781     DWORD* pdwStubPhase);
3782 HRESULT CALLBACK IStream16_UnlockRegion_Proxy(
3783     IStream16* This,
3784     ULARGE_INTEGER libOffset,
3785     ULARGE_INTEGER cb,
3786     DWORD dwLockType);
3787 void __RPC_STUB IStream16_UnlockRegion_Stub(
3788     struct IRpcStubBuffer* This,
3789     struct IRpcChannelBuffer* pRpcChannelBuffer,
3790     PRPC_MESSAGE pRpcMessage,
3791     DWORD* pdwStubPhase);
3792 HRESULT CALLBACK IStream16_Stat_Proxy(
3793     IStream16* This,
3794     STATSTG* pstatstg,
3795     DWORD grfStatFlag);
3796 void __RPC_STUB IStream16_Stat_Stub(
3797     struct IRpcStubBuffer* This,
3798     struct IRpcChannelBuffer* pRpcChannelBuffer,
3799     PRPC_MESSAGE pRpcMessage,
3800     DWORD* pdwStubPhase);
3801 HRESULT CALLBACK IStream16_Clone_Proxy(
3802     IStream16* This,
3803     IStream16** ppstm);
3804 void __RPC_STUB IStream16_Clone_Stub(
3805     struct IRpcStubBuffer* This,
3806     struct IRpcChannelBuffer* pRpcChannelBuffer,
3807     PRPC_MESSAGE pRpcMessage,
3808     DWORD* pdwStubPhase);
3809
3810 #endif  /* __IStream16_INTERFACE_DEFINED__ */
3811
3812 #ifndef __IEnumSTATSTG_FWD_DEFINED__
3813 #define __IEnumSTATSTG_FWD_DEFINED__
3814 typedef struct IEnumSTATSTG IEnumSTATSTG;
3815 #endif
3816
3817 typedef IEnumSTATSTG *LPENUMSTATSTG;
3818
3819 /*****************************************************************************
3820  * IEnumSTATSTG interface
3821  */
3822 #ifndef __IEnumSTATSTG_INTERFACE_DEFINED__
3823 #define __IEnumSTATSTG_INTERFACE_DEFINED__
3824
3825 DEFINE_GUID(IID_IEnumSTATSTG, 0x0000000d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3826 #if defined(__cplusplus) && !defined(CINTERFACE)
3827 struct IEnumSTATSTG : public IUnknown
3828 {
3829     virtual HRESULT STDMETHODCALLTYPE Next(
3830         ULONG celt,
3831         STATSTG* rgelt,
3832         ULONG* pceltFetched) = 0;
3833
3834     virtual HRESULT STDMETHODCALLTYPE Skip(
3835         ULONG celt) = 0;
3836
3837     virtual HRESULT STDMETHODCALLTYPE Reset(
3838         ) = 0;
3839
3840     virtual HRESULT STDMETHODCALLTYPE Clone(
3841         IEnumSTATSTG** ppenum) = 0;
3842
3843 };
3844 #else
3845 typedef struct IEnumSTATSTGVtbl IEnumSTATSTGVtbl;
3846 struct IEnumSTATSTG {
3847     const IEnumSTATSTGVtbl* lpVtbl;
3848 };
3849 struct IEnumSTATSTGVtbl {
3850     ICOM_MSVTABLE_COMPAT_FIELDS
3851
3852     /*** IUnknown methods ***/
3853     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3854         IEnumSTATSTG* This,
3855         REFIID riid,
3856         void** ppvObject);
3857
3858     ULONG (STDMETHODCALLTYPE *AddRef)(
3859         IEnumSTATSTG* This);
3860
3861     ULONG (STDMETHODCALLTYPE *Release)(
3862         IEnumSTATSTG* This);
3863
3864     /*** IEnumSTATSTG methods ***/
3865     HRESULT (STDMETHODCALLTYPE *Next)(
3866         IEnumSTATSTG* This,
3867         ULONG celt,
3868         STATSTG* rgelt,
3869         ULONG* pceltFetched);
3870
3871     HRESULT (STDMETHODCALLTYPE *Skip)(
3872         IEnumSTATSTG* This,
3873         ULONG celt);
3874
3875     HRESULT (STDMETHODCALLTYPE *Reset)(
3876         IEnumSTATSTG* This);
3877
3878     HRESULT (STDMETHODCALLTYPE *Clone)(
3879         IEnumSTATSTG* This,
3880         IEnumSTATSTG** ppenum);
3881
3882 };
3883
3884 /*** IUnknown methods ***/
3885 #define IEnumSTATSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3886 #define IEnumSTATSTG_AddRef(p) (p)->lpVtbl->AddRef(p)
3887 #define IEnumSTATSTG_Release(p) (p)->lpVtbl->Release(p)
3888 /*** IEnumSTATSTG methods ***/
3889 #define IEnumSTATSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
3890 #define IEnumSTATSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a)
3891 #define IEnumSTATSTG_Reset(p) (p)->lpVtbl->Reset(p)
3892 #define IEnumSTATSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a)
3893
3894 #endif
3895
3896 #define IEnumSTATSTG_METHODS \
3897     ICOM_MSVTABLE_COMPAT_FIELDS \
3898     /*** IUnknown methods ***/ \
3899     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3900     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3901     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3902     /*** IEnumSTATSTG methods ***/ \
3903     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATSTG* rgelt, ULONG* pceltFetched) PURE; \
3904     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
3905     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
3906     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATSTG** ppenum) PURE;
3907
3908 HRESULT CALLBACK IEnumSTATSTG_RemoteNext_Proxy(
3909     IEnumSTATSTG* This,
3910     ULONG celt,
3911     STATSTG* rgelt,
3912     ULONG* pceltFetched);
3913 void __RPC_STUB IEnumSTATSTG_RemoteNext_Stub(
3914     struct IRpcStubBuffer* This,
3915     struct IRpcChannelBuffer* pRpcChannelBuffer,
3916     PRPC_MESSAGE pRpcMessage,
3917     DWORD* pdwStubPhase);
3918 HRESULT CALLBACK IEnumSTATSTG_Next_Proxy(
3919     IEnumSTATSTG* This,
3920     ULONG celt,
3921     STATSTG* rgelt,
3922     ULONG* pceltFetched);
3923 HRESULT __RPC_STUB IEnumSTATSTG_Next_Stub(
3924     IEnumSTATSTG* This,
3925     ULONG celt,
3926     STATSTG* rgelt,
3927     ULONG* pceltFetched);
3928 HRESULT CALLBACK IEnumSTATSTG_Skip_Proxy(
3929     IEnumSTATSTG* This,
3930     ULONG celt);
3931 void __RPC_STUB IEnumSTATSTG_Skip_Stub(
3932     struct IRpcStubBuffer* This,
3933     struct IRpcChannelBuffer* pRpcChannelBuffer,
3934     PRPC_MESSAGE pRpcMessage,
3935     DWORD* pdwStubPhase);
3936 HRESULT CALLBACK IEnumSTATSTG_Reset_Proxy(
3937     IEnumSTATSTG* This);
3938 void __RPC_STUB IEnumSTATSTG_Reset_Stub(
3939     struct IRpcStubBuffer* This,
3940     struct IRpcChannelBuffer* pRpcChannelBuffer,
3941     PRPC_MESSAGE pRpcMessage,
3942     DWORD* pdwStubPhase);
3943 HRESULT CALLBACK IEnumSTATSTG_Clone_Proxy(
3944     IEnumSTATSTG* This,
3945     IEnumSTATSTG** ppenum);
3946 void __RPC_STUB IEnumSTATSTG_Clone_Stub(
3947     struct IRpcStubBuffer* This,
3948     struct IRpcChannelBuffer* pRpcChannelBuffer,
3949     PRPC_MESSAGE pRpcMessage,
3950     DWORD* pdwStubPhase);
3951
3952 #endif  /* __IEnumSTATSTG_INTERFACE_DEFINED__ */
3953
3954 #ifndef __IStorage_FWD_DEFINED__
3955 #define __IStorage_FWD_DEFINED__
3956 typedef struct IStorage IStorage;
3957 #endif
3958
3959 typedef IStorage *LPSTORAGE;
3960
3961 typedef struct tagRemSNB {
3962     unsigned long ulCntStr;
3963     unsigned long ulCntChar;
3964     OLECHAR rgString[1];
3965 } RemSNB;
3966
3967 typedef RemSNB *wireSNB;
3968
3969 typedef OLECHAR **SNB;
3970 unsigned long   __RPC_USER SNB_UserSize     (unsigned long *, unsigned long,   SNB *);
3971 unsigned char * __RPC_USER SNB_UserMarshal  (unsigned long *, unsigned char *, SNB *);
3972 unsigned char * __RPC_USER SNB_UserUnmarshal(unsigned long *, unsigned char *, SNB *);
3973 void            __RPC_USER SNB_UserFree     (unsigned long *, SNB *);
3974
3975 /*****************************************************************************
3976  * IStorage interface
3977  */
3978 #ifndef __IStorage_INTERFACE_DEFINED__
3979 #define __IStorage_INTERFACE_DEFINED__
3980
3981 DEFINE_GUID(IID_IStorage, 0x0000000b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3982 #if defined(__cplusplus) && !defined(CINTERFACE)
3983 struct IStorage : public IUnknown
3984 {
3985     virtual HRESULT STDMETHODCALLTYPE CreateStream(
3986         LPCOLESTR pwcsName,
3987         DWORD grfMode,
3988         DWORD reserved1,
3989         DWORD reserved2,
3990         IStream** ppstm) = 0;
3991
3992     virtual HRESULT STDMETHODCALLTYPE OpenStream(
3993         LPCOLESTR pwcsName,
3994         void* reserved1,
3995         DWORD grfMode,
3996         DWORD reserved2,
3997         IStream** ppstm) = 0;
3998
3999     virtual HRESULT STDMETHODCALLTYPE CreateStorage(
4000         LPCOLESTR pwcsName,
4001         DWORD grfMode,
4002         DWORD dwStgFmt,
4003         DWORD reserved2,
4004         IStorage** ppstg) = 0;
4005
4006     virtual HRESULT STDMETHODCALLTYPE OpenStorage(
4007         LPCOLESTR pwcsName,
4008         IStorage* pstgPriority,
4009         DWORD grfMode,
4010         SNB snbExclude,
4011         DWORD reserved,
4012         IStorage** ppstg) = 0;
4013
4014     virtual HRESULT STDMETHODCALLTYPE CopyTo(
4015         DWORD ciidExclude,
4016         const IID* rgiidExclude,
4017         SNB snbExclude,
4018         IStorage* pstgDest) = 0;
4019
4020     virtual HRESULT STDMETHODCALLTYPE MoveElementTo(
4021         LPCOLESTR pwcsName,
4022         IStorage* pstgDest,
4023         LPCOLESTR pwcsNewName,
4024         DWORD grfFlags) = 0;
4025
4026     virtual HRESULT STDMETHODCALLTYPE Commit(
4027         DWORD grfCommitFlags) = 0;
4028
4029     virtual HRESULT STDMETHODCALLTYPE Revert(
4030         ) = 0;
4031
4032     virtual HRESULT STDMETHODCALLTYPE EnumElements(
4033         DWORD reserved1,
4034         void* reserved2,
4035         DWORD reserved3,
4036         IEnumSTATSTG** ppenum) = 0;
4037
4038     virtual HRESULT STDMETHODCALLTYPE DestroyElement(
4039         LPCOLESTR pwcsName) = 0;
4040
4041     virtual HRESULT STDMETHODCALLTYPE RenameElement(
4042         LPCOLESTR pwcsOldName,
4043         LPCOLESTR pwcsNewName) = 0;
4044
4045     virtual HRESULT STDMETHODCALLTYPE SetElementTimes(
4046         LPCOLESTR pwcsName,
4047         const FILETIME* pctime,
4048         const FILETIME* patime,
4049         const FILETIME* pmtime) = 0;
4050
4051     virtual HRESULT STDMETHODCALLTYPE SetClass(
4052         REFCLSID clsid) = 0;
4053
4054     virtual HRESULT STDMETHODCALLTYPE SetStateBits(
4055         DWORD grfStateBits,
4056         DWORD grfMask) = 0;
4057
4058     virtual HRESULT STDMETHODCALLTYPE Stat(
4059         STATSTG* pstatstg,
4060         DWORD grfStatFlag) = 0;
4061
4062 };
4063 #else
4064 typedef struct IStorageVtbl IStorageVtbl;
4065 struct IStorage {
4066     const IStorageVtbl* lpVtbl;
4067 };
4068 struct IStorageVtbl {
4069     ICOM_MSVTABLE_COMPAT_FIELDS
4070
4071     /*** IUnknown methods ***/
4072     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4073         IStorage* This,
4074         REFIID riid,
4075         void** ppvObject);
4076
4077     ULONG (STDMETHODCALLTYPE *AddRef)(
4078         IStorage* This);
4079
4080     ULONG (STDMETHODCALLTYPE *Release)(
4081         IStorage* This);
4082
4083     /*** IStorage methods ***/
4084     HRESULT (STDMETHODCALLTYPE *CreateStream)(
4085         IStorage* This,
4086         LPCOLESTR pwcsName,
4087         DWORD grfMode,
4088         DWORD reserved1,
4089         DWORD reserved2,
4090         IStream** ppstm);
4091
4092     HRESULT (STDMETHODCALLTYPE *OpenStream)(
4093         IStorage* This,
4094         LPCOLESTR pwcsName,
4095         void* reserved1,
4096         DWORD grfMode,
4097         DWORD reserved2,
4098         IStream** ppstm);
4099
4100     HRESULT (STDMETHODCALLTYPE *CreateStorage)(
4101         IStorage* This,
4102         LPCOLESTR pwcsName,
4103         DWORD grfMode,
4104         DWORD dwStgFmt,
4105         DWORD reserved2,
4106         IStorage** ppstg);
4107
4108     HRESULT (STDMETHODCALLTYPE *OpenStorage)(
4109         IStorage* This,
4110         LPCOLESTR pwcsName,
4111         IStorage* pstgPriority,
4112         DWORD grfMode,
4113         SNB snbExclude,
4114         DWORD reserved,
4115         IStorage** ppstg);
4116
4117     HRESULT (STDMETHODCALLTYPE *CopyTo)(
4118         IStorage* This,
4119         DWORD ciidExclude,
4120         const IID* rgiidExclude,
4121         SNB snbExclude,
4122         IStorage* pstgDest);
4123
4124     HRESULT (STDMETHODCALLTYPE *MoveElementTo)(
4125         IStorage* This,
4126         LPCOLESTR pwcsName,
4127         IStorage* pstgDest,
4128         LPCOLESTR pwcsNewName,
4129         DWORD grfFlags);
4130
4131     HRESULT (STDMETHODCALLTYPE *Commit)(
4132         IStorage* This,
4133         DWORD grfCommitFlags);
4134
4135     HRESULT (STDMETHODCALLTYPE *Revert)(
4136         IStorage* This);
4137
4138     HRESULT (STDMETHODCALLTYPE *EnumElements)(
4139         IStorage* This,
4140         DWORD reserved1,
4141         void* reserved2,
4142         DWORD reserved3,
4143         IEnumSTATSTG** ppenum);
4144
4145     HRESULT (STDMETHODCALLTYPE *DestroyElement)(
4146         IStorage* This,
4147         LPCOLESTR pwcsName);
4148
4149     HRESULT (STDMETHODCALLTYPE *RenameElement)(
4150         IStorage* This,
4151         LPCOLESTR pwcsOldName,
4152         LPCOLESTR pwcsNewName);
4153
4154     HRESULT (STDMETHODCALLTYPE *SetElementTimes)(
4155         IStorage* This,
4156         LPCOLESTR pwcsName,
4157         const FILETIME* pctime,
4158         const FILETIME* patime,
4159         const FILETIME* pmtime);
4160
4161     HRESULT (STDMETHODCALLTYPE *SetClass)(
4162         IStorage* This,
4163         REFCLSID clsid);
4164
4165     HRESULT (STDMETHODCALLTYPE *SetStateBits)(
4166         IStorage* This,
4167         DWORD grfStateBits,
4168         DWORD grfMask);
4169
4170     HRESULT (STDMETHODCALLTYPE *Stat)(
4171         IStorage* This,
4172         STATSTG* pstatstg,
4173         DWORD grfStatFlag);
4174
4175 };
4176
4177 /*** IUnknown methods ***/
4178 #define IStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4179 #define IStorage_AddRef(p) (p)->lpVtbl->AddRef(p)
4180 #define IStorage_Release(p) (p)->lpVtbl->Release(p)
4181 /*** IStorage methods ***/
4182 #define IStorage_CreateStream(p,a,b,c,d,e) (p)->lpVtbl->CreateStream(p,a,b,c,d,e)
4183 #define IStorage_OpenStream(p,a,b,c,d,e) (p)->lpVtbl->OpenStream(p,a,b,c,d,e)
4184 #define IStorage_CreateStorage(p,a,b,c,d,e) (p)->lpVtbl->CreateStorage(p,a,b,c,d,e)
4185 #define IStorage_OpenStorage(p,a,b,c,d,e,f) (p)->lpVtbl->OpenStorage(p,a,b,c,d,e,f)
4186 #define IStorage_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d)
4187 #define IStorage_MoveElementTo(p,a,b,c,d) (p)->lpVtbl->MoveElementTo(p,a,b,c,d)
4188 #define IStorage_Commit(p,a) (p)->lpVtbl->Commit(p,a)
4189 #define IStorage_Revert(p) (p)->lpVtbl->Revert(p)
4190 #define IStorage_EnumElements(p,a,b,c,d) (p)->lpVtbl->EnumElements(p,a,b,c,d)
4191 #define IStorage_DestroyElement(p,a) (p)->lpVtbl->DestroyElement(p,a)
4192 #define IStorage_RenameElement(p,a,b) (p)->lpVtbl->RenameElement(p,a,b)
4193 #define IStorage_SetElementTimes(p,a,b,c,d) (p)->lpVtbl->SetElementTimes(p,a,b,c,d)
4194 #define IStorage_SetClass(p,a) (p)->lpVtbl->SetClass(p,a)
4195 #define IStorage_SetStateBits(p,a,b) (p)->lpVtbl->SetStateBits(p,a,b)
4196 #define IStorage_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b)
4197
4198 #endif
4199
4200 #define IStorage_METHODS \
4201     ICOM_MSVTABLE_COMPAT_FIELDS \
4202     /*** IUnknown methods ***/ \
4203     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4204     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4205     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4206     /*** IStorage methods ***/ \
4207     STDMETHOD_(HRESULT,CreateStream)(THIS_ LPCOLESTR pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream** ppstm) PURE; \
4208     STDMETHOD_(HRESULT,OpenStream)(THIS_ LPCOLESTR pwcsName, void* reserved1, DWORD grfMode, DWORD reserved2, IStream** ppstm) PURE; \
4209     STDMETHOD_(HRESULT,CreateStorage)(THIS_ LPCOLESTR pwcsName, DWORD grfMode, DWORD dwStgFmt, DWORD reserved2, IStorage** ppstg) PURE; \
4210     STDMETHOD_(HRESULT,OpenStorage)(THIS_ LPCOLESTR pwcsName, IStorage* pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage** ppstg) PURE; \
4211     STDMETHOD_(HRESULT,CopyTo)(THIS_ DWORD ciidExclude, const IID* rgiidExclude, SNB snbExclude, IStorage* pstgDest) PURE; \
4212     STDMETHOD_(HRESULT,MoveElementTo)(THIS_ LPCOLESTR pwcsName, IStorage* pstgDest, LPCOLESTR pwcsNewName, DWORD grfFlags) PURE; \
4213     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \
4214     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \
4215     STDMETHOD_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE; \
4216     STDMETHOD_(HRESULT,DestroyElement)(THIS_ LPCOLESTR pwcsName) PURE; \
4217     STDMETHOD_(HRESULT,RenameElement)(THIS_ LPCOLESTR pwcsOldName, LPCOLESTR pwcsNewName) PURE; \
4218     STDMETHOD_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \
4219     STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \
4220     STDMETHOD_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE; \
4221     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
4222
4223 HRESULT CALLBACK IStorage_CreateStream_Proxy(
4224     IStorage* This,
4225     LPCOLESTR pwcsName,
4226     DWORD grfMode,
4227     DWORD reserved1,
4228     DWORD reserved2,
4229     IStream** ppstm);
4230 void __RPC_STUB IStorage_CreateStream_Stub(
4231     struct IRpcStubBuffer* This,
4232     struct IRpcChannelBuffer* pRpcChannelBuffer,
4233     PRPC_MESSAGE pRpcMessage,
4234     DWORD* pdwStubPhase);
4235 HRESULT CALLBACK IStorage_RemoteOpenStream_Proxy(
4236     IStorage* This,
4237     LPCOLESTR pwcsName,
4238     unsigned long cbReserved1,
4239     byte* reserved1,
4240     DWORD grfMode,
4241     DWORD reserved2,
4242     IStream** ppstm);
4243 void __RPC_STUB IStorage_RemoteOpenStream_Stub(
4244     struct IRpcStubBuffer* This,
4245     struct IRpcChannelBuffer* pRpcChannelBuffer,
4246     PRPC_MESSAGE pRpcMessage,
4247     DWORD* pdwStubPhase);
4248 HRESULT CALLBACK IStorage_OpenStream_Proxy(
4249     IStorage* This,
4250     LPCOLESTR pwcsName,
4251     void* reserved1,
4252     DWORD grfMode,
4253     DWORD reserved2,
4254     IStream** ppstm);
4255 HRESULT __RPC_STUB IStorage_OpenStream_Stub(
4256     IStorage* This,
4257     LPCOLESTR pwcsName,
4258     unsigned long cbReserved1,
4259     byte* reserved1,
4260     DWORD grfMode,
4261     DWORD reserved2,
4262     IStream** ppstm);
4263 HRESULT CALLBACK IStorage_CreateStorage_Proxy(
4264     IStorage* This,
4265     LPCOLESTR pwcsName,
4266     DWORD grfMode,
4267     DWORD dwStgFmt,
4268     DWORD reserved2,
4269     IStorage** ppstg);
4270 void __RPC_STUB IStorage_CreateStorage_Stub(
4271     struct IRpcStubBuffer* This,
4272     struct IRpcChannelBuffer* pRpcChannelBuffer,
4273     PRPC_MESSAGE pRpcMessage,
4274     DWORD* pdwStubPhase);
4275 HRESULT CALLBACK IStorage_OpenStorage_Proxy(
4276     IStorage* This,
4277     LPCOLESTR pwcsName,
4278     IStorage* pstgPriority,
4279     DWORD grfMode,
4280     SNB snbExclude,
4281     DWORD reserved,
4282     IStorage** ppstg);
4283 void __RPC_STUB IStorage_OpenStorage_Stub(
4284     struct IRpcStubBuffer* This,
4285     struct IRpcChannelBuffer* pRpcChannelBuffer,
4286     PRPC_MESSAGE pRpcMessage,
4287     DWORD* pdwStubPhase);
4288 HRESULT CALLBACK IStorage_CopyTo_Proxy(
4289     IStorage* This,
4290     DWORD ciidExclude,
4291     const IID* rgiidExclude,
4292     SNB snbExclude,
4293     IStorage* pstgDest);
4294 void __RPC_STUB IStorage_CopyTo_Stub(
4295     struct IRpcStubBuffer* This,
4296     struct IRpcChannelBuffer* pRpcChannelBuffer,
4297     PRPC_MESSAGE pRpcMessage,
4298     DWORD* pdwStubPhase);
4299 HRESULT CALLBACK IStorage_MoveElementTo_Proxy(
4300     IStorage* This,
4301     LPCOLESTR pwcsName,
4302     IStorage* pstgDest,
4303     LPCOLESTR pwcsNewName,
4304     DWORD grfFlags);
4305 void __RPC_STUB IStorage_MoveElementTo_Stub(
4306     struct IRpcStubBuffer* This,
4307     struct IRpcChannelBuffer* pRpcChannelBuffer,
4308     PRPC_MESSAGE pRpcMessage,
4309     DWORD* pdwStubPhase);
4310 HRESULT CALLBACK IStorage_Commit_Proxy(
4311     IStorage* This,
4312     DWORD grfCommitFlags);
4313 void __RPC_STUB IStorage_Commit_Stub(
4314     struct IRpcStubBuffer* This,
4315     struct IRpcChannelBuffer* pRpcChannelBuffer,
4316     PRPC_MESSAGE pRpcMessage,
4317     DWORD* pdwStubPhase);
4318 HRESULT CALLBACK IStorage_Revert_Proxy(
4319     IStorage* This);
4320 void __RPC_STUB IStorage_Revert_Stub(
4321     struct IRpcStubBuffer* This,
4322     struct IRpcChannelBuffer* pRpcChannelBuffer,
4323     PRPC_MESSAGE pRpcMessage,
4324     DWORD* pdwStubPhase);
4325 HRESULT CALLBACK IStorage_RemoteEnumElements_Proxy(
4326     IStorage* This,
4327     DWORD reserved1,
4328     unsigned long cbReserved2,
4329     byte* reserved2,
4330     DWORD reserved3,
4331     IEnumSTATSTG** ppenum);
4332 void __RPC_STUB IStorage_RemoteEnumElements_Stub(
4333     struct IRpcStubBuffer* This,
4334     struct IRpcChannelBuffer* pRpcChannelBuffer,
4335     PRPC_MESSAGE pRpcMessage,
4336     DWORD* pdwStubPhase);
4337 HRESULT CALLBACK IStorage_EnumElements_Proxy(
4338     IStorage* This,
4339     DWORD reserved1,
4340     void* reserved2,
4341     DWORD reserved3,
4342     IEnumSTATSTG** ppenum);
4343 HRESULT __RPC_STUB IStorage_EnumElements_Stub(
4344     IStorage* This,
4345     DWORD reserved1,
4346     unsigned long cbReserved2,
4347     byte* reserved2,
4348     DWORD reserved3,
4349     IEnumSTATSTG** ppenum);
4350 HRESULT CALLBACK IStorage_DestroyElement_Proxy(
4351     IStorage* This,
4352     LPCOLESTR pwcsName);
4353 void __RPC_STUB IStorage_DestroyElement_Stub(
4354     struct IRpcStubBuffer* This,
4355     struct IRpcChannelBuffer* pRpcChannelBuffer,
4356     PRPC_MESSAGE pRpcMessage,
4357     DWORD* pdwStubPhase);
4358 HRESULT CALLBACK IStorage_RenameElement_Proxy(
4359     IStorage* This,
4360     LPCOLESTR pwcsOldName,
4361     LPCOLESTR pwcsNewName);
4362 void __RPC_STUB IStorage_RenameElement_Stub(
4363     struct IRpcStubBuffer* This,
4364     struct IRpcChannelBuffer* pRpcChannelBuffer,
4365     PRPC_MESSAGE pRpcMessage,
4366     DWORD* pdwStubPhase);
4367 HRESULT CALLBACK IStorage_SetElementTimes_Proxy(
4368     IStorage* This,
4369     LPCOLESTR pwcsName,
4370     const FILETIME* pctime,
4371     const FILETIME* patime,
4372     const FILETIME* pmtime);
4373 void __RPC_STUB IStorage_SetElementTimes_Stub(
4374     struct IRpcStubBuffer* This,
4375     struct IRpcChannelBuffer* pRpcChannelBuffer,
4376     PRPC_MESSAGE pRpcMessage,
4377     DWORD* pdwStubPhase);
4378 HRESULT CALLBACK IStorage_SetClass_Proxy(
4379     IStorage* This,
4380     REFCLSID clsid);
4381 void __RPC_STUB IStorage_SetClass_Stub(
4382     struct IRpcStubBuffer* This,
4383     struct IRpcChannelBuffer* pRpcChannelBuffer,
4384     PRPC_MESSAGE pRpcMessage,
4385     DWORD* pdwStubPhase);
4386 HRESULT CALLBACK IStorage_SetStateBits_Proxy(
4387     IStorage* This,
4388     DWORD grfStateBits,
4389     DWORD grfMask);
4390 void __RPC_STUB IStorage_SetStateBits_Stub(
4391     struct IRpcStubBuffer* This,
4392     struct IRpcChannelBuffer* pRpcChannelBuffer,
4393     PRPC_MESSAGE pRpcMessage,
4394     DWORD* pdwStubPhase);
4395 HRESULT CALLBACK IStorage_Stat_Proxy(
4396     IStorage* This,
4397     STATSTG* pstatstg,
4398     DWORD grfStatFlag);
4399 void __RPC_STUB IStorage_Stat_Stub(
4400     struct IRpcStubBuffer* This,
4401     struct IRpcChannelBuffer* pRpcChannelBuffer,
4402     PRPC_MESSAGE pRpcMessage,
4403     DWORD* pdwStubPhase);
4404
4405 #endif  /* __IStorage_INTERFACE_DEFINED__ */
4406
4407 #ifndef __IStorage16_FWD_DEFINED__
4408 #define __IStorage16_FWD_DEFINED__
4409 typedef struct IStorage16 IStorage16;
4410 #endif
4411
4412 typedef IStorage16 *LPSTORAGE16;
4413
4414 typedef struct tagRemSNB16 {
4415     unsigned long ulCntStr;
4416     unsigned long ulCntChar;
4417     OLECHAR16 rgString[1];
4418 } RemSNB16;
4419
4420 typedef RemSNB16 *wireSNB16;
4421
4422 typedef OLECHAR16 **SNB16;
4423 unsigned long   __RPC_USER SNB16_UserSize     (unsigned long *, unsigned long,   SNB16 *);
4424 unsigned char * __RPC_USER SNB16_UserMarshal  (unsigned long *, unsigned char *, SNB16 *);
4425 unsigned char * __RPC_USER SNB16_UserUnmarshal(unsigned long *, unsigned char *, SNB16 *);
4426 void            __RPC_USER SNB16_UserFree     (unsigned long *, SNB16 *);
4427
4428 /*****************************************************************************
4429  * IStorage16 interface
4430  */
4431 #ifndef __IStorage16_INTERFACE_DEFINED__
4432 #define __IStorage16_INTERFACE_DEFINED__
4433
4434 #if defined(__cplusplus) && !defined(CINTERFACE)
4435 struct IStorage16 : public IUnknown
4436 {
4437     virtual HRESULT STDMETHODCALLTYPE CreateStream(
4438         LPCOLESTR16 pwcsName,
4439         DWORD grfMode,
4440         DWORD reserved1,
4441         DWORD reserved2,
4442         IStream16** ppstm) = 0;
4443
4444     virtual HRESULT STDMETHODCALLTYPE OpenStream(
4445         LPCOLESTR16 pwcsName,
4446         void* reserved1,
4447         DWORD grfMode,
4448         DWORD reserved2,
4449         IStream16** ppstm) = 0;
4450
4451     virtual HRESULT STDMETHODCALLTYPE CreateStorage(
4452         LPCOLESTR16 pwcsName,
4453         DWORD grfMode,
4454         DWORD dwStgFmt,
4455         DWORD reserved2,
4456         IStorage16** ppstg) = 0;
4457
4458     virtual HRESULT STDMETHODCALLTYPE OpenStorage(
4459         LPCOLESTR16 pwcsName,
4460         IStorage16* pstgPriority,
4461         DWORD grfMode,
4462         SNB16 snbExclude,
4463         DWORD reserved,
4464         IStorage16** ppstg) = 0;
4465
4466     virtual HRESULT STDMETHODCALLTYPE CopyTo(
4467         DWORD ciidExclude,
4468         const IID* rgiidExclude,
4469         SNB16 snbExclude,
4470         IStorage16* pstgDest) = 0;
4471
4472     virtual HRESULT STDMETHODCALLTYPE MoveElementTo(
4473         LPCOLESTR16 pwcsName,
4474         IStorage16* pstgDest,
4475         LPCOLESTR16 pwcsNewName,
4476         DWORD grfFlags) = 0;
4477
4478     virtual HRESULT STDMETHODCALLTYPE Commit(
4479         DWORD grfCommitFlags) = 0;
4480
4481     virtual HRESULT STDMETHODCALLTYPE Revert(
4482         ) = 0;
4483
4484     virtual HRESULT STDMETHODCALLTYPE EnumElements(
4485         DWORD reserved1,
4486         void* reserved2,
4487         DWORD reserved3,
4488         IEnumSTATSTG** ppenum) = 0;
4489
4490     virtual HRESULT STDMETHODCALLTYPE DestroyElement(
4491         LPCOLESTR16 pwcsName) = 0;
4492
4493     virtual HRESULT STDMETHODCALLTYPE RenameElement(
4494         LPCOLESTR16 pwcsOldName,
4495         LPCOLESTR16 pwcsNewName) = 0;
4496
4497     virtual HRESULT STDMETHODCALLTYPE SetElementTimes(
4498         LPCOLESTR16 pwcsName,
4499         const FILETIME* pctime,
4500         const FILETIME* patime,
4501         const FILETIME* pmtime) = 0;
4502
4503     virtual HRESULT STDMETHODCALLTYPE SetClass(
4504         REFCLSID clsid) = 0;
4505
4506     virtual HRESULT STDMETHODCALLTYPE SetStateBits(
4507         DWORD grfStateBits,
4508         DWORD grfMask) = 0;
4509
4510     virtual HRESULT STDMETHODCALLTYPE Stat(
4511         STATSTG* pstatstg,
4512         DWORD grfStatFlag) = 0;
4513
4514 };
4515 #else
4516 typedef struct IStorage16Vtbl IStorage16Vtbl;
4517 struct IStorage16 {
4518     const IStorage16Vtbl* lpVtbl;
4519 };
4520 struct IStorage16Vtbl {
4521     ICOM_MSVTABLE_COMPAT_FIELDS
4522
4523     /*** IUnknown methods ***/
4524     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4525         IStorage16* This,
4526         REFIID riid,
4527         void** ppvObject);
4528
4529     ULONG (STDMETHODCALLTYPE *AddRef)(
4530         IStorage16* This);
4531
4532     ULONG (STDMETHODCALLTYPE *Release)(
4533         IStorage16* This);
4534
4535     /*** IStorage16 methods ***/
4536     HRESULT (STDMETHODCALLTYPE *CreateStream)(
4537         IStorage16* This,
4538         LPCOLESTR16 pwcsName,
4539         DWORD grfMode,
4540         DWORD reserved1,
4541         DWORD reserved2,
4542         IStream16** ppstm);
4543
4544     HRESULT (STDMETHODCALLTYPE *OpenStream)(
4545         IStorage16* This,
4546         LPCOLESTR16 pwcsName,
4547         void* reserved1,
4548         DWORD grfMode,
4549         DWORD reserved2,
4550         IStream16** ppstm);
4551
4552     HRESULT (STDMETHODCALLTYPE *CreateStorage)(
4553         IStorage16* This,
4554         LPCOLESTR16 pwcsName,
4555         DWORD grfMode,
4556         DWORD dwStgFmt,
4557         DWORD reserved2,
4558         IStorage16** ppstg);
4559
4560     HRESULT (STDMETHODCALLTYPE *OpenStorage)(
4561         IStorage16* This,
4562         LPCOLESTR16 pwcsName,
4563         IStorage16* pstgPriority,
4564         DWORD grfMode,
4565         SNB16 snbExclude,
4566         DWORD reserved,
4567         IStorage16** ppstg);
4568
4569     HRESULT (STDMETHODCALLTYPE *CopyTo)(
4570         IStorage16* This,
4571         DWORD ciidExclude,
4572         const IID* rgiidExclude,
4573         SNB16 snbExclude,
4574         IStorage16* pstgDest);
4575
4576     HRESULT (STDMETHODCALLTYPE *MoveElementTo)(
4577         IStorage16* This,
4578         LPCOLESTR16 pwcsName,
4579         IStorage16* pstgDest,
4580         LPCOLESTR16 pwcsNewName,
4581         DWORD grfFlags);
4582
4583     HRESULT (STDMETHODCALLTYPE *Commit)(
4584         IStorage16* This,
4585         DWORD grfCommitFlags);
4586
4587     HRESULT (STDMETHODCALLTYPE *Revert)(
4588         IStorage16* This);
4589
4590     HRESULT (STDMETHODCALLTYPE *EnumElements)(
4591         IStorage16* This,
4592         DWORD reserved1,
4593         void* reserved2,
4594         DWORD reserved3,
4595         IEnumSTATSTG** ppenum);
4596
4597     HRESULT (STDMETHODCALLTYPE *DestroyElement)(
4598         IStorage16* This,
4599         LPCOLESTR16 pwcsName);
4600
4601     HRESULT (STDMETHODCALLTYPE *RenameElement)(
4602         IStorage16* This,
4603         LPCOLESTR16 pwcsOldName,
4604         LPCOLESTR16 pwcsNewName);
4605
4606     HRESULT (STDMETHODCALLTYPE *SetElementTimes)(
4607         IStorage16* This,
4608         LPCOLESTR16 pwcsName,
4609         const FILETIME* pctime,
4610         const FILETIME* patime,
4611         const FILETIME* pmtime);
4612
4613     HRESULT (STDMETHODCALLTYPE *SetClass)(
4614         IStorage16* This,
4615         REFCLSID clsid);
4616
4617     HRESULT (STDMETHODCALLTYPE *SetStateBits)(
4618         IStorage16* This,
4619         DWORD grfStateBits,
4620         DWORD grfMask);
4621
4622     HRESULT (STDMETHODCALLTYPE *Stat)(
4623         IStorage16* This,
4624         STATSTG* pstatstg,
4625         DWORD grfStatFlag);
4626
4627 };
4628
4629 /*** IUnknown methods ***/
4630 #define IStorage16_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4631 #define IStorage16_AddRef(p) (p)->lpVtbl->AddRef(p)
4632 #define IStorage16_Release(p) (p)->lpVtbl->Release(p)
4633 /*** IStorage16 methods ***/
4634 #define IStorage16_CreateStream(p,a,b,c,d,e) (p)->lpVtbl->CreateStream(p,a,b,c,d,e)
4635 #define IStorage16_OpenStream(p,a,b,c,d,e) (p)->lpVtbl->OpenStream(p,a,b,c,d,e)
4636 #define IStorage16_CreateStorage(p,a,b,c,d,e) (p)->lpVtbl->CreateStorage(p,a,b,c,d,e)
4637 #define IStorage16_OpenStorage(p,a,b,c,d,e,f) (p)->lpVtbl->OpenStorage(p,a,b,c,d,e,f)
4638 #define IStorage16_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d)
4639 #define IStorage16_MoveElementTo(p,a,b,c,d) (p)->lpVtbl->MoveElementTo(p,a,b,c,d)
4640 #define IStorage16_Commit(p,a) (p)->lpVtbl->Commit(p,a)
4641 #define IStorage16_Revert(p) (p)->lpVtbl->Revert(p)
4642 #define IStorage16_EnumElements(p,a,b,c,d) (p)->lpVtbl->EnumElements(p,a,b,c,d)
4643 #define IStorage16_DestroyElement(p,a) (p)->lpVtbl->DestroyElement(p,a)
4644 #define IStorage16_RenameElement(p,a,b) (p)->lpVtbl->RenameElement(p,a,b)
4645 #define IStorage16_SetElementTimes(p,a,b,c,d) (p)->lpVtbl->SetElementTimes(p,a,b,c,d)
4646 #define IStorage16_SetClass(p,a) (p)->lpVtbl->SetClass(p,a)
4647 #define IStorage16_SetStateBits(p,a,b) (p)->lpVtbl->SetStateBits(p,a,b)
4648 #define IStorage16_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b)
4649
4650 #endif
4651
4652 #define IStorage16_METHODS \
4653     ICOM_MSVTABLE_COMPAT_FIELDS \
4654     /*** IUnknown methods ***/ \
4655     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4656     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4657     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4658     /*** IStorage16 methods ***/ \
4659     STDMETHOD_(HRESULT,CreateStream)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream16** ppstm) PURE; \
4660     STDMETHOD_(HRESULT,OpenStream)(THIS_ LPCOLESTR16 pwcsName, void* reserved1, DWORD grfMode, DWORD reserved2, IStream16** ppstm) PURE; \
4661     STDMETHOD_(HRESULT,CreateStorage)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD dwStgFmt, DWORD reserved2, IStorage16** ppstg) PURE; \
4662     STDMETHOD_(HRESULT,OpenStorage)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgPriority, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16** ppstg) PURE; \
4663     STDMETHOD_(HRESULT,CopyTo)(THIS_ DWORD ciidExclude, const IID* rgiidExclude, SNB16 snbExclude, IStorage16* pstgDest) PURE; \
4664     STDMETHOD_(HRESULT,MoveElementTo)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgDest, LPCOLESTR16 pwcsNewName, DWORD grfFlags) PURE; \
4665     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \
4666     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \
4667     STDMETHOD_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE; \
4668     STDMETHOD_(HRESULT,DestroyElement)(THIS_ LPCOLESTR16 pwcsName) PURE; \
4669     STDMETHOD_(HRESULT,RenameElement)(THIS_ LPCOLESTR16 pwcsOldName, LPCOLESTR16 pwcsNewName) PURE; \
4670     STDMETHOD_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR16 pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \
4671     STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \
4672     STDMETHOD_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE; \
4673     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
4674
4675 HRESULT CALLBACK IStorage16_CreateStream_Proxy(
4676     IStorage16* This,
4677     LPCOLESTR16 pwcsName,
4678     DWORD grfMode,
4679     DWORD reserved1,
4680     DWORD reserved2,
4681     IStream16** ppstm);
4682 void __RPC_STUB IStorage16_CreateStream_Stub(
4683     struct IRpcStubBuffer* This,
4684     struct IRpcChannelBuffer* pRpcChannelBuffer,
4685     PRPC_MESSAGE pRpcMessage,
4686     DWORD* pdwStubPhase);
4687 HRESULT CALLBACK IStorage16_RemoteOpenStream_Proxy(
4688     IStorage16* This,
4689     LPCOLESTR16 pwcsName,
4690     unsigned long cbReserved1,
4691     byte* reserved1,
4692     DWORD grfMode,
4693     DWORD reserved2,
4694     IStream16** ppstm);
4695 void __RPC_STUB IStorage16_RemoteOpenStream_Stub(
4696     struct IRpcStubBuffer* This,
4697     struct IRpcChannelBuffer* pRpcChannelBuffer,
4698     PRPC_MESSAGE pRpcMessage,
4699     DWORD* pdwStubPhase);
4700 HRESULT CALLBACK IStorage16_OpenStream_Proxy(
4701     IStorage16* This,
4702     LPCOLESTR16 pwcsName,
4703     void* reserved1,
4704     DWORD grfMode,
4705     DWORD reserved2,
4706     IStream16** ppstm);
4707 HRESULT __RPC_STUB IStorage16_OpenStream_Stub(
4708     IStorage16* This,
4709     LPCOLESTR16 pwcsName,
4710     unsigned long cbReserved1,
4711     byte* reserved1,
4712     DWORD grfMode,
4713     DWORD reserved2,
4714     IStream16** ppstm);
4715 HRESULT CALLBACK IStorage16_CreateStorage_Proxy(
4716     IStorage16* This,
4717     LPCOLESTR16 pwcsName,
4718     DWORD grfMode,
4719     DWORD dwStgFmt,
4720     DWORD reserved2,
4721     IStorage16** ppstg);
4722 void __RPC_STUB IStorage16_CreateStorage_Stub(
4723     struct IRpcStubBuffer* This,
4724     struct IRpcChannelBuffer* pRpcChannelBuffer,
4725     PRPC_MESSAGE pRpcMessage,
4726     DWORD* pdwStubPhase);
4727 HRESULT CALLBACK IStorage16_OpenStorage_Proxy(
4728     IStorage16* This,
4729     LPCOLESTR16 pwcsName,
4730     IStorage16* pstgPriority,
4731     DWORD grfMode,
4732     SNB16 snbExclude,
4733     DWORD reserved,
4734     IStorage16** ppstg);
4735 void __RPC_STUB IStorage16_OpenStorage_Stub(
4736     struct IRpcStubBuffer* This,
4737     struct IRpcChannelBuffer* pRpcChannelBuffer,
4738     PRPC_MESSAGE pRpcMessage,
4739     DWORD* pdwStubPhase);
4740 HRESULT CALLBACK IStorage16_CopyTo_Proxy(
4741     IStorage16* This,
4742     DWORD ciidExclude,
4743     const IID* rgiidExclude,
4744     SNB16 snbExclude,
4745     IStorage16* pstgDest);
4746 void __RPC_STUB IStorage16_CopyTo_Stub(
4747     struct IRpcStubBuffer* This,
4748     struct IRpcChannelBuffer* pRpcChannelBuffer,
4749     PRPC_MESSAGE pRpcMessage,
4750     DWORD* pdwStubPhase);
4751 HRESULT CALLBACK IStorage16_MoveElementTo_Proxy(
4752     IStorage16* This,
4753     LPCOLESTR16 pwcsName,
4754     IStorage16* pstgDest,
4755     LPCOLESTR16 pwcsNewName,
4756     DWORD grfFlags);
4757 void __RPC_STUB IStorage16_MoveElementTo_Stub(
4758     struct IRpcStubBuffer* This,
4759     struct IRpcChannelBuffer* pRpcChannelBuffer,
4760     PRPC_MESSAGE pRpcMessage,
4761     DWORD* pdwStubPhase);
4762 HRESULT CALLBACK IStorage16_Commit_Proxy(
4763     IStorage16* This,
4764     DWORD grfCommitFlags);
4765 void __RPC_STUB IStorage16_Commit_Stub(
4766     struct IRpcStubBuffer* This,
4767     struct IRpcChannelBuffer* pRpcChannelBuffer,
4768     PRPC_MESSAGE pRpcMessage,
4769     DWORD* pdwStubPhase);
4770 HRESULT CALLBACK IStorage16_Revert_Proxy(
4771     IStorage16* This);
4772 void __RPC_STUB IStorage16_Revert_Stub(
4773     struct IRpcStubBuffer* This,
4774     struct IRpcChannelBuffer* pRpcChannelBuffer,
4775     PRPC_MESSAGE pRpcMessage,
4776     DWORD* pdwStubPhase);
4777 HRESULT CALLBACK IStorage16_RemoteEnumElements_Proxy(
4778     IStorage16* This,
4779     DWORD reserved1,
4780     unsigned long cbReserved2,
4781     byte* reserved2,
4782     DWORD reserved3,
4783     IEnumSTATSTG** ppenum);
4784 void __RPC_STUB IStorage16_RemoteEnumElements_Stub(
4785     struct IRpcStubBuffer* This,
4786     struct IRpcChannelBuffer* pRpcChannelBuffer,
4787     PRPC_MESSAGE pRpcMessage,
4788     DWORD* pdwStubPhase);
4789 HRESULT CALLBACK IStorage16_EnumElements_Proxy(
4790     IStorage16* This,
4791     DWORD reserved1,
4792     void* reserved2,
4793     DWORD reserved3,
4794     IEnumSTATSTG** ppenum);
4795 HRESULT __RPC_STUB IStorage16_EnumElements_Stub(
4796     IStorage16* This,
4797     DWORD reserved1,
4798     unsigned long cbReserved2,
4799     byte* reserved2,
4800     DWORD reserved3,
4801     IEnumSTATSTG** ppenum);
4802 HRESULT CALLBACK IStorage16_DestroyElement_Proxy(
4803     IStorage16* This,
4804     LPCOLESTR16 pwcsName);
4805 void __RPC_STUB IStorage16_DestroyElement_Stub(
4806     struct IRpcStubBuffer* This,
4807     struct IRpcChannelBuffer* pRpcChannelBuffer,
4808     PRPC_MESSAGE pRpcMessage,
4809     DWORD* pdwStubPhase);
4810 HRESULT CALLBACK IStorage16_RenameElement_Proxy(
4811     IStorage16* This,
4812     LPCOLESTR16 pwcsOldName,
4813     LPCOLESTR16 pwcsNewName);
4814 void __RPC_STUB IStorage16_RenameElement_Stub(
4815     struct IRpcStubBuffer* This,
4816     struct IRpcChannelBuffer* pRpcChannelBuffer,
4817     PRPC_MESSAGE pRpcMessage,
4818     DWORD* pdwStubPhase);
4819 HRESULT CALLBACK IStorage16_SetElementTimes_Proxy(
4820     IStorage16* This,
4821     LPCOLESTR16 pwcsName,
4822     const FILETIME* pctime,
4823     const FILETIME* patime,
4824     const FILETIME* pmtime);
4825 void __RPC_STUB IStorage16_SetElementTimes_Stub(
4826     struct IRpcStubBuffer* This,
4827     struct IRpcChannelBuffer* pRpcChannelBuffer,
4828     PRPC_MESSAGE pRpcMessage,
4829     DWORD* pdwStubPhase);
4830 HRESULT CALLBACK IStorage16_SetClass_Proxy(
4831     IStorage16* This,
4832     REFCLSID clsid);
4833 void __RPC_STUB IStorage16_SetClass_Stub(
4834     struct IRpcStubBuffer* This,
4835     struct IRpcChannelBuffer* pRpcChannelBuffer,
4836     PRPC_MESSAGE pRpcMessage,
4837     DWORD* pdwStubPhase);
4838 HRESULT CALLBACK IStorage16_SetStateBits_Proxy(
4839     IStorage16* This,
4840     DWORD grfStateBits,
4841     DWORD grfMask);
4842 void __RPC_STUB IStorage16_SetStateBits_Stub(
4843     struct IRpcStubBuffer* This,
4844     struct IRpcChannelBuffer* pRpcChannelBuffer,
4845     PRPC_MESSAGE pRpcMessage,
4846     DWORD* pdwStubPhase);
4847 HRESULT CALLBACK IStorage16_Stat_Proxy(
4848     IStorage16* This,
4849     STATSTG* pstatstg,
4850     DWORD grfStatFlag);
4851 void __RPC_STUB IStorage16_Stat_Stub(
4852     struct IRpcStubBuffer* This,
4853     struct IRpcChannelBuffer* pRpcChannelBuffer,
4854     PRPC_MESSAGE pRpcMessage,
4855     DWORD* pdwStubPhase);
4856
4857 #endif  /* __IStorage16_INTERFACE_DEFINED__ */
4858
4859 #ifndef __IPersistFile_FWD_DEFINED__
4860 #define __IPersistFile_FWD_DEFINED__
4861 typedef struct IPersistFile IPersistFile;
4862 #endif
4863
4864 typedef IPersistFile *LPPERSISTFILE;
4865
4866 /*****************************************************************************
4867  * IPersistFile interface
4868  */
4869 #ifndef __IPersistFile_INTERFACE_DEFINED__
4870 #define __IPersistFile_INTERFACE_DEFINED__
4871
4872 DEFINE_GUID(IID_IPersistFile, 0x0000010b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
4873 #if defined(__cplusplus) && !defined(CINTERFACE)
4874 struct IPersistFile : public IPersist
4875 {
4876     virtual HRESULT STDMETHODCALLTYPE IsDirty(
4877         ) = 0;
4878
4879     virtual HRESULT STDMETHODCALLTYPE Load(
4880         LPCOLESTR pszFileName,
4881         DWORD dwMode) = 0;
4882
4883     virtual HRESULT STDMETHODCALLTYPE Save(
4884         LPCOLESTR pszFileName,
4885         BOOL fRemember) = 0;
4886
4887     virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
4888         LPCOLESTR pszFileName) = 0;
4889
4890     virtual HRESULT STDMETHODCALLTYPE GetCurFile(
4891         LPOLESTR* ppszFileName) = 0;
4892
4893 };
4894 #else
4895 typedef struct IPersistFileVtbl IPersistFileVtbl;
4896 struct IPersistFile {
4897     const IPersistFileVtbl* lpVtbl;
4898 };
4899 struct IPersistFileVtbl {
4900     ICOM_MSVTABLE_COMPAT_FIELDS
4901
4902     /*** IUnknown methods ***/
4903     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4904         IPersistFile* This,
4905         REFIID riid,
4906         void** ppvObject);
4907
4908     ULONG (STDMETHODCALLTYPE *AddRef)(
4909         IPersistFile* This);
4910
4911     ULONG (STDMETHODCALLTYPE *Release)(
4912         IPersistFile* This);
4913
4914     /*** IPersist methods ***/
4915     HRESULT (STDMETHODCALLTYPE *GetClassID)(
4916         IPersistFile* This,
4917         CLSID* pClassID);
4918
4919     /*** IPersistFile methods ***/
4920     HRESULT (STDMETHODCALLTYPE *IsDirty)(
4921         IPersistFile* This);
4922
4923     HRESULT (STDMETHODCALLTYPE *Load)(
4924         IPersistFile* This,
4925         LPCOLESTR pszFileName,
4926         DWORD dwMode);
4927
4928     HRESULT (STDMETHODCALLTYPE *Save)(
4929         IPersistFile* This,
4930         LPCOLESTR pszFileName,
4931         BOOL fRemember);
4932
4933     HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
4934         IPersistFile* This,
4935         LPCOLESTR pszFileName);
4936
4937     HRESULT (STDMETHODCALLTYPE *GetCurFile)(
4938         IPersistFile* This,
4939         LPOLESTR* ppszFileName);
4940
4941 };
4942
4943 /*** IUnknown methods ***/
4944 #define IPersistFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4945 #define IPersistFile_AddRef(p) (p)->lpVtbl->AddRef(p)
4946 #define IPersistFile_Release(p) (p)->lpVtbl->Release(p)
4947 /*** IPersist methods ***/
4948 #define IPersistFile_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
4949 /*** IPersistFile methods ***/
4950 #define IPersistFile_IsDirty(p) (p)->lpVtbl->IsDirty(p)
4951 #define IPersistFile_Load(p,a,b) (p)->lpVtbl->Load(p,a,b)
4952 #define IPersistFile_Save(p,a,b) (p)->lpVtbl->Save(p,a,b)
4953 #define IPersistFile_SaveCompleted(p,a) (p)->lpVtbl->SaveCompleted(p,a)
4954 #define IPersistFile_GetCurFile(p,a) (p)->lpVtbl->GetCurFile(p,a)
4955
4956 #endif
4957
4958 #define IPersistFile_METHODS \
4959     ICOM_MSVTABLE_COMPAT_FIELDS \
4960     /*** IUnknown methods ***/ \
4961     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4962     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4963     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4964     /*** IPersist methods ***/ \
4965     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
4966     /*** IPersistFile methods ***/ \
4967     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \
4968     STDMETHOD_(HRESULT,Load)(THIS_ LPCOLESTR pszFileName, DWORD dwMode) PURE; \
4969     STDMETHOD_(HRESULT,Save)(THIS_ LPCOLESTR pszFileName, BOOL fRemember) PURE; \
4970     STDMETHOD_(HRESULT,SaveCompleted)(THIS_ LPCOLESTR pszFileName) PURE; \
4971     STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName) PURE;
4972
4973 HRESULT CALLBACK IPersistFile_IsDirty_Proxy(
4974     IPersistFile* This);
4975 void __RPC_STUB IPersistFile_IsDirty_Stub(
4976     struct IRpcStubBuffer* This,
4977     struct IRpcChannelBuffer* pRpcChannelBuffer,
4978     PRPC_MESSAGE pRpcMessage,
4979     DWORD* pdwStubPhase);
4980 HRESULT CALLBACK IPersistFile_Load_Proxy(
4981     IPersistFile* This,
4982     LPCOLESTR pszFileName,
4983     DWORD dwMode);
4984 void __RPC_STUB IPersistFile_Load_Stub(
4985     struct IRpcStubBuffer* This,
4986     struct IRpcChannelBuffer* pRpcChannelBuffer,
4987     PRPC_MESSAGE pRpcMessage,
4988     DWORD* pdwStubPhase);
4989 HRESULT CALLBACK IPersistFile_Save_Proxy(
4990     IPersistFile* This,
4991     LPCOLESTR pszFileName,
4992     BOOL fRemember);
4993 void __RPC_STUB IPersistFile_Save_Stub(
4994     struct IRpcStubBuffer* This,
4995     struct IRpcChannelBuffer* pRpcChannelBuffer,
4996     PRPC_MESSAGE pRpcMessage,
4997     DWORD* pdwStubPhase);
4998 HRESULT CALLBACK IPersistFile_SaveCompleted_Proxy(
4999     IPersistFile* This,
5000     LPCOLESTR pszFileName);
5001 void __RPC_STUB IPersistFile_SaveCompleted_Stub(
5002     struct IRpcStubBuffer* This,
5003     struct IRpcChannelBuffer* pRpcChannelBuffer,
5004     PRPC_MESSAGE pRpcMessage,
5005     DWORD* pdwStubPhase);
5006 HRESULT CALLBACK IPersistFile_GetCurFile_Proxy(
5007     IPersistFile* This,
5008     LPOLESTR* ppszFileName);
5009 void __RPC_STUB IPersistFile_GetCurFile_Stub(
5010     struct IRpcStubBuffer* This,
5011     struct IRpcChannelBuffer* pRpcChannelBuffer,
5012     PRPC_MESSAGE pRpcMessage,
5013     DWORD* pdwStubPhase);
5014
5015 #endif  /* __IPersistFile_INTERFACE_DEFINED__ */
5016
5017 #ifndef __IPersistStorage_FWD_DEFINED__
5018 #define __IPersistStorage_FWD_DEFINED__
5019 typedef struct IPersistStorage IPersistStorage;
5020 #endif
5021
5022 typedef IPersistStorage *LPPERSISTSTORAGE;
5023
5024 /*****************************************************************************
5025  * IPersistStorage interface
5026  */
5027 #ifndef __IPersistStorage_INTERFACE_DEFINED__
5028 #define __IPersistStorage_INTERFACE_DEFINED__
5029
5030 DEFINE_GUID(IID_IPersistStorage, 0x0000010a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
5031 #if defined(__cplusplus) && !defined(CINTERFACE)
5032 struct IPersistStorage : public IPersist
5033 {
5034     virtual HRESULT STDMETHODCALLTYPE IsDirty(
5035         ) = 0;
5036
5037     virtual HRESULT STDMETHODCALLTYPE InitNew(
5038         IStorage* pStg) = 0;
5039
5040     virtual HRESULT STDMETHODCALLTYPE Load(
5041         IStorage* pStg) = 0;
5042
5043     virtual HRESULT STDMETHODCALLTYPE Save(
5044         IStorage* pStgSave,
5045         BOOL fSameAsLoad) = 0;
5046
5047     virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
5048         IStorage* pStgNew) = 0;
5049
5050     virtual HRESULT STDMETHODCALLTYPE HandsOffStorage(
5051         ) = 0;
5052
5053 };
5054 #else
5055 typedef struct IPersistStorageVtbl IPersistStorageVtbl;
5056 struct IPersistStorage {
5057     const IPersistStorageVtbl* lpVtbl;
5058 };
5059 struct IPersistStorageVtbl {
5060     ICOM_MSVTABLE_COMPAT_FIELDS
5061
5062     /*** IUnknown methods ***/
5063     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5064         IPersistStorage* This,
5065         REFIID riid,
5066         void** ppvObject);
5067
5068     ULONG (STDMETHODCALLTYPE *AddRef)(
5069         IPersistStorage* This);
5070
5071     ULONG (STDMETHODCALLTYPE *Release)(
5072         IPersistStorage* This);
5073
5074     /*** IPersist methods ***/
5075     HRESULT (STDMETHODCALLTYPE *GetClassID)(
5076         IPersistStorage* This,
5077         CLSID* pClassID);
5078
5079     /*** IPersistStorage methods ***/
5080     HRESULT (STDMETHODCALLTYPE *IsDirty)(
5081         IPersistStorage* This);
5082
5083     HRESULT (STDMETHODCALLTYPE *InitNew)(
5084         IPersistStorage* This,
5085         IStorage* pStg);
5086
5087     HRESULT (STDMETHODCALLTYPE *Load)(
5088         IPersistStorage* This,
5089         IStorage* pStg);
5090
5091     HRESULT (STDMETHODCALLTYPE *Save)(
5092         IPersistStorage* This,
5093         IStorage* pStgSave,
5094         BOOL fSameAsLoad);
5095
5096     HRESULT (STDMETHODCALLTYPE *SaveCompleted)(
5097         IPersistStorage* This,
5098         IStorage* pStgNew);
5099
5100     HRESULT (STDMETHODCALLTYPE *HandsOffStorage)(
5101         IPersistStorage* This);
5102
5103 };
5104
5105 /*** IUnknown methods ***/
5106 #define IPersistStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5107 #define IPersistStorage_AddRef(p) (p)->lpVtbl->AddRef(p)
5108 #define IPersistStorage_Release(p) (p)->lpVtbl->Release(p)
5109 /*** IPersist methods ***/
5110 #define IPersistStorage_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
5111 /*** IPersistStorage methods ***/
5112 #define IPersistStorage_IsDirty(p) (p)->lpVtbl->IsDirty(p)
5113 #define IPersistStorage_InitNew(p,a) (p)->lpVtbl->InitNew(p,a)
5114 #define IPersistStorage_Load(p,a) (p)->lpVtbl->Load(p,a)
5115 #define IPersistStorage_Save(p,a,b) (p)->lpVtbl->Save(p,a,b)
5116 #define IPersistStorage_SaveCompleted(p,a) (p)->lpVtbl->SaveCompleted(p,a)
5117 #define IPersistStorage_HandsOffStorage(p) (p)->lpVtbl->HandsOffStorage(p)
5118
5119 #endif
5120
5121 #define IPersistStorage_METHODS \
5122     ICOM_MSVTABLE_COMPAT_FIELDS \
5123     /*** IUnknown methods ***/ \
5124     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5125     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5126     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5127     /*** IPersist methods ***/ \
5128     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
5129     /*** IPersistStorage methods ***/ \
5130     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \
5131     STDMETHOD_(HRESULT,InitNew)(THIS_ IStorage* pStg) PURE; \
5132     STDMETHOD_(HRESULT,Load)(THIS_ IStorage* pStg) PURE; \
5133     STDMETHOD_(HRESULT,Save)(THIS_ IStorage* pStgSave, BOOL fSameAsLoad) PURE; \
5134     STDMETHOD_(HRESULT,SaveCompleted)(THIS_ IStorage* pStgNew) PURE; \
5135     STDMETHOD_(HRESULT,HandsOffStorage)(THIS) PURE;
5136
5137 HRESULT CALLBACK IPersistStorage_IsDirty_Proxy(
5138     IPersistStorage* This);
5139 void __RPC_STUB IPersistStorage_IsDirty_Stub(
5140     struct IRpcStubBuffer* This,
5141     struct IRpcChannelBuffer* pRpcChannelBuffer,
5142     PRPC_MESSAGE pRpcMessage,
5143     DWORD* pdwStubPhase);
5144 HRESULT CALLBACK IPersistStorage_InitNew_Proxy(
5145     IPersistStorage* This,
5146     IStorage* pStg);
5147 void __RPC_STUB IPersistStorage_InitNew_Stub(
5148     struct IRpcStubBuffer* This,
5149     struct IRpcChannelBuffer* pRpcChannelBuffer,
5150     PRPC_MESSAGE pRpcMessage,
5151     DWORD* pdwStubPhase);
5152 HRESULT CALLBACK IPersistStorage_Load_Proxy(
5153     IPersistStorage* This,
5154     IStorage* pStg);
5155 void __RPC_STUB IPersistStorage_Load_Stub(
5156     struct IRpcStubBuffer* This,
5157     struct IRpcChannelBuffer* pRpcChannelBuffer,
5158     PRPC_MESSAGE pRpcMessage,
5159     DWORD* pdwStubPhase);
5160 HRESULT CALLBACK IPersistStorage_Save_Proxy(
5161     IPersistStorage* This,
5162     IStorage* pStgSave,
5163     BOOL fSameAsLoad);
5164 void __RPC_STUB IPersistStorage_Save_Stub(
5165     struct IRpcStubBuffer* This,
5166     struct IRpcChannelBuffer* pRpcChannelBuffer,
5167     PRPC_MESSAGE pRpcMessage,
5168     DWORD* pdwStubPhase);
5169 HRESULT CALLBACK IPersistStorage_SaveCompleted_Proxy(
5170     IPersistStorage* This,
5171     IStorage* pStgNew);
5172 void __RPC_STUB IPersistStorage_SaveCompleted_Stub(
5173     struct IRpcStubBuffer* This,
5174     struct IRpcChannelBuffer* pRpcChannelBuffer,
5175     PRPC_MESSAGE pRpcMessage,
5176     DWORD* pdwStubPhase);
5177 HRESULT CALLBACK IPersistStorage_HandsOffStorage_Proxy(
5178     IPersistStorage* This);
5179 void __RPC_STUB IPersistStorage_HandsOffStorage_Stub(
5180     struct IRpcStubBuffer* This,
5181     struct IRpcChannelBuffer* pRpcChannelBuffer,
5182     PRPC_MESSAGE pRpcMessage,
5183     DWORD* pdwStubPhase);
5184
5185 #endif  /* __IPersistStorage_INTERFACE_DEFINED__ */
5186
5187 #ifndef __IRootStorage_FWD_DEFINED__
5188 #define __IRootStorage_FWD_DEFINED__
5189 typedef struct IRootStorage IRootStorage;
5190 #endif
5191
5192 typedef IRootStorage *LPROOTSTORAGE;
5193
5194 /*****************************************************************************
5195  * IRootStorage interface
5196  */
5197 #ifndef __IRootStorage_INTERFACE_DEFINED__
5198 #define __IRootStorage_INTERFACE_DEFINED__
5199
5200 DEFINE_GUID(IID_IRootStorage, 0x00000012, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
5201 #if defined(__cplusplus) && !defined(CINTERFACE)
5202 struct IRootStorage : public IUnknown
5203 {
5204     virtual HRESULT STDMETHODCALLTYPE SwitchToFile(
5205         LPOLESTR pszFile) = 0;
5206
5207 };
5208 #else
5209 typedef struct IRootStorageVtbl IRootStorageVtbl;
5210 struct IRootStorage {
5211     const IRootStorageVtbl* lpVtbl;
5212 };
5213 struct IRootStorageVtbl {
5214     ICOM_MSVTABLE_COMPAT_FIELDS
5215
5216     /*** IUnknown methods ***/
5217     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5218         IRootStorage* This,
5219         REFIID riid,
5220         void** ppvObject);
5221
5222     ULONG (STDMETHODCALLTYPE *AddRef)(
5223         IRootStorage* This);
5224
5225     ULONG (STDMETHODCALLTYPE *Release)(
5226         IRootStorage* This);
5227
5228     /*** IRootStorage methods ***/
5229     HRESULT (STDMETHODCALLTYPE *SwitchToFile)(
5230         IRootStorage* This,
5231         LPOLESTR pszFile);
5232
5233 };
5234
5235 /*** IUnknown methods ***/
5236 #define IRootStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5237 #define IRootStorage_AddRef(p) (p)->lpVtbl->AddRef(p)
5238 #define IRootStorage_Release(p) (p)->lpVtbl->Release(p)
5239 /*** IRootStorage methods ***/
5240 #define IRootStorage_SwitchToFile(p,a) (p)->lpVtbl->SwitchToFile(p,a)
5241
5242 #endif
5243
5244 #define IRootStorage_METHODS \
5245     ICOM_MSVTABLE_COMPAT_FIELDS \
5246     /*** IUnknown methods ***/ \
5247     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5248     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5249     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5250     /*** IRootStorage methods ***/ \
5251     STDMETHOD_(HRESULT,SwitchToFile)(THIS_ LPOLESTR pszFile) PURE;
5252
5253 HRESULT CALLBACK IRootStorage_SwitchToFile_Proxy(
5254     IRootStorage* This,
5255     LPOLESTR pszFile);
5256 void __RPC_STUB IRootStorage_SwitchToFile_Stub(
5257     struct IRpcStubBuffer* This,
5258     struct IRpcChannelBuffer* pRpcChannelBuffer,
5259     PRPC_MESSAGE pRpcMessage,
5260     DWORD* pdwStubPhase);
5261
5262 #endif  /* __IRootStorage_INTERFACE_DEFINED__ */
5263
5264 #ifndef __ILockBytes_FWD_DEFINED__
5265 #define __ILockBytes_FWD_DEFINED__
5266 typedef struct ILockBytes ILockBytes;
5267 #endif
5268
5269 typedef ILockBytes *LPLOCKBYTES;
5270
5271 /*****************************************************************************
5272  * ILockBytes interface
5273  */
5274 #ifndef __ILockBytes_INTERFACE_DEFINED__
5275 #define __ILockBytes_INTERFACE_DEFINED__
5276
5277 DEFINE_GUID(IID_ILockBytes, 0x0000000a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
5278 #if defined(__cplusplus) && !defined(CINTERFACE)
5279 struct ILockBytes : public IUnknown
5280 {
5281     virtual HRESULT STDMETHODCALLTYPE ReadAt(
5282         ULARGE_INTEGER ulOffset,
5283         void* pv,
5284         ULONG cb,
5285         ULONG* pcbRead) = 0;
5286
5287     virtual HRESULT STDMETHODCALLTYPE WriteAt(
5288         ULARGE_INTEGER ulOffset,
5289         const void* pv,
5290         ULONG cb,
5291         ULONG* pcbWritten) = 0;
5292
5293     virtual HRESULT STDMETHODCALLTYPE Flush(
5294         ) = 0;
5295
5296     virtual HRESULT STDMETHODCALLTYPE SetSize(
5297         ULARGE_INTEGER cb) = 0;
5298
5299     virtual HRESULT STDMETHODCALLTYPE LockRegion(
5300         ULARGE_INTEGER libOffset,
5301         ULARGE_INTEGER cb,
5302         DWORD dwLockType) = 0;
5303
5304     virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
5305         ULARGE_INTEGER libOffset,
5306         ULARGE_INTEGER cb,
5307         DWORD dwLockType) = 0;
5308
5309     virtual HRESULT STDMETHODCALLTYPE Stat(
5310         STATSTG* pstatstg,
5311         DWORD grfStatFlag) = 0;
5312
5313 };
5314 #else
5315 typedef struct ILockBytesVtbl ILockBytesVtbl;
5316 struct ILockBytes {
5317     const ILockBytesVtbl* lpVtbl;
5318 };
5319 struct ILockBytesVtbl {
5320     ICOM_MSVTABLE_COMPAT_FIELDS
5321
5322     /*** IUnknown methods ***/
5323     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5324         ILockBytes* This,
5325         REFIID riid,
5326         void** ppvObject);
5327
5328     ULONG (STDMETHODCALLTYPE *AddRef)(
5329         ILockBytes* This);
5330
5331     ULONG (STDMETHODCALLTYPE *Release)(
5332         ILockBytes* This);
5333
5334     /*** ILockBytes methods ***/
5335     HRESULT (STDMETHODCALLTYPE *ReadAt)(
5336         ILockBytes* This,
5337         ULARGE_INTEGER ulOffset,
5338         void* pv,
5339         ULONG cb,
5340         ULONG* pcbRead);
5341
5342     HRESULT (STDMETHODCALLTYPE *WriteAt)(
5343         ILockBytes* This,
5344         ULARGE_INTEGER ulOffset,
5345         const void* pv,
5346         ULONG cb,
5347         ULONG* pcbWritten);
5348
5349     HRESULT (STDMETHODCALLTYPE *Flush)(
5350         ILockBytes* This);
5351
5352     HRESULT (STDMETHODCALLTYPE *SetSize)(
5353         ILockBytes* This,
5354         ULARGE_INTEGER cb);
5355
5356     HRESULT (STDMETHODCALLTYPE *LockRegion)(
5357         ILockBytes* This,
5358         ULARGE_INTEGER libOffset,
5359         ULARGE_INTEGER cb,
5360         DWORD dwLockType);
5361
5362     HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
5363         ILockBytes* This,
5364         ULARGE_INTEGER libOffset,
5365         ULARGE_INTEGER cb,
5366         DWORD dwLockType);
5367
5368     HRESULT (STDMETHODCALLTYPE *Stat)(
5369         ILockBytes* This,
5370         STATSTG* pstatstg,
5371         DWORD grfStatFlag);
5372
5373 };
5374
5375 /*** IUnknown methods ***/
5376 #define ILockBytes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5377 #define ILockBytes_AddRef(p) (p)->lpVtbl->AddRef(p)
5378 #define ILockBytes_Release(p) (p)->lpVtbl->Release(p)
5379 /*** ILockBytes methods ***/
5380 #define ILockBytes_ReadAt(p,a,b,c,d) (p)->lpVtbl->ReadAt(p,a,b,c,d)
5381 #define ILockBytes_WriteAt(p,a,b,c,d) (p)->lpVtbl->WriteAt(p,a,b,c,d)
5382 #define ILockBytes_Flush(p) (p)->lpVtbl->Flush(p)
5383 #define ILockBytes_SetSize(p,a) (p)->lpVtbl->SetSize(p,a)
5384 #define ILockBytes_LockRegion(p,a,b,c) (p)->lpVtbl->LockRegion(p,a,b,c)
5385 #define ILockBytes_UnlockRegion(p,a,b,c) (p)->lpVtbl->UnlockRegion(p,a,b,c)
5386 #define ILockBytes_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b)
5387
5388 #endif
5389
5390 #define ILockBytes_METHODS \
5391     ICOM_MSVTABLE_COMPAT_FIELDS \
5392     /*** IUnknown methods ***/ \
5393     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5394     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5395     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5396     /*** ILockBytes methods ***/ \
5397     STDMETHOD_(HRESULT,ReadAt)(THIS_ ULARGE_INTEGER ulOffset, void* pv, ULONG cb, ULONG* pcbRead) PURE; \
5398     STDMETHOD_(HRESULT,WriteAt)(THIS_ ULARGE_INTEGER ulOffset, const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \
5399     STDMETHOD_(HRESULT,Flush)(THIS) PURE; \
5400     STDMETHOD_(HRESULT,SetSize)(THIS_ ULARGE_INTEGER cb) PURE; \
5401     STDMETHOD_(HRESULT,LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \
5402     STDMETHOD_(HRESULT,UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \
5403     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE;
5404
5405 HRESULT CALLBACK ILockBytes_RemoteReadAt_Proxy(
5406     ILockBytes* This,
5407     ULARGE_INTEGER ulOffset,
5408     byte* pv,
5409     ULONG cb,
5410     ULONG* pcbRead);
5411 void __RPC_STUB ILockBytes_RemoteReadAt_Stub(
5412     struct IRpcStubBuffer* This,
5413     struct IRpcChannelBuffer* pRpcChannelBuffer,
5414     PRPC_MESSAGE pRpcMessage,
5415     DWORD* pdwStubPhase);
5416 HRESULT CALLBACK ILockBytes_ReadAt_Proxy(
5417     ILockBytes* This,
5418     ULARGE_INTEGER ulOffset,
5419     void* pv,
5420     ULONG cb,
5421     ULONG* pcbRead);
5422 HRESULT __RPC_STUB ILockBytes_ReadAt_Stub(
5423     ILockBytes* This,
5424     ULARGE_INTEGER ulOffset,
5425     byte* pv,
5426     ULONG cb,
5427     ULONG* pcbRead);
5428 HRESULT CALLBACK ILockBytes_RemoteWriteAt_Proxy(
5429     ILockBytes* This,
5430     ULARGE_INTEGER ulOffset,
5431     const byte* pv,
5432     ULONG cb,
5433     ULONG* pcbWritten);
5434 void __RPC_STUB ILockBytes_RemoteWriteAt_Stub(
5435     struct IRpcStubBuffer* This,
5436     struct IRpcChannelBuffer* pRpcChannelBuffer,
5437     PRPC_MESSAGE pRpcMessage,
5438     DWORD* pdwStubPhase);
5439 HRESULT CALLBACK ILockBytes_WriteAt_Proxy(
5440     ILockBytes* This,
5441     ULARGE_INTEGER ulOffset,
5442     const void* pv,
5443     ULONG cb,
5444     ULONG* pcbWritten);
5445 HRESULT __RPC_STUB ILockBytes_WriteAt_Stub(
5446     ILockBytes* This,
5447     ULARGE_INTEGER ulOffset,
5448     const byte* pv,
5449     ULONG cb,
5450     ULONG* pcbWritten);
5451 HRESULT CALLBACK ILockBytes_Flush_Proxy(
5452     ILockBytes* This);
5453 void __RPC_STUB ILockBytes_Flush_Stub(
5454     struct IRpcStubBuffer* This,
5455     struct IRpcChannelBuffer* pRpcChannelBuffer,
5456     PRPC_MESSAGE pRpcMessage,
5457     DWORD* pdwStubPhase);
5458 HRESULT CALLBACK ILockBytes_SetSize_Proxy(
5459     ILockBytes* This,
5460     ULARGE_INTEGER cb);
5461 void __RPC_STUB ILockBytes_SetSize_Stub(
5462     struct IRpcStubBuffer* This,
5463     struct IRpcChannelBuffer* pRpcChannelBuffer,
5464     PRPC_MESSAGE pRpcMessage,
5465     DWORD* pdwStubPhase);
5466 HRESULT CALLBACK ILockBytes_LockRegion_Proxy(
5467     ILockBytes* This,
5468     ULARGE_INTEGER libOffset,
5469     ULARGE_INTEGER cb,
5470     DWORD dwLockType);
5471 void __RPC_STUB ILockBytes_LockRegion_Stub(
5472     struct IRpcStubBuffer* This,
5473     struct IRpcChannelBuffer* pRpcChannelBuffer,
5474     PRPC_MESSAGE pRpcMessage,
5475     DWORD* pdwStubPhase);
5476 HRESULT CALLBACK ILockBytes_UnlockRegion_Proxy(
5477     ILockBytes* This,
5478     ULARGE_INTEGER libOffset,
5479     ULARGE_INTEGER cb,
5480     DWORD dwLockType);
5481 void __RPC_STUB ILockBytes_UnlockRegion_Stub(
5482     struct IRpcStubBuffer* This,
5483     struct IRpcChannelBuffer* pRpcChannelBuffer,
5484     PRPC_MESSAGE pRpcMessage,
5485     DWORD* pdwStubPhase);
5486 HRESULT CALLBACK ILockBytes_Stat_Proxy(
5487     ILockBytes* This,
5488     STATSTG* pstatstg,
5489     DWORD grfStatFlag);
5490 void __RPC_STUB ILockBytes_Stat_Stub(
5491     struct IRpcStubBuffer* This,
5492     struct IRpcChannelBuffer* pRpcChannelBuffer,
5493     PRPC_MESSAGE pRpcMessage,
5494     DWORD* pdwStubPhase);
5495
5496 #endif  /* __ILockBytes_INTERFACE_DEFINED__ */
5497
5498 #ifndef __IFillLockBytes_FWD_DEFINED__
5499 #define __IFillLockBytes_FWD_DEFINED__
5500 typedef struct IFillLockBytes IFillLockBytes;
5501 #endif
5502
5503 /*****************************************************************************
5504  * IFillLockBytes interface
5505  */
5506 #ifndef __IFillLockBytes_INTERFACE_DEFINED__
5507 #define __IFillLockBytes_INTERFACE_DEFINED__
5508
5509 DEFINE_GUID(IID_IFillLockBytes, 0x99caf010, 0x415e, 0x11cf, 0x88,0x14, 0x00,0xaa,0x00,0xb5,0x69,0xf5);
5510 #if defined(__cplusplus) && !defined(CINTERFACE)
5511 struct IFillLockBytes : public IUnknown
5512 {
5513     virtual HRESULT STDMETHODCALLTYPE FillAppend(
5514         const void* pv,
5515         ULONG cb,
5516         ULONG* pcbWritten) = 0;
5517
5518     virtual HRESULT STDMETHODCALLTYPE FillAt(
5519         ULARGE_INTEGER ulOffset,
5520         const void* pv,
5521         ULONG cb,
5522         ULONG* pcbWritten) = 0;
5523
5524     virtual HRESULT STDMETHODCALLTYPE SetFillSize(
5525         ULARGE_INTEGER ulSize) = 0;
5526
5527     virtual HRESULT STDMETHODCALLTYPE Terminate(
5528         BOOL bCanceled) = 0;
5529
5530 };
5531 #else
5532 typedef struct IFillLockBytesVtbl IFillLockBytesVtbl;
5533 struct IFillLockBytes {
5534     const IFillLockBytesVtbl* lpVtbl;
5535 };
5536 struct IFillLockBytesVtbl {
5537     ICOM_MSVTABLE_COMPAT_FIELDS
5538
5539     /*** IUnknown methods ***/
5540     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5541         IFillLockBytes* This,
5542         REFIID riid,
5543         void** ppvObject);
5544
5545     ULONG (STDMETHODCALLTYPE *AddRef)(
5546         IFillLockBytes* This);
5547
5548     ULONG (STDMETHODCALLTYPE *Release)(
5549         IFillLockBytes* This);
5550
5551     /*** IFillLockBytes methods ***/
5552     HRESULT (STDMETHODCALLTYPE *FillAppend)(
5553         IFillLockBytes* This,
5554         const void* pv,
5555         ULONG cb,
5556         ULONG* pcbWritten);
5557
5558     HRESULT (STDMETHODCALLTYPE *FillAt)(
5559         IFillLockBytes* This,
5560         ULARGE_INTEGER ulOffset,
5561         const void* pv,
5562         ULONG cb,
5563         ULONG* pcbWritten);
5564
5565     HRESULT (STDMETHODCALLTYPE *SetFillSize)(
5566         IFillLockBytes* This,
5567         ULARGE_INTEGER ulSize);
5568
5569     HRESULT (STDMETHODCALLTYPE *Terminate)(
5570         IFillLockBytes* This,
5571         BOOL bCanceled);
5572
5573 };
5574
5575 /*** IUnknown methods ***/
5576 #define IFillLockBytes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5577 #define IFillLockBytes_AddRef(p) (p)->lpVtbl->AddRef(p)
5578 #define IFillLockBytes_Release(p) (p)->lpVtbl->Release(p)
5579 /*** IFillLockBytes methods ***/
5580 #define IFillLockBytes_FillAppend(p,a,b,c) (p)->lpVtbl->FillAppend(p,a,b,c)
5581 #define IFillLockBytes_FillAt(p,a,b,c,d) (p)->lpVtbl->FillAt(p,a,b,c,d)
5582 #define IFillLockBytes_SetFillSize(p,a) (p)->lpVtbl->SetFillSize(p,a)
5583 #define IFillLockBytes_Terminate(p,a) (p)->lpVtbl->Terminate(p,a)
5584
5585 #endif
5586
5587 #define IFillLockBytes_METHODS \
5588     ICOM_MSVTABLE_COMPAT_FIELDS \
5589     /*** IUnknown methods ***/ \
5590     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5591     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5592     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5593     /*** IFillLockBytes methods ***/ \
5594     STDMETHOD_(HRESULT,FillAppend)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \
5595     STDMETHOD_(HRESULT,FillAt)(THIS_ ULARGE_INTEGER ulOffset, const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \
5596     STDMETHOD_(HRESULT,SetFillSize)(THIS_ ULARGE_INTEGER ulSize) PURE; \
5597     STDMETHOD_(HRESULT,Terminate)(THIS_ BOOL bCanceled) PURE;
5598
5599 HRESULT CALLBACK IFillLockBytes_RemoteFillAppend_Proxy(
5600     IFillLockBytes* This,
5601     const byte* pv,
5602     ULONG cb,
5603     ULONG* pcbWritten);
5604 void __RPC_STUB IFillLockBytes_RemoteFillAppend_Stub(
5605     struct IRpcStubBuffer* This,
5606     struct IRpcChannelBuffer* pRpcChannelBuffer,
5607     PRPC_MESSAGE pRpcMessage,
5608     DWORD* pdwStubPhase);
5609 HRESULT CALLBACK IFillLockBytes_FillAppend_Proxy(
5610     IFillLockBytes* This,
5611     const void* pv,
5612     ULONG cb,
5613     ULONG* pcbWritten);
5614 HRESULT __RPC_STUB IFillLockBytes_FillAppend_Stub(
5615     IFillLockBytes* This,
5616     const byte* pv,
5617     ULONG cb,
5618     ULONG* pcbWritten);
5619 HRESULT CALLBACK IFillLockBytes_RemoteFillAt_Proxy(
5620     IFillLockBytes* This,
5621     ULARGE_INTEGER ulOffset,
5622     const byte* pv,
5623     ULONG cb,
5624     ULONG* pcbWritten);
5625 void __RPC_STUB IFillLockBytes_RemoteFillAt_Stub(
5626     struct IRpcStubBuffer* This,
5627     struct IRpcChannelBuffer* pRpcChannelBuffer,
5628     PRPC_MESSAGE pRpcMessage,
5629     DWORD* pdwStubPhase);
5630 HRESULT CALLBACK IFillLockBytes_FillAt_Proxy(
5631     IFillLockBytes* This,
5632     ULARGE_INTEGER ulOffset,
5633     const void* pv,
5634     ULONG cb,
5635     ULONG* pcbWritten);
5636 HRESULT __RPC_STUB IFillLockBytes_FillAt_Stub(
5637     IFillLockBytes* This,
5638     ULARGE_INTEGER ulOffset,
5639     const byte* pv,
5640     ULONG cb,
5641     ULONG* pcbWritten);
5642 HRESULT CALLBACK IFillLockBytes_SetFillSize_Proxy(
5643     IFillLockBytes* This,
5644     ULARGE_INTEGER ulSize);
5645 void __RPC_STUB IFillLockBytes_SetFillSize_Stub(
5646     struct IRpcStubBuffer* This,
5647     struct IRpcChannelBuffer* pRpcChannelBuffer,
5648     PRPC_MESSAGE pRpcMessage,
5649     DWORD* pdwStubPhase);
5650 HRESULT CALLBACK IFillLockBytes_Terminate_Proxy(
5651     IFillLockBytes* This,
5652     BOOL bCanceled);
5653 void __RPC_STUB IFillLockBytes_Terminate_Stub(
5654     struct IRpcStubBuffer* This,
5655     struct IRpcChannelBuffer* pRpcChannelBuffer,
5656     PRPC_MESSAGE pRpcMessage,
5657     DWORD* pdwStubPhase);
5658
5659 #endif  /* __IFillLockBytes_INTERFACE_DEFINED__ */
5660
5661 #ifndef __IProgressNotify_FWD_DEFINED__
5662 #define __IProgressNotify_FWD_DEFINED__
5663 typedef struct IProgressNotify IProgressNotify;
5664 #endif
5665
5666 /*****************************************************************************
5667  * IProgressNotify interface
5668  */
5669 #ifndef __IProgressNotify_INTERFACE_DEFINED__
5670 #define __IProgressNotify_INTERFACE_DEFINED__
5671
5672 DEFINE_GUID(IID_IProgressNotify, 0xa9d758a0, 0x4617, 0x11cf, 0x95,0xfc, 0x00,0xaa,0x00,0x68,0x0d,0xb4);
5673 #if defined(__cplusplus) && !defined(CINTERFACE)
5674 struct IProgressNotify : public IUnknown
5675 {
5676     virtual HRESULT STDMETHODCALLTYPE OnProgress(
5677         DWORD dwProgressCurrent,
5678         DWORD dwProgressMaximum,
5679         BOOL fAccurate,
5680         BOOL fOwner) = 0;
5681
5682 };
5683 #else
5684 typedef struct IProgressNotifyVtbl IProgressNotifyVtbl;
5685 struct IProgressNotify {
5686     const IProgressNotifyVtbl* lpVtbl;
5687 };
5688 struct IProgressNotifyVtbl {
5689     ICOM_MSVTABLE_COMPAT_FIELDS
5690
5691     /*** IUnknown methods ***/
5692     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5693         IProgressNotify* This,
5694         REFIID riid,
5695         void** ppvObject);
5696
5697     ULONG (STDMETHODCALLTYPE *AddRef)(
5698         IProgressNotify* This);
5699
5700     ULONG (STDMETHODCALLTYPE *Release)(
5701         IProgressNotify* This);
5702
5703     /*** IProgressNotify methods ***/
5704     HRESULT (STDMETHODCALLTYPE *OnProgress)(
5705         IProgressNotify* This,
5706         DWORD dwProgressCurrent,
5707         DWORD dwProgressMaximum,
5708         BOOL fAccurate,
5709         BOOL fOwner);
5710
5711 };
5712
5713 /*** IUnknown methods ***/
5714 #define IProgressNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5715 #define IProgressNotify_AddRef(p) (p)->lpVtbl->AddRef(p)
5716 #define IProgressNotify_Release(p) (p)->lpVtbl->Release(p)
5717 /*** IProgressNotify methods ***/
5718 #define IProgressNotify_OnProgress(p,a,b,c,d) (p)->lpVtbl->OnProgress(p,a,b,c,d)
5719
5720 #endif
5721
5722 #define IProgressNotify_METHODS \
5723     ICOM_MSVTABLE_COMPAT_FIELDS \
5724     /*** IUnknown methods ***/ \
5725     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5726     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5727     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5728     /*** IProgressNotify methods ***/ \
5729     STDMETHOD_(HRESULT,OnProgress)(THIS_ DWORD dwProgressCurrent, DWORD dwProgressMaximum, BOOL fAccurate, BOOL fOwner) PURE;
5730
5731 HRESULT CALLBACK IProgressNotify_OnProgress_Proxy(
5732     IProgressNotify* This,
5733     DWORD dwProgressCurrent,
5734     DWORD dwProgressMaximum,
5735     BOOL fAccurate,
5736     BOOL fOwner);
5737 void __RPC_STUB IProgressNotify_OnProgress_Stub(
5738     struct IRpcStubBuffer* This,
5739     struct IRpcChannelBuffer* pRpcChannelBuffer,
5740     PRPC_MESSAGE pRpcMessage,
5741     DWORD* pdwStubPhase);
5742
5743 #endif  /* __IProgressNotify_INTERFACE_DEFINED__ */
5744
5745 #ifndef __ILayoutStorage_FWD_DEFINED__
5746 #define __ILayoutStorage_FWD_DEFINED__
5747 typedef struct ILayoutStorage ILayoutStorage;
5748 #endif
5749
5750 typedef struct tagStorageLayout {
5751     DWORD LayoutType;
5752     OLECHAR *pwcsElementName;
5753     LARGE_INTEGER cOffset;
5754     LARGE_INTEGER cBytes;
5755 } StorageLayout;
5756
5757 /*****************************************************************************
5758  * ILayoutStorage interface
5759  */
5760 #ifndef __ILayoutStorage_INTERFACE_DEFINED__
5761 #define __ILayoutStorage_INTERFACE_DEFINED__
5762
5763 DEFINE_GUID(IID_ILayoutStorage, 0x0e6d4d90, 0x6738, 0x11cf, 0x96,0x08, 0x00,0xaa,0x00,0x68,0x0d,0xb4);
5764 #if defined(__cplusplus) && !defined(CINTERFACE)
5765 struct ILayoutStorage : public IUnknown
5766 {
5767     virtual HRESULT STDMETHODCALLTYPE LayoutScript(
5768         StorageLayout* pStorageLayout,
5769         DWORD nEntries,
5770         DWORD glfInterleavedFlag) = 0;
5771
5772     virtual HRESULT STDMETHODCALLTYPE BeginMonitor(
5773         ) = 0;
5774
5775     virtual HRESULT STDMETHODCALLTYPE EndMonitor(
5776         ) = 0;
5777
5778     virtual HRESULT STDMETHODCALLTYPE ReLayoutDocfile(
5779         OLECHAR* pwcsNewDfName) = 0;
5780
5781     virtual HRESULT STDMETHODCALLTYPE ReLayoutDocfileOnILockBytes(
5782         ILockBytes* pILockBytes) = 0;
5783
5784 };
5785 #else
5786 typedef struct ILayoutStorageVtbl ILayoutStorageVtbl;
5787 struct ILayoutStorage {
5788     const ILayoutStorageVtbl* lpVtbl;
5789 };
5790 struct ILayoutStorageVtbl {
5791     ICOM_MSVTABLE_COMPAT_FIELDS
5792
5793     /*** IUnknown methods ***/
5794     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5795         ILayoutStorage* This,
5796         REFIID riid,
5797         void** ppvObject);
5798
5799     ULONG (STDMETHODCALLTYPE *AddRef)(
5800         ILayoutStorage* This);
5801
5802     ULONG (STDMETHODCALLTYPE *Release)(
5803         ILayoutStorage* This);
5804
5805     /*** ILayoutStorage methods ***/
5806     HRESULT (STDMETHODCALLTYPE *LayoutScript)(
5807         ILayoutStorage* This,
5808         StorageLayout* pStorageLayout,
5809         DWORD nEntries,
5810         DWORD glfInterleavedFlag);
5811
5812     HRESULT (STDMETHODCALLTYPE *BeginMonitor)(
5813         ILayoutStorage* This);
5814
5815     HRESULT (STDMETHODCALLTYPE *EndMonitor)(
5816         ILayoutStorage* This);
5817
5818     HRESULT (STDMETHODCALLTYPE *ReLayoutDocfile)(
5819         ILayoutStorage* This,
5820         OLECHAR* pwcsNewDfName);
5821
5822     HRESULT (STDMETHODCALLTYPE *ReLayoutDocfileOnILockBytes)(
5823         ILayoutStorage* This,
5824         ILockBytes* pILockBytes);
5825
5826 };
5827
5828 /*** IUnknown methods ***/
5829 #define ILayoutStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5830 #define ILayoutStorage_AddRef(p) (p)->lpVtbl->AddRef(p)
5831 #define ILayoutStorage_Release(p) (p)->lpVtbl->Release(p)
5832 /*** ILayoutStorage methods ***/
5833 #define ILayoutStorage_LayoutScript(p,a,b,c) (p)->lpVtbl->LayoutScript(p,a,b,c)
5834 #define ILayoutStorage_BeginMonitor(p) (p)->lpVtbl->BeginMonitor(p)
5835 #define ILayoutStorage_EndMonitor(p) (p)->lpVtbl->EndMonitor(p)
5836 #define ILayoutStorage_ReLayoutDocfile(p,a) (p)->lpVtbl->ReLayoutDocfile(p,a)
5837 #define ILayoutStorage_ReLayoutDocfileOnILockBytes(p,a) (p)->lpVtbl->ReLayoutDocfileOnILockBytes(p,a)
5838
5839 #endif
5840
5841 #define ILayoutStorage_METHODS \
5842     ICOM_MSVTABLE_COMPAT_FIELDS \
5843     /*** IUnknown methods ***/ \
5844     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
5845     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
5846     STDMETHOD_(ULONG,Release)(THIS) PURE; \
5847     /*** ILayoutStorage methods ***/ \
5848     STDMETHOD_(HRESULT,LayoutScript)(THIS_ StorageLayout* pStorageLayout, DWORD nEntries, DWORD glfInterleavedFlag) PURE; \
5849     STDMETHOD_(HRESULT,BeginMonitor)(THIS) PURE; \
5850     STDMETHOD_(HRESULT,EndMonitor)(THIS) PURE; \
5851     STDMETHOD_(HRESULT,ReLayoutDocfile)(THIS_ OLECHAR* pwcsNewDfName) PURE; \
5852     STDMETHOD_(HRESULT,ReLayoutDocfileOnILockBytes)(THIS_ ILockBytes* pILockBytes) PURE;
5853
5854 HRESULT CALLBACK ILayoutStorage_LayoutScript_Proxy(
5855     ILayoutStorage* This,
5856     StorageLayout* pStorageLayout,
5857     DWORD nEntries,
5858     DWORD glfInterleavedFlag);
5859 void __RPC_STUB ILayoutStorage_LayoutScript_Stub(
5860     struct IRpcStubBuffer* This,
5861     struct IRpcChannelBuffer* pRpcChannelBuffer,
5862     PRPC_MESSAGE pRpcMessage,
5863     DWORD* pdwStubPhase);
5864 HRESULT CALLBACK ILayoutStorage_BeginMonitor_Proxy(
5865     ILayoutStorage* This);
5866 void __RPC_STUB ILayoutStorage_BeginMonitor_Stub(
5867     struct IRpcStubBuffer* This,
5868     struct IRpcChannelBuffer* pRpcChannelBuffer,
5869     PRPC_MESSAGE pRpcMessage,
5870     DWORD* pdwStubPhase);
5871 HRESULT CALLBACK ILayoutStorage_EndMonitor_Proxy(
5872     ILayoutStorage* This);
5873 void __RPC_STUB ILayoutStorage_EndMonitor_Stub(
5874     struct IRpcStubBuffer* This,
5875     struct IRpcChannelBuffer* pRpcChannelBuffer,
5876     PRPC_MESSAGE pRpcMessage,
5877     DWORD* pdwStubPhase);
5878 HRESULT CALLBACK ILayoutStorage_ReLayoutDocfile_Proxy(
5879     ILayoutStorage* This,
5880     OLECHAR* pwcsNewDfName);
5881 void __RPC_STUB ILayoutStorage_ReLayoutDocfile_Stub(
5882     struct IRpcStubBuffer* This,
5883     struct IRpcChannelBuffer* pRpcChannelBuffer,
5884     PRPC_MESSAGE pRpcMessage,
5885     DWORD* pdwStubPhase);
5886 HRESULT CALLBACK ILayoutStorage_ReLayoutDocfileOnILockBytes_Proxy(
5887     ILayoutStorage* This,
5888     ILockBytes* pILockBytes);
5889 void __RPC_STUB ILayoutStorage_ReLayoutDocfileOnILockBytes_Stub(
5890     struct IRpcStubBuffer* This,
5891     struct IRpcChannelBuffer* pRpcChannelBuffer,
5892     PRPC_MESSAGE pRpcMessage,
5893     DWORD* pdwStubPhase);
5894
5895 #endif  /* __ILayoutStorage_INTERFACE_DEFINED__ */
5896
5897 #ifndef __IEnumFORMATETC_FWD_DEFINED__
5898 #define __IEnumFORMATETC_FWD_DEFINED__
5899 typedef struct IEnumFORMATETC IEnumFORMATETC;
5900 #endif
5901
5902 typedef IEnumFORMATETC *LPENUMFORMATETC;
5903
5904 typedef struct tagDVTARGETDEVICE {
5905     DWORD tdSize;
5906     WORD tdDriverNameOffset;
5907     WORD tdDeviceNameOffset;
5908     WORD tdPortNameOffset;
5909     WORD tdExtDevmodeOffset;
5910     BYTE tdData[1];
5911 } DVTARGETDEVICE;
5912
5913 typedef CLIPFORMAT *LPCLIPFORMAT;
5914
5915 typedef struct tagFORMATETC {
5916     CLIPFORMAT cfFormat;
5917     DVTARGETDEVICE *ptd;
5918     DWORD dwAspect;
5919     LONG lindex;
5920     DWORD tymed;
5921 } FORMATETC, *LPFORMATETC;
5922
5923 /*****************************************************************************
5924  * IEnumFORMATETC interface
5925  */
5926 #ifndef __IEnumFORMATETC_INTERFACE_DEFINED__
5927 #define __IEnumFORMATETC_INTERFACE_DEFINED__
5928
5929 DEFINE_GUID(IID_IEnumFORMATETC, 0x00000103, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
5930 #if defined(__cplusplus) && !defined(CINTERFACE)
5931 struct IEnumFORMATETC : public IUnknown
5932 {
5933     virtual HRESULT STDMETHODCALLTYPE Next(
5934         ULONG celt,
5935         FORMATETC* rgelt,
5936         ULONG* pceltFetched) = 0;
5937
5938     virtual HRESULT STDMETHODCALLTYPE Skip(
5939         ULONG celt) = 0;
5940
5941     virtual HRESULT STDMETHODCALLTYPE Reset(
5942         ) = 0;
5943
5944     virtual HRESULT STDMETHODCALLTYPE Clone(
5945         IEnumFORMATETC** ppenum) = 0;
5946
5947 };
5948 #else
5949 typedef struct IEnumFORMATETCVtbl IEnumFORMATETCVtbl;
5950 struct IEnumFORMATETC {
5951     const IEnumFORMATETCVtbl* lpVtbl;
5952 };
5953 struct IEnumFORMATETCVtbl {
5954     ICOM_MSVTABLE_COMPAT_FIELDS
5955
5956     /*** IUnknown methods ***/
5957     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5958         IEnumFORMATETC* This,
5959         REFIID riid,
5960         void** ppvObject);
5961
5962     ULONG (STDMETHODCALLTYPE *AddRef)(
5963         IEnumFORMATETC* This);
5964
5965     ULONG (STDMETHODCALLTYPE *Release)(
5966         IEnumFORMATETC* This);
5967
5968     /*** IEnumFORMATETC methods ***/
5969     HRESULT (STDMETHODCALLTYPE *Next)(
5970         IEnumFORMATETC* This,
5971         ULONG celt,
5972         FORMATETC* rgelt,
5973         ULONG* pceltFetched);
5974
5975     HRESULT (STDMETHODCALLTYPE *Skip)(
5976         IEnumFORMATETC* This,
5977         ULONG celt);
5978
5979     HRESULT (STDMETHODCALLTYPE *Reset)(
5980         IEnumFORMATETC* This);
5981
5982     HRESULT (STDMETHODCALLTYPE *Clone)(
5983         IEnumFORMATETC* This,
5984         IEnumFORMATETC** ppenum);
5985
5986 };
5987
5988 /*** IUnknown methods ***/
5989 #define IEnumFORMATETC_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
5990 #define IEnumFORMATETC_AddRef(p) (p)->lpVtbl->AddRef(p)
5991 #define IEnumFORMATETC_Release(p) (p)->lpVtbl->Release(p)
5992 /*** IEnumFORMATETC methods ***/
5993 #define IEnumFORMATETC_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
5994 #define IEnumFORMATETC_Skip(p,a) (p)->lpVtbl->Skip(p,a)
5995 #define IEnumFORMATETC_Reset(p) (p)->lpVtbl->Reset(p)
5996 #define IEnumFORMATETC_Clone(p,a) (p)->lpVtbl->Clone(p,a)
5997
5998 #endif
5999
6000 #define IEnumFORMATETC_METHODS \
6001     ICOM_MSVTABLE_COMPAT_FIELDS \
6002     /*** IUnknown methods ***/ \
6003     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6004     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6005     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6006     /*** IEnumFORMATETC methods ***/ \
6007     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, FORMATETC* rgelt, ULONG* pceltFetched) PURE; \
6008     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
6009     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
6010     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumFORMATETC** ppenum) PURE;
6011
6012 HRESULT CALLBACK IEnumFORMATETC_RemoteNext_Proxy(
6013     IEnumFORMATETC* This,
6014     ULONG celt,
6015     FORMATETC* rgelt,
6016     ULONG* pceltFetched);
6017 void __RPC_STUB IEnumFORMATETC_RemoteNext_Stub(
6018     struct IRpcStubBuffer* This,
6019     struct IRpcChannelBuffer* pRpcChannelBuffer,
6020     PRPC_MESSAGE pRpcMessage,
6021     DWORD* pdwStubPhase);
6022 HRESULT CALLBACK IEnumFORMATETC_Next_Proxy(
6023     IEnumFORMATETC* This,
6024     ULONG celt,
6025     FORMATETC* rgelt,
6026     ULONG* pceltFetched);
6027 HRESULT __RPC_STUB IEnumFORMATETC_Next_Stub(
6028     IEnumFORMATETC* This,
6029     ULONG celt,
6030     FORMATETC* rgelt,
6031     ULONG* pceltFetched);
6032 HRESULT CALLBACK IEnumFORMATETC_Skip_Proxy(
6033     IEnumFORMATETC* This,
6034     ULONG celt);
6035 void __RPC_STUB IEnumFORMATETC_Skip_Stub(
6036     struct IRpcStubBuffer* This,
6037     struct IRpcChannelBuffer* pRpcChannelBuffer,
6038     PRPC_MESSAGE pRpcMessage,
6039     DWORD* pdwStubPhase);
6040 HRESULT CALLBACK IEnumFORMATETC_Reset_Proxy(
6041     IEnumFORMATETC* This);
6042 void __RPC_STUB IEnumFORMATETC_Reset_Stub(
6043     struct IRpcStubBuffer* This,
6044     struct IRpcChannelBuffer* pRpcChannelBuffer,
6045     PRPC_MESSAGE pRpcMessage,
6046     DWORD* pdwStubPhase);
6047 HRESULT CALLBACK IEnumFORMATETC_Clone_Proxy(
6048     IEnumFORMATETC* This,
6049     IEnumFORMATETC** ppenum);
6050 void __RPC_STUB IEnumFORMATETC_Clone_Stub(
6051     struct IRpcStubBuffer* This,
6052     struct IRpcChannelBuffer* pRpcChannelBuffer,
6053     PRPC_MESSAGE pRpcMessage,
6054     DWORD* pdwStubPhase);
6055
6056 #endif  /* __IEnumFORMATETC_INTERFACE_DEFINED__ */
6057
6058 #ifndef __IEnumSTATDATA_FWD_DEFINED__
6059 #define __IEnumSTATDATA_FWD_DEFINED__
6060 typedef struct IEnumSTATDATA IEnumSTATDATA;
6061 #endif
6062
6063 typedef IEnumSTATDATA *LPENUMSTATDATA;
6064
6065 typedef enum tagADVF {
6066     ADVF_NODATA = 1,
6067     ADVF_PRIMEFIRST = 2,
6068     ADVF_ONLYONCE = 4,
6069     ADVF_DATAONSTOP = 64,
6070     ADVFCACHE_NOHANDLER = 8,
6071     ADVFCACHE_FORCEBUILTIN = 16,
6072     ADVFCACHE_ONSAVE = 32
6073 } ADVF;
6074
6075 typedef struct tagSTATDATA {
6076     FORMATETC formatetc;
6077     DWORD advf;
6078     IAdviseSink *pAdvSink;
6079     DWORD dwConnection;
6080 } STATDATA, *LPSTATDATA;
6081
6082 /*****************************************************************************
6083  * IEnumSTATDATA interface
6084  */
6085 #ifndef __IEnumSTATDATA_INTERFACE_DEFINED__
6086 #define __IEnumSTATDATA_INTERFACE_DEFINED__
6087
6088 DEFINE_GUID(IID_IEnumSTATDATA, 0x00000105, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
6089 #if defined(__cplusplus) && !defined(CINTERFACE)
6090 struct IEnumSTATDATA : public IUnknown
6091 {
6092     virtual HRESULT STDMETHODCALLTYPE Next(
6093         ULONG celt,
6094         STATDATA* rgelt,
6095         ULONG* pceltFetched) = 0;
6096
6097     virtual HRESULT STDMETHODCALLTYPE Skip(
6098         ULONG celt) = 0;
6099
6100     virtual HRESULT STDMETHODCALLTYPE Reset(
6101         ) = 0;
6102
6103     virtual HRESULT STDMETHODCALLTYPE Clone(
6104         IEnumSTATDATA** ppenum) = 0;
6105
6106 };
6107 #else
6108 typedef struct IEnumSTATDATAVtbl IEnumSTATDATAVtbl;
6109 struct IEnumSTATDATA {
6110     const IEnumSTATDATAVtbl* lpVtbl;
6111 };
6112 struct IEnumSTATDATAVtbl {
6113     ICOM_MSVTABLE_COMPAT_FIELDS
6114
6115     /*** IUnknown methods ***/
6116     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6117         IEnumSTATDATA* This,
6118         REFIID riid,
6119         void** ppvObject);
6120
6121     ULONG (STDMETHODCALLTYPE *AddRef)(
6122         IEnumSTATDATA* This);
6123
6124     ULONG (STDMETHODCALLTYPE *Release)(
6125         IEnumSTATDATA* This);
6126
6127     /*** IEnumSTATDATA methods ***/
6128     HRESULT (STDMETHODCALLTYPE *Next)(
6129         IEnumSTATDATA* This,
6130         ULONG celt,
6131         STATDATA* rgelt,
6132         ULONG* pceltFetched);
6133
6134     HRESULT (STDMETHODCALLTYPE *Skip)(
6135         IEnumSTATDATA* This,
6136         ULONG celt);
6137
6138     HRESULT (STDMETHODCALLTYPE *Reset)(
6139         IEnumSTATDATA* This);
6140
6141     HRESULT (STDMETHODCALLTYPE *Clone)(
6142         IEnumSTATDATA* This,
6143         IEnumSTATDATA** ppenum);
6144
6145 };
6146
6147 /*** IUnknown methods ***/
6148 #define IEnumSTATDATA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6149 #define IEnumSTATDATA_AddRef(p) (p)->lpVtbl->AddRef(p)
6150 #define IEnumSTATDATA_Release(p) (p)->lpVtbl->Release(p)
6151 /*** IEnumSTATDATA methods ***/
6152 #define IEnumSTATDATA_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
6153 #define IEnumSTATDATA_Skip(p,a) (p)->lpVtbl->Skip(p,a)
6154 #define IEnumSTATDATA_Reset(p) (p)->lpVtbl->Reset(p)
6155 #define IEnumSTATDATA_Clone(p,a) (p)->lpVtbl->Clone(p,a)
6156
6157 #endif
6158
6159 #define IEnumSTATDATA_METHODS \
6160     ICOM_MSVTABLE_COMPAT_FIELDS \
6161     /*** IUnknown methods ***/ \
6162     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6163     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6164     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6165     /*** IEnumSTATDATA methods ***/ \
6166     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATDATA* rgelt, ULONG* pceltFetched) PURE; \
6167     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
6168     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
6169     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATDATA** ppenum) PURE;
6170
6171 HRESULT CALLBACK IEnumSTATDATA_RemoteNext_Proxy(
6172     IEnumSTATDATA* This,
6173     ULONG celt,
6174     STATDATA* rgelt,
6175     ULONG* pceltFetched);
6176 void __RPC_STUB IEnumSTATDATA_RemoteNext_Stub(
6177     struct IRpcStubBuffer* This,
6178     struct IRpcChannelBuffer* pRpcChannelBuffer,
6179     PRPC_MESSAGE pRpcMessage,
6180     DWORD* pdwStubPhase);
6181 HRESULT CALLBACK IEnumSTATDATA_Next_Proxy(
6182     IEnumSTATDATA* This,
6183     ULONG celt,
6184     STATDATA* rgelt,
6185     ULONG* pceltFetched);
6186 HRESULT __RPC_STUB IEnumSTATDATA_Next_Stub(
6187     IEnumSTATDATA* This,
6188     ULONG celt,
6189     STATDATA* rgelt,
6190     ULONG* pceltFetched);
6191 HRESULT CALLBACK IEnumSTATDATA_Skip_Proxy(
6192     IEnumSTATDATA* This,
6193     ULONG celt);
6194 void __RPC_STUB IEnumSTATDATA_Skip_Stub(
6195     struct IRpcStubBuffer* This,
6196     struct IRpcChannelBuffer* pRpcChannelBuffer,
6197     PRPC_MESSAGE pRpcMessage,
6198     DWORD* pdwStubPhase);
6199 HRESULT CALLBACK IEnumSTATDATA_Reset_Proxy(
6200     IEnumSTATDATA* This);
6201 void __RPC_STUB IEnumSTATDATA_Reset_Stub(
6202     struct IRpcStubBuffer* This,
6203     struct IRpcChannelBuffer* pRpcChannelBuffer,
6204     PRPC_MESSAGE pRpcMessage,
6205     DWORD* pdwStubPhase);
6206 HRESULT CALLBACK IEnumSTATDATA_Clone_Proxy(
6207     IEnumSTATDATA* This,
6208     IEnumSTATDATA** ppenum);
6209 void __RPC_STUB IEnumSTATDATA_Clone_Stub(
6210     struct IRpcStubBuffer* This,
6211     struct IRpcChannelBuffer* pRpcChannelBuffer,
6212     PRPC_MESSAGE pRpcMessage,
6213     DWORD* pdwStubPhase);
6214
6215 #endif  /* __IEnumSTATDATA_INTERFACE_DEFINED__ */
6216
6217 typedef IAdviseSink *LPADVISESINK;
6218
6219 typedef enum tagTYMED {
6220     TYMED_HGLOBAL = 1,
6221     TYMED_FILE = 2,
6222     TYMED_ISTREAM = 4,
6223     TYMED_ISTORAGE = 8,
6224     TYMED_GDI = 16,
6225     TYMED_MFPICT = 32,
6226     TYMED_ENHMF = 64,
6227     TYMED_NULL = 0
6228 } TYMED;
6229
6230 typedef struct tagRemSTGMEDIUM {
6231     DWORD tymed;
6232     DWORD dwHandleType;
6233     unsigned long pData;
6234     unsigned long pUnkForRelease;
6235     unsigned long cbData;
6236     byte data[1];
6237 } RemSTGMEDIUM;
6238
6239 typedef struct tagSTGMEDIUM {
6240     DWORD tymed;
6241     union {
6242         HBITMAP hBitmap;
6243         HMETAFILEPICT hMetaFilePict;
6244         HENHMETAFILE hEnhMetaFile;
6245         HGLOBAL hGlobal;
6246         LPOLESTR lpszFileName;
6247         IStream *pstm;
6248         IStorage *pstg;
6249     } DUMMYUNIONNAME;
6250     IUnknown *pUnkForRelease;
6251 } uSTGMEDIUM;
6252
6253 typedef struct _GDI_OBJECT {
6254     DWORD ObjectType;
6255     union {
6256         wireHBITMAP hBitmap;
6257         wireHPALETTE hPalette;
6258         wireHGLOBAL hGeneric;
6259     } u;
6260 } GDI_OBJECT;
6261
6262 typedef struct _userSTGMEDIUM {
6263     struct {
6264         DWORD tymed;
6265         union {
6266             wireHMETAFILEPICT hMetaFilePict;
6267             wireHENHMETAFILE hHEnhMetaFile;
6268             GDI_OBJECT *hGdiHandle;
6269             wireHGLOBAL hGlobal;
6270             LPOLESTR lpszFileName;
6271             BYTE_BLOB *pstm;
6272             BYTE_BLOB *pstg;
6273         } u;
6274     } DUMMYSTRUCTNAME;
6275     IUnknown *pUnkForRelease;
6276 } userSTGMEDIUM;
6277
6278 typedef userSTGMEDIUM *wireSTGMEDIUM;
6279
6280 typedef uSTGMEDIUM STGMEDIUM;
6281 unsigned long   __RPC_USER STGMEDIUM_UserSize     (unsigned long *, unsigned long,   STGMEDIUM *);
6282 unsigned char * __RPC_USER STGMEDIUM_UserMarshal  (unsigned long *, unsigned char *, STGMEDIUM *);
6283 unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, STGMEDIUM *);
6284 void            __RPC_USER STGMEDIUM_UserFree     (unsigned long *, STGMEDIUM *);
6285
6286 typedef userSTGMEDIUM *wireASYNC_STGMEDIUM;
6287
6288 typedef STGMEDIUM ASYNC_STGMEDIUM;
6289 unsigned long   __RPC_USER ASYNC_STGMEDIUM_UserSize     (unsigned long *, unsigned long,   ASYNC_STGMEDIUM *);
6290 unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserMarshal  (unsigned long *, unsigned char *, ASYNC_STGMEDIUM *);
6291 unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, ASYNC_STGMEDIUM *);
6292 void            __RPC_USER ASYNC_STGMEDIUM_UserFree     (unsigned long *, ASYNC_STGMEDIUM *);
6293
6294 typedef STGMEDIUM *LPSTGMEDIUM;
6295
6296 typedef struct _userFLAG_STGMEDIUM {
6297     long ContextFlags;
6298     long fPassOwnership;
6299     userSTGMEDIUM Stgmed;
6300 } userFLAG_STGMEDIUM;
6301
6302 typedef userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
6303
6304 typedef struct _FLAG_STGMEDIUM {
6305     long ContextFlags;
6306     long fPassOwnership;
6307     STGMEDIUM Stgmed;
6308 } FLAG_STGMEDIUM;
6309 unsigned long   __RPC_USER FLAG_STGMEDIUM_UserSize     (unsigned long *, unsigned long,   FLAG_STGMEDIUM *);
6310 unsigned char * __RPC_USER FLAG_STGMEDIUM_UserMarshal  (unsigned long *, unsigned char *, FLAG_STGMEDIUM *);
6311 unsigned char * __RPC_USER FLAG_STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, FLAG_STGMEDIUM *);
6312 void            __RPC_USER FLAG_STGMEDIUM_UserFree     (unsigned long *, FLAG_STGMEDIUM *);
6313
6314 /*****************************************************************************
6315  * IAdviseSink interface
6316  */
6317 #ifndef __IAdviseSink_INTERFACE_DEFINED__
6318 #define __IAdviseSink_INTERFACE_DEFINED__
6319
6320 DEFINE_GUID(IID_IAdviseSink, 0x0000010f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
6321 #if defined(__cplusplus) && !defined(CINTERFACE)
6322 struct IAdviseSink : public IUnknown
6323 {
6324     virtual void STDMETHODCALLTYPE OnDataChange(
6325         FORMATETC* pFormatetc,
6326         STGMEDIUM* pStgmed) = 0;
6327
6328     virtual void STDMETHODCALLTYPE OnViewChange(
6329         DWORD dwAspect,
6330         LONG lindex) = 0;
6331
6332     virtual void STDMETHODCALLTYPE OnRename(
6333         IMoniker* pmk) = 0;
6334
6335     virtual void STDMETHODCALLTYPE OnSave(
6336         ) = 0;
6337
6338     virtual void STDMETHODCALLTYPE OnClose(
6339         ) = 0;
6340
6341 };
6342 #else
6343 typedef struct IAdviseSinkVtbl IAdviseSinkVtbl;
6344 struct IAdviseSink {
6345     const IAdviseSinkVtbl* lpVtbl;
6346 };
6347 struct IAdviseSinkVtbl {
6348     ICOM_MSVTABLE_COMPAT_FIELDS
6349
6350     /*** IUnknown methods ***/
6351     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6352         IAdviseSink* This,
6353         REFIID riid,
6354         void** ppvObject);
6355
6356     ULONG (STDMETHODCALLTYPE *AddRef)(
6357         IAdviseSink* This);
6358
6359     ULONG (STDMETHODCALLTYPE *Release)(
6360         IAdviseSink* This);
6361
6362     /*** IAdviseSink methods ***/
6363     void (STDMETHODCALLTYPE *OnDataChange)(
6364         IAdviseSink* This,
6365         FORMATETC* pFormatetc,
6366         STGMEDIUM* pStgmed);
6367
6368     void (STDMETHODCALLTYPE *OnViewChange)(
6369         IAdviseSink* This,
6370         DWORD dwAspect,
6371         LONG lindex);
6372
6373     void (STDMETHODCALLTYPE *OnRename)(
6374         IAdviseSink* This,
6375         IMoniker* pmk);
6376
6377     void (STDMETHODCALLTYPE *OnSave)(
6378         IAdviseSink* This);
6379
6380     void (STDMETHODCALLTYPE *OnClose)(
6381         IAdviseSink* This);
6382
6383 };
6384
6385 /*** IUnknown methods ***/
6386 #define IAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6387 #define IAdviseSink_AddRef(p) (p)->lpVtbl->AddRef(p)
6388 #define IAdviseSink_Release(p) (p)->lpVtbl->Release(p)
6389 /*** IAdviseSink methods ***/
6390 #define IAdviseSink_OnDataChange(p,a,b) (p)->lpVtbl->OnDataChange(p,a,b)
6391 #define IAdviseSink_OnViewChange(p,a,b) (p)->lpVtbl->OnViewChange(p,a,b)
6392 #define IAdviseSink_OnRename(p,a) (p)->lpVtbl->OnRename(p,a)
6393 #define IAdviseSink_OnSave(p) (p)->lpVtbl->OnSave(p)
6394 #define IAdviseSink_OnClose(p) (p)->lpVtbl->OnClose(p)
6395
6396 #endif
6397
6398 #define IAdviseSink_METHODS \
6399     ICOM_MSVTABLE_COMPAT_FIELDS \
6400     /*** IUnknown methods ***/ \
6401     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6402     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6403     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6404     /*** IAdviseSink methods ***/ \
6405     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC* pFormatetc, STGMEDIUM* pStgmed) PURE; \
6406     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE; \
6407     STDMETHOD_(void,OnRename)(THIS_ IMoniker* pmk) PURE; \
6408     STDMETHOD_(void,OnSave)(THIS) PURE; \
6409     STDMETHOD_(void,OnClose)(THIS) PURE;
6410
6411 HRESULT CALLBACK IAdviseSink_RemoteOnDataChange_Proxy(
6412     IAdviseSink* This,
6413     IAsyncManager** ppIAM,
6414     FORMATETC* pFormatetc,
6415     ASYNC_STGMEDIUM* pStgmed);
6416 void __RPC_STUB IAdviseSink_RemoteOnDataChange_Stub(
6417     struct IRpcStubBuffer* This,
6418     struct IRpcChannelBuffer* pRpcChannelBuffer,
6419     PRPC_MESSAGE pRpcMessage,
6420     DWORD* pdwStubPhase);
6421 void CALLBACK IAdviseSink_OnDataChange_Proxy(
6422     IAdviseSink* This,
6423     FORMATETC* pFormatetc,
6424     STGMEDIUM* pStgmed);
6425 HRESULT __RPC_STUB IAdviseSink_OnDataChange_Stub(
6426     IAdviseSink* This,
6427     IAsyncManager** ppIAM,
6428     FORMATETC* pFormatetc,
6429     ASYNC_STGMEDIUM* pStgmed);
6430 HRESULT CALLBACK IAdviseSink_RemoteOnViewChange_Proxy(
6431     IAdviseSink* This,
6432     IAsyncManager** ppIAM,
6433     DWORD dwAspect,
6434     LONG lindex);
6435 void __RPC_STUB IAdviseSink_RemoteOnViewChange_Stub(
6436     struct IRpcStubBuffer* This,
6437     struct IRpcChannelBuffer* pRpcChannelBuffer,
6438     PRPC_MESSAGE pRpcMessage,
6439     DWORD* pdwStubPhase);
6440 void CALLBACK IAdviseSink_OnViewChange_Proxy(
6441     IAdviseSink* This,
6442     DWORD dwAspect,
6443     LONG lindex);
6444 HRESULT __RPC_STUB IAdviseSink_OnViewChange_Stub(
6445     IAdviseSink* This,
6446     IAsyncManager** ppIAM,
6447     DWORD dwAspect,
6448     LONG lindex);
6449 HRESULT CALLBACK IAdviseSink_RemoteOnRename_Proxy(
6450     IAdviseSink* This,
6451     IAsyncManager** ppIAM,
6452     IMoniker* pmk);
6453 void __RPC_STUB IAdviseSink_RemoteOnRename_Stub(
6454     struct IRpcStubBuffer* This,
6455     struct IRpcChannelBuffer* pRpcChannelBuffer,
6456     PRPC_MESSAGE pRpcMessage,
6457     DWORD* pdwStubPhase);
6458 void CALLBACK IAdviseSink_OnRename_Proxy(
6459     IAdviseSink* This,
6460     IMoniker* pmk);
6461 HRESULT __RPC_STUB IAdviseSink_OnRename_Stub(
6462     IAdviseSink* This,
6463     IAsyncManager** ppIAM,
6464     IMoniker* pmk);
6465 HRESULT CALLBACK IAdviseSink_RemoteOnSave_Proxy(
6466     IAdviseSink* This,
6467     IAsyncManager** ppIAM);
6468 void __RPC_STUB IAdviseSink_RemoteOnSave_Stub(
6469     struct IRpcStubBuffer* This,
6470     struct IRpcChannelBuffer* pRpcChannelBuffer,
6471     PRPC_MESSAGE pRpcMessage,
6472     DWORD* pdwStubPhase);
6473 void CALLBACK IAdviseSink_OnSave_Proxy(
6474     IAdviseSink* This);
6475 HRESULT __RPC_STUB IAdviseSink_OnSave_Stub(
6476     IAdviseSink* This,
6477     IAsyncManager** ppIAM);
6478 HRESULT CALLBACK IAdviseSink_RemoteOnClose_Proxy(
6479     IAdviseSink* This);
6480 void __RPC_STUB IAdviseSink_RemoteOnClose_Stub(
6481     struct IRpcStubBuffer* This,
6482     struct IRpcChannelBuffer* pRpcChannelBuffer,
6483     PRPC_MESSAGE pRpcMessage,
6484     DWORD* pdwStubPhase);
6485 void CALLBACK IAdviseSink_OnClose_Proxy(
6486     IAdviseSink* This);
6487 HRESULT __RPC_STUB IAdviseSink_OnClose_Stub(
6488     IAdviseSink* This);
6489
6490 #endif  /* __IAdviseSink_INTERFACE_DEFINED__ */
6491
6492 #ifndef __IAdviseSink2_FWD_DEFINED__
6493 #define __IAdviseSink2_FWD_DEFINED__
6494 typedef struct IAdviseSink2 IAdviseSink2;
6495 #endif
6496
6497 typedef IAdviseSink2 *LPADVISESINK2;
6498
6499 /*****************************************************************************
6500  * IAdviseSink2 interface
6501  */
6502 #ifndef __IAdviseSink2_INTERFACE_DEFINED__
6503 #define __IAdviseSink2_INTERFACE_DEFINED__
6504
6505 DEFINE_GUID(IID_IAdviseSink2, 0x00000125, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
6506 #if defined(__cplusplus) && !defined(CINTERFACE)
6507 struct IAdviseSink2 : public IAdviseSink
6508 {
6509     virtual void STDMETHODCALLTYPE OnLinkSrcChange(
6510         IMoniker* pmk) = 0;
6511
6512 };
6513 #else
6514 typedef struct IAdviseSink2Vtbl IAdviseSink2Vtbl;
6515 struct IAdviseSink2 {
6516     const IAdviseSink2Vtbl* lpVtbl;
6517 };
6518 struct IAdviseSink2Vtbl {
6519     ICOM_MSVTABLE_COMPAT_FIELDS
6520
6521     /*** IUnknown methods ***/
6522     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6523         IAdviseSink2* This,
6524         REFIID riid,
6525         void** ppvObject);
6526
6527     ULONG (STDMETHODCALLTYPE *AddRef)(
6528         IAdviseSink2* This);
6529
6530     ULONG (STDMETHODCALLTYPE *Release)(
6531         IAdviseSink2* This);
6532
6533     /*** IAdviseSink methods ***/
6534     void (STDMETHODCALLTYPE *OnDataChange)(
6535         IAdviseSink2* This,
6536         FORMATETC* pFormatetc,
6537         STGMEDIUM* pStgmed);
6538
6539     void (STDMETHODCALLTYPE *OnViewChange)(
6540         IAdviseSink2* This,
6541         DWORD dwAspect,
6542         LONG lindex);
6543
6544     void (STDMETHODCALLTYPE *OnRename)(
6545         IAdviseSink2* This,
6546         IMoniker* pmk);
6547
6548     void (STDMETHODCALLTYPE *OnSave)(
6549         IAdviseSink2* This);
6550
6551     void (STDMETHODCALLTYPE *OnClose)(
6552         IAdviseSink2* This);
6553
6554     /*** IAdviseSink2 methods ***/
6555     void (STDMETHODCALLTYPE *OnLinkSrcChange)(
6556         IAdviseSink2* This,
6557         IMoniker* pmk);
6558
6559 };
6560
6561 /*** IUnknown methods ***/
6562 #define IAdviseSink2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6563 #define IAdviseSink2_AddRef(p) (p)->lpVtbl->AddRef(p)
6564 #define IAdviseSink2_Release(p) (p)->lpVtbl->Release(p)
6565 /*** IAdviseSink methods ***/
6566 #define IAdviseSink2_OnDataChange(p,a,b) (p)->lpVtbl->OnDataChange(p,a,b)
6567 #define IAdviseSink2_OnViewChange(p,a,b) (p)->lpVtbl->OnViewChange(p,a,b)
6568 #define IAdviseSink2_OnRename(p,a) (p)->lpVtbl->OnRename(p,a)
6569 #define IAdviseSink2_OnSave(p) (p)->lpVtbl->OnSave(p)
6570 #define IAdviseSink2_OnClose(p) (p)->lpVtbl->OnClose(p)
6571 /*** IAdviseSink2 methods ***/
6572 #define IAdviseSink2_OnLinkSrcChange(p,a) (p)->lpVtbl->OnLinkSrcChange(p,a)
6573
6574 #endif
6575
6576 #define IAdviseSink2_METHODS \
6577     ICOM_MSVTABLE_COMPAT_FIELDS \
6578     /*** IUnknown methods ***/ \
6579     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6580     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6581     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6582     /*** IAdviseSink methods ***/ \
6583     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC* pFormatetc, STGMEDIUM* pStgmed) PURE; \
6584     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE; \
6585     STDMETHOD_(void,OnRename)(THIS_ IMoniker* pmk) PURE; \
6586     STDMETHOD_(void,OnSave)(THIS) PURE; \
6587     STDMETHOD_(void,OnClose)(THIS) PURE; \
6588     /*** IAdviseSink2 methods ***/ \
6589     STDMETHOD_(void,OnLinkSrcChange)(THIS_ IMoniker* pmk) PURE;
6590
6591 HRESULT CALLBACK IAdviseSink2_RemoteOnLinkSrcChange_Proxy(
6592     IAdviseSink2* This,
6593     IAsyncManager** ppIAM,
6594     IMoniker* pmk);
6595 void __RPC_STUB IAdviseSink2_RemoteOnLinkSrcChange_Stub(
6596     struct IRpcStubBuffer* This,
6597     struct IRpcChannelBuffer* pRpcChannelBuffer,
6598     PRPC_MESSAGE pRpcMessage,
6599     DWORD* pdwStubPhase);
6600 void CALLBACK IAdviseSink2_OnLinkSrcChange_Proxy(
6601     IAdviseSink2* This,
6602     IMoniker* pmk);
6603 HRESULT __RPC_STUB IAdviseSink2_OnLinkSrcChange_Stub(
6604     IAdviseSink2* This,
6605     IAsyncManager** ppIAM,
6606     IMoniker* pmk);
6607
6608 #endif  /* __IAdviseSink2_INTERFACE_DEFINED__ */
6609
6610 #ifndef __IDataObject_FWD_DEFINED__
6611 #define __IDataObject_FWD_DEFINED__
6612 typedef struct IDataObject IDataObject;
6613 #endif
6614
6615 typedef IDataObject *LPDATAOBJECT;
6616
6617 typedef enum tagDATADIR {
6618     DATADIR_GET = 1,
6619     DATADIR_SET = 2
6620 } DATADIR;
6621
6622 /*****************************************************************************
6623  * IDataObject interface
6624  */
6625 #ifndef __IDataObject_INTERFACE_DEFINED__
6626 #define __IDataObject_INTERFACE_DEFINED__
6627
6628 DEFINE_GUID(IID_IDataObject, 0x0000010e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
6629 #if defined(__cplusplus) && !defined(CINTERFACE)
6630 struct IDataObject : public IUnknown
6631 {
6632     virtual HRESULT STDMETHODCALLTYPE GetData(
6633         FORMATETC* pformatetcIn,
6634         STGMEDIUM* pmedium) = 0;
6635
6636     virtual HRESULT STDMETHODCALLTYPE GetDataHere(
6637         FORMATETC* pformatetc,
6638         STGMEDIUM* pmedium) = 0;
6639
6640     virtual HRESULT STDMETHODCALLTYPE QueryGetData(
6641         FORMATETC* pformatetc) = 0;
6642
6643     virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(
6644         FORMATETC* pformatectIn,
6645         FORMATETC* pformatetcOut) = 0;
6646
6647     virtual HRESULT STDMETHODCALLTYPE SetData(
6648         FORMATETC* pformatetc,
6649         STGMEDIUM* pmedium,
6650         BOOL fRelease) = 0;
6651
6652     virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(
6653         DWORD dwDirection,
6654         IEnumFORMATETC** ppenumFormatEtc) = 0;
6655
6656     virtual HRESULT STDMETHODCALLTYPE DAdvise(
6657         FORMATETC* pformatetc,
6658         DWORD advf,
6659         IAdviseSink* pAdvSink,
6660         DWORD* pdwConnection) = 0;
6661
6662     virtual HRESULT STDMETHODCALLTYPE DUnadvise(
6663         DWORD dwConnection) = 0;
6664
6665     virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(
6666         IEnumSTATDATA** ppenumAdvise) = 0;
6667
6668 };
6669 #else
6670 typedef struct IDataObjectVtbl IDataObjectVtbl;
6671 struct IDataObject {
6672     const IDataObjectVtbl* lpVtbl;
6673 };
6674 struct IDataObjectVtbl {
6675     ICOM_MSVTABLE_COMPAT_FIELDS
6676
6677     /*** IUnknown methods ***/
6678     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6679         IDataObject* This,
6680         REFIID riid,
6681         void** ppvObject);
6682
6683     ULONG (STDMETHODCALLTYPE *AddRef)(
6684         IDataObject* This);
6685
6686     ULONG (STDMETHODCALLTYPE *Release)(
6687         IDataObject* This);
6688
6689     /*** IDataObject methods ***/
6690     HRESULT (STDMETHODCALLTYPE *GetData)(
6691         IDataObject* This,
6692         FORMATETC* pformatetcIn,
6693         STGMEDIUM* pmedium);
6694
6695     HRESULT (STDMETHODCALLTYPE *GetDataHere)(
6696         IDataObject* This,
6697         FORMATETC* pformatetc,
6698         STGMEDIUM* pmedium);
6699
6700     HRESULT (STDMETHODCALLTYPE *QueryGetData)(
6701         IDataObject* This,
6702         FORMATETC* pformatetc);
6703
6704     HRESULT (STDMETHODCALLTYPE *GetCanonicalFormatEtc)(
6705         IDataObject* This,
6706         FORMATETC* pformatectIn,
6707         FORMATETC* pformatetcOut);
6708
6709     HRESULT (STDMETHODCALLTYPE *SetData)(
6710         IDataObject* This,
6711         FORMATETC* pformatetc,
6712         STGMEDIUM* pmedium,
6713         BOOL fRelease);
6714
6715     HRESULT (STDMETHODCALLTYPE *EnumFormatEtc)(
6716         IDataObject* This,
6717         DWORD dwDirection,
6718         IEnumFORMATETC** ppenumFormatEtc);
6719
6720     HRESULT (STDMETHODCALLTYPE *DAdvise)(
6721         IDataObject* This,
6722         FORMATETC* pformatetc,
6723         DWORD advf,
6724         IAdviseSink* pAdvSink,
6725         DWORD* pdwConnection);
6726
6727     HRESULT (STDMETHODCALLTYPE *DUnadvise)(
6728         IDataObject* This,
6729         DWORD dwConnection);
6730
6731     HRESULT (STDMETHODCALLTYPE *EnumDAdvise)(
6732         IDataObject* This,
6733         IEnumSTATDATA** ppenumAdvise);
6734
6735 };
6736
6737 /*** IUnknown methods ***/
6738 #define IDataObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6739 #define IDataObject_AddRef(p) (p)->lpVtbl->AddRef(p)
6740 #define IDataObject_Release(p) (p)->lpVtbl->Release(p)
6741 /*** IDataObject methods ***/
6742 #define IDataObject_GetData(p,a,b) (p)->lpVtbl->GetData(p,a,b)
6743 #define IDataObject_GetDataHere(p,a,b) (p)->lpVtbl->GetDataHere(p,a,b)
6744 #define IDataObject_QueryGetData(p,a) (p)->lpVtbl->QueryGetData(p,a)
6745 #define IDataObject_GetCanonicalFormatEtc(p,a,b) (p)->lpVtbl->GetCanonicalFormatEtc(p,a,b)
6746 #define IDataObject_SetData(p,a,b,c) (p)->lpVtbl->SetData(p,a,b,c)
6747 #define IDataObject_EnumFormatEtc(p,a,b) (p)->lpVtbl->EnumFormatEtc(p,a,b)
6748 #define IDataObject_DAdvise(p,a,b,c,d) (p)->lpVtbl->DAdvise(p,a,b,c,d)
6749 #define IDataObject_DUnadvise(p,a) (p)->lpVtbl->DUnadvise(p,a)
6750 #define IDataObject_EnumDAdvise(p,a) (p)->lpVtbl->EnumDAdvise(p,a)
6751
6752 #endif
6753
6754 #define IDataObject_METHODS \
6755     ICOM_MSVTABLE_COMPAT_FIELDS \
6756     /*** IUnknown methods ***/ \
6757     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6758     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6759     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6760     /*** IDataObject methods ***/ \
6761     STDMETHOD_(HRESULT,GetData)(THIS_ FORMATETC* pformatetcIn, STGMEDIUM* pmedium) PURE; \
6762     STDMETHOD_(HRESULT,GetDataHere)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium) PURE; \
6763     STDMETHOD_(HRESULT,QueryGetData)(THIS_ FORMATETC* pformatetc) PURE; \
6764     STDMETHOD_(HRESULT,GetCanonicalFormatEtc)(THIS_ FORMATETC* pformatectIn, FORMATETC* pformatetcOut) PURE; \
6765     STDMETHOD_(HRESULT,SetData)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium, BOOL fRelease) PURE; \
6766     STDMETHOD_(HRESULT,EnumFormatEtc)(THIS_ DWORD dwDirection, IEnumFORMATETC** ppenumFormatEtc) PURE; \
6767     STDMETHOD_(HRESULT,DAdvise)(THIS_ FORMATETC* pformatetc, DWORD advf, IAdviseSink* pAdvSink, DWORD* pdwConnection) PURE; \
6768     STDMETHOD_(HRESULT,DUnadvise)(THIS_ DWORD dwConnection) PURE; \
6769     STDMETHOD_(HRESULT,EnumDAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE;
6770
6771 HRESULT CALLBACK IDataObject_RemoteGetData_Proxy(
6772     IDataObject* This,
6773     FORMATETC* pformatetcIn,
6774     STGMEDIUM* pRemoteMedium);
6775 void __RPC_STUB IDataObject_RemoteGetData_Stub(
6776     struct IRpcStubBuffer* This,
6777     struct IRpcChannelBuffer* pRpcChannelBuffer,
6778     PRPC_MESSAGE pRpcMessage,
6779     DWORD* pdwStubPhase);
6780 HRESULT CALLBACK IDataObject_GetData_Proxy(
6781     IDataObject* This,
6782     FORMATETC* pformatetcIn,
6783     STGMEDIUM* pmedium);
6784 HRESULT __RPC_STUB IDataObject_GetData_Stub(
6785     IDataObject* This,
6786     FORMATETC* pformatetcIn,
6787     STGMEDIUM* pRemoteMedium);
6788 HRESULT CALLBACK IDataObject_RemoteGetDataHere_Proxy(
6789     IDataObject* This,
6790     FORMATETC* pformatetc,
6791     STGMEDIUM* pRemoteMedium);
6792 void __RPC_STUB IDataObject_RemoteGetDataHere_Stub(
6793     struct IRpcStubBuffer* This,
6794     struct IRpcChannelBuffer* pRpcChannelBuffer,
6795     PRPC_MESSAGE pRpcMessage,
6796     DWORD* pdwStubPhase);
6797 HRESULT CALLBACK IDataObject_GetDataHere_Proxy(
6798     IDataObject* This,
6799     FORMATETC* pformatetc,
6800     STGMEDIUM* pmedium);
6801 HRESULT __RPC_STUB IDataObject_GetDataHere_Stub(
6802     IDataObject* This,
6803     FORMATETC* pformatetc,
6804     STGMEDIUM* pRemoteMedium);
6805 HRESULT CALLBACK IDataObject_QueryGetData_Proxy(
6806     IDataObject* This,
6807     FORMATETC* pformatetc);
6808 void __RPC_STUB IDataObject_QueryGetData_Stub(
6809     struct IRpcStubBuffer* This,
6810     struct IRpcChannelBuffer* pRpcChannelBuffer,
6811     PRPC_MESSAGE pRpcMessage,
6812     DWORD* pdwStubPhase);
6813 HRESULT CALLBACK IDataObject_GetCanonicalFormatEtc_Proxy(
6814     IDataObject* This,
6815     FORMATETC* pformatectIn,
6816     FORMATETC* pformatetcOut);
6817 void __RPC_STUB IDataObject_GetCanonicalFormatEtc_Stub(
6818     struct IRpcStubBuffer* This,
6819     struct IRpcChannelBuffer* pRpcChannelBuffer,
6820     PRPC_MESSAGE pRpcMessage,
6821     DWORD* pdwStubPhase);
6822 HRESULT CALLBACK IDataObject_RemoteSetData_Proxy(
6823     IDataObject* This,
6824     FORMATETC* pformatetc,
6825     FLAG_STGMEDIUM* pmedium,
6826     BOOL fRelease);
6827 void __RPC_STUB IDataObject_RemoteSetData_Stub(
6828     struct IRpcStubBuffer* This,
6829     struct IRpcChannelBuffer* pRpcChannelBuffer,
6830     PRPC_MESSAGE pRpcMessage,
6831     DWORD* pdwStubPhase);
6832 HRESULT CALLBACK IDataObject_SetData_Proxy(
6833     IDataObject* This,
6834     FORMATETC* pformatetc,
6835     STGMEDIUM* pmedium,
6836     BOOL fRelease);
6837 HRESULT __RPC_STUB IDataObject_SetData_Stub(
6838     IDataObject* This,
6839     FORMATETC* pformatetc,
6840     FLAG_STGMEDIUM* pmedium,
6841     BOOL fRelease);
6842 HRESULT CALLBACK IDataObject_EnumFormatEtc_Proxy(
6843     IDataObject* This,
6844     DWORD dwDirection,
6845     IEnumFORMATETC** ppenumFormatEtc);
6846 void __RPC_STUB IDataObject_EnumFormatEtc_Stub(
6847     struct IRpcStubBuffer* This,
6848     struct IRpcChannelBuffer* pRpcChannelBuffer,
6849     PRPC_MESSAGE pRpcMessage,
6850     DWORD* pdwStubPhase);
6851 HRESULT CALLBACK IDataObject_DAdvise_Proxy(
6852     IDataObject* This,
6853     FORMATETC* pformatetc,
6854     DWORD advf,
6855     IAdviseSink* pAdvSink,
6856     DWORD* pdwConnection);
6857 void __RPC_STUB IDataObject_DAdvise_Stub(
6858     struct IRpcStubBuffer* This,
6859     struct IRpcChannelBuffer* pRpcChannelBuffer,
6860     PRPC_MESSAGE pRpcMessage,
6861     DWORD* pdwStubPhase);
6862 HRESULT CALLBACK IDataObject_DUnadvise_Proxy(
6863     IDataObject* This,
6864     DWORD dwConnection);
6865 void __RPC_STUB IDataObject_DUnadvise_Stub(
6866     struct IRpcStubBuffer* This,
6867     struct IRpcChannelBuffer* pRpcChannelBuffer,
6868     PRPC_MESSAGE pRpcMessage,
6869     DWORD* pdwStubPhase);
6870 HRESULT CALLBACK IDataObject_EnumDAdvise_Proxy(
6871     IDataObject* This,
6872     IEnumSTATDATA** ppenumAdvise);
6873 void __RPC_STUB IDataObject_EnumDAdvise_Stub(
6874     struct IRpcStubBuffer* This,
6875     struct IRpcChannelBuffer* pRpcChannelBuffer,
6876     PRPC_MESSAGE pRpcMessage,
6877     DWORD* pdwStubPhase);
6878
6879 #endif  /* __IDataObject_INTERFACE_DEFINED__ */
6880
6881 #ifndef __IDataAdviseHolder_FWD_DEFINED__
6882 #define __IDataAdviseHolder_FWD_DEFINED__
6883 typedef struct IDataAdviseHolder IDataAdviseHolder;
6884 #endif
6885
6886 typedef IDataAdviseHolder *LPDATAADVISEHOLDER;
6887
6888 /*****************************************************************************
6889  * IDataAdviseHolder interface
6890  */
6891 #ifndef __IDataAdviseHolder_INTERFACE_DEFINED__
6892 #define __IDataAdviseHolder_INTERFACE_DEFINED__
6893
6894 DEFINE_GUID(IID_IDataAdviseHolder, 0x00000110, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
6895 #if defined(__cplusplus) && !defined(CINTERFACE)
6896 struct IDataAdviseHolder : public IUnknown
6897 {
6898     virtual HRESULT STDMETHODCALLTYPE Advise(
6899         IDataObject* pDataObject,
6900         FORMATETC* pFetc,
6901         DWORD advf,
6902         IAdviseSink* pAdvise,
6903         DWORD* pdwConnection) = 0;
6904
6905     virtual HRESULT STDMETHODCALLTYPE Unadvise(
6906         DWORD dwConnection) = 0;
6907
6908     virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
6909         IEnumSTATDATA** ppenumAdvise) = 0;
6910
6911     virtual HRESULT STDMETHODCALLTYPE SendOnDataChange(
6912         IDataObject* pDataObject,
6913         DWORD dwReserved,
6914         DWORD advf) = 0;
6915
6916 };
6917 #else
6918 typedef struct IDataAdviseHolderVtbl IDataAdviseHolderVtbl;
6919 struct IDataAdviseHolder {
6920     const IDataAdviseHolderVtbl* lpVtbl;
6921 };
6922 struct IDataAdviseHolderVtbl {
6923     ICOM_MSVTABLE_COMPAT_FIELDS
6924
6925     /*** IUnknown methods ***/
6926     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6927         IDataAdviseHolder* This,
6928         REFIID riid,
6929         void** ppvObject);
6930
6931     ULONG (STDMETHODCALLTYPE *AddRef)(
6932         IDataAdviseHolder* This);
6933
6934     ULONG (STDMETHODCALLTYPE *Release)(
6935         IDataAdviseHolder* This);
6936
6937     /*** IDataAdviseHolder methods ***/
6938     HRESULT (STDMETHODCALLTYPE *Advise)(
6939         IDataAdviseHolder* This,
6940         IDataObject* pDataObject,
6941         FORMATETC* pFetc,
6942         DWORD advf,
6943         IAdviseSink* pAdvise,
6944         DWORD* pdwConnection);
6945
6946     HRESULT (STDMETHODCALLTYPE *Unadvise)(
6947         IDataAdviseHolder* This,
6948         DWORD dwConnection);
6949
6950     HRESULT (STDMETHODCALLTYPE *EnumAdvise)(
6951         IDataAdviseHolder* This,
6952         IEnumSTATDATA** ppenumAdvise);
6953
6954     HRESULT (STDMETHODCALLTYPE *SendOnDataChange)(
6955         IDataAdviseHolder* This,
6956         IDataObject* pDataObject,
6957         DWORD dwReserved,
6958         DWORD advf);
6959
6960 };
6961
6962 /*** IUnknown methods ***/
6963 #define IDataAdviseHolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
6964 #define IDataAdviseHolder_AddRef(p) (p)->lpVtbl->AddRef(p)
6965 #define IDataAdviseHolder_Release(p) (p)->lpVtbl->Release(p)
6966 /*** IDataAdviseHolder methods ***/
6967 #define IDataAdviseHolder_Advise(p,a,b,c,d,e) (p)->lpVtbl->Advise(p,a,b,c,d,e)
6968 #define IDataAdviseHolder_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
6969 #define IDataAdviseHolder_EnumAdvise(p,a) (p)->lpVtbl->EnumAdvise(p,a)
6970 #define IDataAdviseHolder_SendOnDataChange(p,a,b,c) (p)->lpVtbl->SendOnDataChange(p,a,b,c)
6971
6972 #endif
6973
6974 #define IDataAdviseHolder_METHODS \
6975     ICOM_MSVTABLE_COMPAT_FIELDS \
6976     /*** IUnknown methods ***/ \
6977     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
6978     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
6979     STDMETHOD_(ULONG,Release)(THIS) PURE; \
6980     /*** IDataAdviseHolder methods ***/ \
6981     STDMETHOD_(HRESULT,Advise)(THIS_ IDataObject* pDataObject, FORMATETC* pFetc, DWORD advf, IAdviseSink* pAdvise, DWORD* pdwConnection) PURE; \
6982     STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD dwConnection) PURE; \
6983     STDMETHOD_(HRESULT,EnumAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE; \
6984     STDMETHOD_(HRESULT,SendOnDataChange)(THIS_ IDataObject* pDataObject, DWORD dwReserved, DWORD advf) PURE;
6985
6986 HRESULT CALLBACK IDataAdviseHolder_Advise_Proxy(
6987     IDataAdviseHolder* This,
6988     IDataObject* pDataObject,
6989     FORMATETC* pFetc,
6990     DWORD advf,
6991     IAdviseSink* pAdvise,
6992     DWORD* pdwConnection);
6993 void __RPC_STUB IDataAdviseHolder_Advise_Stub(
6994     struct IRpcStubBuffer* This,
6995     struct IRpcChannelBuffer* pRpcChannelBuffer,
6996     PRPC_MESSAGE pRpcMessage,
6997     DWORD* pdwStubPhase);
6998 HRESULT CALLBACK IDataAdviseHolder_Unadvise_Proxy(
6999     IDataAdviseHolder* This,
7000     DWORD dwConnection);
7001 void __RPC_STUB IDataAdviseHolder_Unadvise_Stub(
7002     struct IRpcStubBuffer* This,
7003     struct IRpcChannelBuffer* pRpcChannelBuffer,
7004     PRPC_MESSAGE pRpcMessage,
7005     DWORD* pdwStubPhase);
7006 HRESULT CALLBACK IDataAdviseHolder_EnumAdvise_Proxy(
7007     IDataAdviseHolder* This,
7008     IEnumSTATDATA** ppenumAdvise);
7009 void __RPC_STUB IDataAdviseHolder_EnumAdvise_Stub(
7010     struct IRpcStubBuffer* This,
7011     struct IRpcChannelBuffer* pRpcChannelBuffer,
7012     PRPC_MESSAGE pRpcMessage,
7013     DWORD* pdwStubPhase);
7014 HRESULT CALLBACK IDataAdviseHolder_SendOnDataChange_Proxy(
7015     IDataAdviseHolder* This,
7016     IDataObject* pDataObject,
7017     DWORD dwReserved,
7018     DWORD advf);
7019 void __RPC_STUB IDataAdviseHolder_SendOnDataChange_Stub(
7020     struct IRpcStubBuffer* This,
7021     struct IRpcChannelBuffer* pRpcChannelBuffer,
7022     PRPC_MESSAGE pRpcMessage,
7023     DWORD* pdwStubPhase);
7024
7025 #endif  /* __IDataAdviseHolder_INTERFACE_DEFINED__ */
7026
7027 #ifndef __IMessageFilter_FWD_DEFINED__
7028 #define __IMessageFilter_FWD_DEFINED__
7029 typedef struct IMessageFilter IMessageFilter;
7030 #endif
7031
7032 typedef IMessageFilter *LPMESSAGEFILTER;
7033
7034 typedef enum tagCALLTYPE {
7035     CALLTYPE_TOPLEVEL = 1,
7036     CALLTYPE_NESTED = 2,
7037     CALLTYPE_ASYNC = 3,
7038     CALLTYPE_TOPLEVEL_CALLPENDING = 4,
7039     CALLTYPE_ASYNC_CALLPENDING = 5
7040 } CALLTYPE;
7041
7042 typedef enum tagSERVERCALL {
7043     SERVERCALL_ISHANDLED = 0,
7044     SERVERCALL_REJECTED = 1,
7045     SERVERCALL_RETRYLATER = 2
7046 } SERVERCALL;
7047
7048 typedef enum tagPENDINGTYPE {
7049     PENDINGTYPE_TOPLEVEL = 1,
7050     PENDINGTYPE_NESTED = 2
7051 } PENDINGTYPE;
7052
7053 typedef enum tagPENDINGMSG {
7054     PENDINGMSG_CANCELCALL = 0,
7055     PENDINGMSG_WAITNOPROCESS = 1,
7056     PENDINGMSG_WAITDEFPROCESS = 2
7057 } PENDINGMSG;
7058
7059 typedef struct tagINTERFACEINFO {
7060     IUnknown *pUnk;
7061     IID iid;
7062     WORD wMethod;
7063 } INTERFACEINFO, *LPINTERFACEINFO;
7064
7065 /*****************************************************************************
7066  * IMessageFilter interface
7067  */
7068 #ifndef __IMessageFilter_INTERFACE_DEFINED__
7069 #define __IMessageFilter_INTERFACE_DEFINED__
7070
7071 DEFINE_GUID(IID_IMessageFilter, 0x00000016, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
7072 #if defined(__cplusplus) && !defined(CINTERFACE)
7073 struct IMessageFilter : public IUnknown
7074 {
7075     virtual DWORD STDMETHODCALLTYPE HandleInComingCall(
7076         DWORD dwCallType,
7077         HTASK htaskCaller,
7078         DWORD dwTickCount,
7079         LPINTERFACEINFO lpInterfaceInfo) = 0;
7080
7081     virtual DWORD STDMETHODCALLTYPE RetryRejectedCall(
7082         HTASK htaskCallee,
7083         DWORD dwTickCount,
7084         DWORD dwRejectType) = 0;
7085
7086     virtual DWORD STDMETHODCALLTYPE MessagePending(
7087         HTASK htaskCallee,
7088         DWORD dwTickCount,
7089         DWORD dwPendingType) = 0;
7090
7091 };
7092 #else
7093 typedef struct IMessageFilterVtbl IMessageFilterVtbl;
7094 struct IMessageFilter {
7095     const IMessageFilterVtbl* lpVtbl;
7096 };
7097 struct IMessageFilterVtbl {
7098     ICOM_MSVTABLE_COMPAT_FIELDS
7099
7100     /*** IUnknown methods ***/
7101     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7102         IMessageFilter* This,
7103         REFIID riid,
7104         void** ppvObject);
7105
7106     ULONG (STDMETHODCALLTYPE *AddRef)(
7107         IMessageFilter* This);
7108
7109     ULONG (STDMETHODCALLTYPE *Release)(
7110         IMessageFilter* This);
7111
7112     /*** IMessageFilter methods ***/
7113     DWORD (STDMETHODCALLTYPE *HandleInComingCall)(
7114         IMessageFilter* This,
7115         DWORD dwCallType,
7116         HTASK htaskCaller,
7117         DWORD dwTickCount,
7118         LPINTERFACEINFO lpInterfaceInfo);
7119
7120     DWORD (STDMETHODCALLTYPE *RetryRejectedCall)(
7121         IMessageFilter* This,
7122         HTASK htaskCallee,
7123         DWORD dwTickCount,
7124         DWORD dwRejectType);
7125
7126     DWORD (STDMETHODCALLTYPE *MessagePending)(
7127         IMessageFilter* This,
7128         HTASK htaskCallee,
7129         DWORD dwTickCount,
7130         DWORD dwPendingType);
7131
7132 };
7133
7134 /*** IUnknown methods ***/
7135 #define IMessageFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7136 #define IMessageFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
7137 #define IMessageFilter_Release(p) (p)->lpVtbl->Release(p)
7138 /*** IMessageFilter methods ***/
7139 #define IMessageFilter_HandleInComingCall(p,a,b,c,d) (p)->lpVtbl->HandleInComingCall(p,a,b,c,d)
7140 #define IMessageFilter_RetryRejectedCall(p,a,b,c) (p)->lpVtbl->RetryRejectedCall(p,a,b,c)
7141 #define IMessageFilter_MessagePending(p,a,b,c) (p)->lpVtbl->MessagePending(p,a,b,c)
7142
7143 #endif
7144
7145 #define IMessageFilter_METHODS \
7146     ICOM_MSVTABLE_COMPAT_FIELDS \
7147     /*** IUnknown methods ***/ \
7148     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7149     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7150     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7151     /*** IMessageFilter methods ***/ \
7152     STDMETHOD_(DWORD,HandleInComingCall)(THIS_ DWORD dwCallType, HTASK htaskCaller, DWORD dwTickCount, LPINTERFACEINFO lpInterfaceInfo) PURE; \
7153     STDMETHOD_(DWORD,RetryRejectedCall)(THIS_ HTASK htaskCallee, DWORD dwTickCount, DWORD dwRejectType) PURE; \
7154     STDMETHOD_(DWORD,MessagePending)(THIS_ HTASK htaskCallee, DWORD dwTickCount, DWORD dwPendingType) PURE;
7155
7156 DWORD CALLBACK IMessageFilter_HandleInComingCall_Proxy(
7157     IMessageFilter* This,
7158     DWORD dwCallType,
7159     HTASK htaskCaller,
7160     DWORD dwTickCount,
7161     LPINTERFACEINFO lpInterfaceInfo);
7162 void __RPC_STUB IMessageFilter_HandleInComingCall_Stub(
7163     struct IRpcStubBuffer* This,
7164     struct IRpcChannelBuffer* pRpcChannelBuffer,
7165     PRPC_MESSAGE pRpcMessage,
7166     DWORD* pdwStubPhase);
7167 DWORD CALLBACK IMessageFilter_RetryRejectedCall_Proxy(
7168     IMessageFilter* This,
7169     HTASK htaskCallee,
7170     DWORD dwTickCount,
7171     DWORD dwRejectType);
7172 void __RPC_STUB IMessageFilter_RetryRejectedCall_Stub(
7173     struct IRpcStubBuffer* This,
7174     struct IRpcChannelBuffer* pRpcChannelBuffer,
7175     PRPC_MESSAGE pRpcMessage,
7176     DWORD* pdwStubPhase);
7177 DWORD CALLBACK IMessageFilter_MessagePending_Proxy(
7178     IMessageFilter* This,
7179     HTASK htaskCallee,
7180     DWORD dwTickCount,
7181     DWORD dwPendingType);
7182 void __RPC_STUB IMessageFilter_MessagePending_Stub(
7183     struct IRpcStubBuffer* This,
7184     struct IRpcChannelBuffer* pRpcChannelBuffer,
7185     PRPC_MESSAGE pRpcMessage,
7186     DWORD* pdwStubPhase);
7187
7188 #endif  /* __IMessageFilter_INTERFACE_DEFINED__ */
7189
7190 #ifndef __IRpcChannelBuffer_FWD_DEFINED__
7191 #define __IRpcChannelBuffer_FWD_DEFINED__
7192 typedef struct IRpcChannelBuffer IRpcChannelBuffer;
7193 #endif
7194
7195 typedef IRpcChannelBuffer *LPRPCCHANNELBUFFER;
7196
7197 typedef unsigned long RPCOLEDATAREP;
7198
7199 typedef struct tagRPCOLEMESSAGE {
7200     void *reserved1;
7201     RPCOLEDATAREP dataRepresentation;
7202     void *Buffer;
7203     ULONG cbBuffer;
7204     ULONG iMethod;
7205     void *reserved2[5];
7206     ULONG rpcFlags;
7207 } RPCOLEMESSAGE;
7208
7209 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
7210
7211 /*****************************************************************************
7212  * IRpcChannelBuffer interface
7213  */
7214 #ifndef __IRpcChannelBuffer_INTERFACE_DEFINED__
7215 #define __IRpcChannelBuffer_INTERFACE_DEFINED__
7216
7217 DEFINE_GUID(IID_IRpcChannelBuffer, 0xd5f56b60, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
7218 #if defined(__cplusplus) && !defined(CINTERFACE)
7219 struct IRpcChannelBuffer : public IUnknown
7220 {
7221     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
7222         RPCOLEMESSAGE* pMessage,
7223         REFIID riid) = 0;
7224
7225     virtual HRESULT STDMETHODCALLTYPE SendReceive(
7226         RPCOLEMESSAGE* pMessage,
7227         ULONG* pStatus) = 0;
7228
7229     virtual HRESULT STDMETHODCALLTYPE FreeBuffer(
7230         RPCOLEMESSAGE* pMessage) = 0;
7231
7232     virtual HRESULT STDMETHODCALLTYPE GetDestCtx(
7233         DWORD* pdwDestContext,
7234         void** ppvDestContext) = 0;
7235
7236     virtual HRESULT STDMETHODCALLTYPE IsConnected(
7237         ) = 0;
7238
7239 };
7240 #else
7241 typedef struct IRpcChannelBufferVtbl IRpcChannelBufferVtbl;
7242 struct IRpcChannelBuffer {
7243     const IRpcChannelBufferVtbl* lpVtbl;
7244 };
7245 struct IRpcChannelBufferVtbl {
7246     ICOM_MSVTABLE_COMPAT_FIELDS
7247
7248     /*** IUnknown methods ***/
7249     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7250         IRpcChannelBuffer* This,
7251         REFIID riid,
7252         void** ppvObject);
7253
7254     ULONG (STDMETHODCALLTYPE *AddRef)(
7255         IRpcChannelBuffer* This);
7256
7257     ULONG (STDMETHODCALLTYPE *Release)(
7258         IRpcChannelBuffer* This);
7259
7260     /*** IRpcChannelBuffer methods ***/
7261     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
7262         IRpcChannelBuffer* This,
7263         RPCOLEMESSAGE* pMessage,
7264         REFIID riid);
7265
7266     HRESULT (STDMETHODCALLTYPE *SendReceive)(
7267         IRpcChannelBuffer* This,
7268         RPCOLEMESSAGE* pMessage,
7269         ULONG* pStatus);
7270
7271     HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
7272         IRpcChannelBuffer* This,
7273         RPCOLEMESSAGE* pMessage);
7274
7275     HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
7276         IRpcChannelBuffer* This,
7277         DWORD* pdwDestContext,
7278         void** ppvDestContext);
7279
7280     HRESULT (STDMETHODCALLTYPE *IsConnected)(
7281         IRpcChannelBuffer* This);
7282
7283 };
7284
7285 /*** IUnknown methods ***/
7286 #define IRpcChannelBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7287 #define IRpcChannelBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
7288 #define IRpcChannelBuffer_Release(p) (p)->lpVtbl->Release(p)
7289 /*** IRpcChannelBuffer methods ***/
7290 #define IRpcChannelBuffer_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
7291 #define IRpcChannelBuffer_SendReceive(p,a,b) (p)->lpVtbl->SendReceive(p,a,b)
7292 #define IRpcChannelBuffer_FreeBuffer(p,a) (p)->lpVtbl->FreeBuffer(p,a)
7293 #define IRpcChannelBuffer_GetDestCtx(p,a,b) (p)->lpVtbl->GetDestCtx(p,a,b)
7294 #define IRpcChannelBuffer_IsConnected(p) (p)->lpVtbl->IsConnected(p)
7295
7296 #endif
7297
7298 #define IRpcChannelBuffer_METHODS \
7299     ICOM_MSVTABLE_COMPAT_FIELDS \
7300     /*** IUnknown methods ***/ \
7301     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7302     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7303     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7304     /*** IRpcChannelBuffer methods ***/ \
7305     STDMETHOD_(HRESULT,GetBuffer)(THIS_ RPCOLEMESSAGE* pMessage, REFIID riid) PURE; \
7306     STDMETHOD_(HRESULT,SendReceive)(THIS_ RPCOLEMESSAGE* pMessage, ULONG* pStatus) PURE; \
7307     STDMETHOD_(HRESULT,FreeBuffer)(THIS_ RPCOLEMESSAGE* pMessage) PURE; \
7308     STDMETHOD_(HRESULT,GetDestCtx)(THIS_ DWORD* pdwDestContext, void** ppvDestContext) PURE; \
7309     STDMETHOD_(HRESULT,IsConnected)(THIS) PURE;
7310
7311 HRESULT CALLBACK IRpcChannelBuffer_GetBuffer_Proxy(
7312     IRpcChannelBuffer* This,
7313     RPCOLEMESSAGE* pMessage,
7314     REFIID riid);
7315 void __RPC_STUB IRpcChannelBuffer_GetBuffer_Stub(
7316     struct IRpcStubBuffer* This,
7317     struct IRpcChannelBuffer* pRpcChannelBuffer,
7318     PRPC_MESSAGE pRpcMessage,
7319     DWORD* pdwStubPhase);
7320 HRESULT CALLBACK IRpcChannelBuffer_SendReceive_Proxy(
7321     IRpcChannelBuffer* This,
7322     RPCOLEMESSAGE* pMessage,
7323     ULONG* pStatus);
7324 void __RPC_STUB IRpcChannelBuffer_SendReceive_Stub(
7325     struct IRpcStubBuffer* This,
7326     struct IRpcChannelBuffer* pRpcChannelBuffer,
7327     PRPC_MESSAGE pRpcMessage,
7328     DWORD* pdwStubPhase);
7329 HRESULT CALLBACK IRpcChannelBuffer_FreeBuffer_Proxy(
7330     IRpcChannelBuffer* This,
7331     RPCOLEMESSAGE* pMessage);
7332 void __RPC_STUB IRpcChannelBuffer_FreeBuffer_Stub(
7333     struct IRpcStubBuffer* This,
7334     struct IRpcChannelBuffer* pRpcChannelBuffer,
7335     PRPC_MESSAGE pRpcMessage,
7336     DWORD* pdwStubPhase);
7337 HRESULT CALLBACK IRpcChannelBuffer_GetDestCtx_Proxy(
7338     IRpcChannelBuffer* This,
7339     DWORD* pdwDestContext,
7340     void** ppvDestContext);
7341 void __RPC_STUB IRpcChannelBuffer_GetDestCtx_Stub(
7342     struct IRpcStubBuffer* This,
7343     struct IRpcChannelBuffer* pRpcChannelBuffer,
7344     PRPC_MESSAGE pRpcMessage,
7345     DWORD* pdwStubPhase);
7346 HRESULT CALLBACK IRpcChannelBuffer_IsConnected_Proxy(
7347     IRpcChannelBuffer* This);
7348 void __RPC_STUB IRpcChannelBuffer_IsConnected_Stub(
7349     struct IRpcStubBuffer* This,
7350     struct IRpcChannelBuffer* pRpcChannelBuffer,
7351     PRPC_MESSAGE pRpcMessage,
7352     DWORD* pdwStubPhase);
7353
7354 #endif  /* __IRpcChannelBuffer_INTERFACE_DEFINED__ */
7355
7356 #ifndef __IRpcChannelBuffer2_FWD_DEFINED__
7357 #define __IRpcChannelBuffer2_FWD_DEFINED__
7358 typedef struct IRpcChannelBuffer2 IRpcChannelBuffer2;
7359 #endif
7360
7361 typedef IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
7362
7363 /*****************************************************************************
7364  * IRpcChannelBuffer2 interface
7365  */
7366 #ifndef __IRpcChannelBuffer2_INTERFACE_DEFINED__
7367 #define __IRpcChannelBuffer2_INTERFACE_DEFINED__
7368
7369 DEFINE_GUID(IID_IRpcChannelBuffer2, 0x594f31d0, 0x7f19, 0x11d0, 0xb1,0x94, 0x00,0xa0,0xc9,0x0d,0xc8,0xbf);
7370 #if defined(__cplusplus) && !defined(CINTERFACE)
7371 struct IRpcChannelBuffer2 : public IRpcChannelBuffer
7372 {
7373     virtual HRESULT STDMETHODCALLTYPE GetProtocolVersion(
7374         DWORD* pdwVersion) = 0;
7375
7376 };
7377 #else
7378 typedef struct IRpcChannelBuffer2Vtbl IRpcChannelBuffer2Vtbl;
7379 struct IRpcChannelBuffer2 {
7380     const IRpcChannelBuffer2Vtbl* lpVtbl;
7381 };
7382 struct IRpcChannelBuffer2Vtbl {
7383     ICOM_MSVTABLE_COMPAT_FIELDS
7384
7385     /*** IUnknown methods ***/
7386     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7387         IRpcChannelBuffer2* This,
7388         REFIID riid,
7389         void** ppvObject);
7390
7391     ULONG (STDMETHODCALLTYPE *AddRef)(
7392         IRpcChannelBuffer2* This);
7393
7394     ULONG (STDMETHODCALLTYPE *Release)(
7395         IRpcChannelBuffer2* This);
7396
7397     /*** IRpcChannelBuffer methods ***/
7398     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
7399         IRpcChannelBuffer2* This,
7400         RPCOLEMESSAGE* pMessage,
7401         REFIID riid);
7402
7403     HRESULT (STDMETHODCALLTYPE *SendReceive)(
7404         IRpcChannelBuffer2* This,
7405         RPCOLEMESSAGE* pMessage,
7406         ULONG* pStatus);
7407
7408     HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
7409         IRpcChannelBuffer2* This,
7410         RPCOLEMESSAGE* pMessage);
7411
7412     HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
7413         IRpcChannelBuffer2* This,
7414         DWORD* pdwDestContext,
7415         void** ppvDestContext);
7416
7417     HRESULT (STDMETHODCALLTYPE *IsConnected)(
7418         IRpcChannelBuffer2* This);
7419
7420     /*** IRpcChannelBuffer2 methods ***/
7421     HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
7422         IRpcChannelBuffer2* This,
7423         DWORD* pdwVersion);
7424
7425 };
7426
7427 /*** IUnknown methods ***/
7428 #define IRpcChannelBuffer2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7429 #define IRpcChannelBuffer2_AddRef(p) (p)->lpVtbl->AddRef(p)
7430 #define IRpcChannelBuffer2_Release(p) (p)->lpVtbl->Release(p)
7431 /*** IRpcChannelBuffer methods ***/
7432 #define IRpcChannelBuffer2_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
7433 #define IRpcChannelBuffer2_SendReceive(p,a,b) (p)->lpVtbl->SendReceive(p,a,b)
7434 #define IRpcChannelBuffer2_FreeBuffer(p,a) (p)->lpVtbl->FreeBuffer(p,a)
7435 #define IRpcChannelBuffer2_GetDestCtx(p,a,b) (p)->lpVtbl->GetDestCtx(p,a,b)
7436 #define IRpcChannelBuffer2_IsConnected(p) (p)->lpVtbl->IsConnected(p)
7437 /*** IRpcChannelBuffer2 methods ***/
7438 #define IRpcChannelBuffer2_GetProtocolVersion(p,a) (p)->lpVtbl->GetProtocolVersion(p,a)
7439
7440 #endif
7441
7442 #define IRpcChannelBuffer2_METHODS \
7443     ICOM_MSVTABLE_COMPAT_FIELDS \
7444     /*** IUnknown methods ***/ \
7445     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7446     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7447     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7448     /*** IRpcChannelBuffer methods ***/ \
7449     STDMETHOD_(HRESULT,GetBuffer)(THIS_ RPCOLEMESSAGE* pMessage, REFIID riid) PURE; \
7450     STDMETHOD_(HRESULT,SendReceive)(THIS_ RPCOLEMESSAGE* pMessage, ULONG* pStatus) PURE; \
7451     STDMETHOD_(HRESULT,FreeBuffer)(THIS_ RPCOLEMESSAGE* pMessage) PURE; \
7452     STDMETHOD_(HRESULT,GetDestCtx)(THIS_ DWORD* pdwDestContext, void** ppvDestContext) PURE; \
7453     STDMETHOD_(HRESULT,IsConnected)(THIS) PURE; \
7454     /*** IRpcChannelBuffer2 methods ***/ \
7455     STDMETHOD_(HRESULT,GetProtocolVersion)(THIS_ DWORD* pdwVersion) PURE;
7456
7457 HRESULT CALLBACK IRpcChannelBuffer2_GetProtocolVersion_Proxy(
7458     IRpcChannelBuffer2* This,
7459     DWORD* pdwVersion);
7460 void __RPC_STUB IRpcChannelBuffer2_GetProtocolVersion_Stub(
7461     struct IRpcStubBuffer* This,
7462     struct IRpcChannelBuffer* pRpcChannelBuffer,
7463     PRPC_MESSAGE pRpcMessage,
7464     DWORD* pdwStubPhase);
7465
7466 #endif  /* __IRpcChannelBuffer2_INTERFACE_DEFINED__ */
7467
7468 #ifndef __IRpcChannelBuffer3_FWD_DEFINED__
7469 #define __IRpcChannelBuffer3_FWD_DEFINED__
7470 typedef struct IRpcChannelBuffer3 IRpcChannelBuffer3;
7471 #endif
7472
7473 typedef IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
7474
7475 /*****************************************************************************
7476  * IRpcChannelBuffer3 interface
7477  */
7478 #ifndef __IRpcChannelBuffer3_INTERFACE_DEFINED__
7479 #define __IRpcChannelBuffer3_INTERFACE_DEFINED__
7480
7481 DEFINE_GUID(IID_IRpcChannelBuffer3, 0x25b15600, 0x0115, 0x11d0, 0xbf,0x0d, 0x00,0xaa,0x00,0xb8,0xdf,0xd2);
7482 #if defined(__cplusplus) && !defined(CINTERFACE)
7483 struct IRpcChannelBuffer3 : public IRpcChannelBuffer2
7484 {
7485     virtual HRESULT STDMETHODCALLTYPE Send(
7486         RPCOLEMESSAGE* pMsg,
7487         ULONG* pulStatus) = 0;
7488
7489     virtual HRESULT STDMETHODCALLTYPE Receive(
7490         RPCOLEMESSAGE* pMsg,
7491         ULONG ulSize,
7492         ULONG* pulStatus) = 0;
7493
7494     virtual HRESULT STDMETHODCALLTYPE Cancel(
7495         RPCOLEMESSAGE* pMsg) = 0;
7496
7497     virtual HRESULT STDMETHODCALLTYPE GetCallContext(
7498         RPCOLEMESSAGE* pMsg,
7499         REFIID riid,
7500         void** pInterface) = 0;
7501
7502     virtual HRESULT STDMETHODCALLTYPE GetDestCtxEx(
7503         RPCOLEMESSAGE* pMsg,
7504         DWORD* pdwDestContext,
7505         void** ppvDestContext) = 0;
7506
7507     virtual HRESULT STDMETHODCALLTYPE GetState(
7508         RPCOLEMESSAGE* pMsg,
7509         DWORD* pState) = 0;
7510
7511     virtual HRESULT STDMETHODCALLTYPE RegisterAsync(
7512         RPCOLEMESSAGE* pMsg,
7513         IAsyncManager* pAsyncMgr) = 0;
7514
7515 };
7516 #else
7517 typedef struct IRpcChannelBuffer3Vtbl IRpcChannelBuffer3Vtbl;
7518 struct IRpcChannelBuffer3 {
7519     const IRpcChannelBuffer3Vtbl* lpVtbl;
7520 };
7521 struct IRpcChannelBuffer3Vtbl {
7522     ICOM_MSVTABLE_COMPAT_FIELDS
7523
7524     /*** IUnknown methods ***/
7525     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7526         IRpcChannelBuffer3* This,
7527         REFIID riid,
7528         void** ppvObject);
7529
7530     ULONG (STDMETHODCALLTYPE *AddRef)(
7531         IRpcChannelBuffer3* This);
7532
7533     ULONG (STDMETHODCALLTYPE *Release)(
7534         IRpcChannelBuffer3* This);
7535
7536     /*** IRpcChannelBuffer methods ***/
7537     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
7538         IRpcChannelBuffer3* This,
7539         RPCOLEMESSAGE* pMessage,
7540         REFIID riid);
7541
7542     HRESULT (STDMETHODCALLTYPE *SendReceive)(
7543         IRpcChannelBuffer3* This,
7544         RPCOLEMESSAGE* pMessage,
7545         ULONG* pStatus);
7546
7547     HRESULT (STDMETHODCALLTYPE *FreeBuffer)(
7548         IRpcChannelBuffer3* This,
7549         RPCOLEMESSAGE* pMessage);
7550
7551     HRESULT (STDMETHODCALLTYPE *GetDestCtx)(
7552         IRpcChannelBuffer3* This,
7553         DWORD* pdwDestContext,
7554         void** ppvDestContext);
7555
7556     HRESULT (STDMETHODCALLTYPE *IsConnected)(
7557         IRpcChannelBuffer3* This);
7558
7559     /*** IRpcChannelBuffer2 methods ***/
7560     HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)(
7561         IRpcChannelBuffer3* This,
7562         DWORD* pdwVersion);
7563
7564     /*** IRpcChannelBuffer3 methods ***/
7565     HRESULT (STDMETHODCALLTYPE *Send)(
7566         IRpcChannelBuffer3* This,
7567         RPCOLEMESSAGE* pMsg,
7568         ULONG* pulStatus);
7569
7570     HRESULT (STDMETHODCALLTYPE *Receive)(
7571         IRpcChannelBuffer3* This,
7572         RPCOLEMESSAGE* pMsg,
7573         ULONG ulSize,
7574         ULONG* pulStatus);
7575
7576     HRESULT (STDMETHODCALLTYPE *Cancel)(
7577         IRpcChannelBuffer3* This,
7578         RPCOLEMESSAGE* pMsg);
7579
7580     HRESULT (STDMETHODCALLTYPE *GetCallContext)(
7581         IRpcChannelBuffer3* This,
7582         RPCOLEMESSAGE* pMsg,
7583         REFIID riid,
7584         void** pInterface);
7585
7586     HRESULT (STDMETHODCALLTYPE *GetDestCtxEx)(
7587         IRpcChannelBuffer3* This,
7588         RPCOLEMESSAGE* pMsg,
7589         DWORD* pdwDestContext,
7590         void** ppvDestContext);
7591
7592     HRESULT (STDMETHODCALLTYPE *GetState)(
7593         IRpcChannelBuffer3* This,
7594         RPCOLEMESSAGE* pMsg,
7595         DWORD* pState);
7596
7597     HRESULT (STDMETHODCALLTYPE *RegisterAsync)(
7598         IRpcChannelBuffer3* This,
7599         RPCOLEMESSAGE* pMsg,
7600         IAsyncManager* pAsyncMgr);
7601
7602 };
7603
7604 /*** IUnknown methods ***/
7605 #define IRpcChannelBuffer3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7606 #define IRpcChannelBuffer3_AddRef(p) (p)->lpVtbl->AddRef(p)
7607 #define IRpcChannelBuffer3_Release(p) (p)->lpVtbl->Release(p)
7608 /*** IRpcChannelBuffer methods ***/
7609 #define IRpcChannelBuffer3_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b)
7610 #define IRpcChannelBuffer3_SendReceive(p,a,b) (p)->lpVtbl->SendReceive(p,a,b)
7611 #define IRpcChannelBuffer3_FreeBuffer(p,a) (p)->lpVtbl->FreeBuffer(p,a)
7612 #define IRpcChannelBuffer3_GetDestCtx(p,a,b) (p)->lpVtbl->GetDestCtx(p,a,b)
7613 #define IRpcChannelBuffer3_IsConnected(p) (p)->lpVtbl->IsConnected(p)
7614 /*** IRpcChannelBuffer2 methods ***/
7615 #define IRpcChannelBuffer3_GetProtocolVersion(p,a) (p)->lpVtbl->GetProtocolVersion(p,a)
7616 /*** IRpcChannelBuffer3 methods ***/
7617 #define IRpcChannelBuffer3_Send(p,a,b) (p)->lpVtbl->Send(p,a,b)
7618 #define IRpcChannelBuffer3_Receive(p,a,b,c) (p)->lpVtbl->Receive(p,a,b,c)
7619 #define IRpcChannelBuffer3_Cancel(p,a) (p)->lpVtbl->Cancel(p,a)
7620 #define IRpcChannelBuffer3_GetCallContext(p,a,b,c) (p)->lpVtbl->GetCallContext(p,a,b,c)
7621 #define IRpcChannelBuffer3_GetDestCtxEx(p,a,b,c) (p)->lpVtbl->GetDestCtxEx(p,a,b,c)
7622 #define IRpcChannelBuffer3_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
7623 #define IRpcChannelBuffer3_RegisterAsync(p,a,b) (p)->lpVtbl->RegisterAsync(p,a,b)
7624
7625 #endif
7626
7627 #define IRpcChannelBuffer3_METHODS \
7628     ICOM_MSVTABLE_COMPAT_FIELDS \
7629     /*** IUnknown methods ***/ \
7630     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7631     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7632     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7633     /*** IRpcChannelBuffer methods ***/ \
7634     STDMETHOD_(HRESULT,GetBuffer)(THIS_ RPCOLEMESSAGE* pMessage, REFIID riid) PURE; \
7635     STDMETHOD_(HRESULT,SendReceive)(THIS_ RPCOLEMESSAGE* pMessage, ULONG* pStatus) PURE; \
7636     STDMETHOD_(HRESULT,FreeBuffer)(THIS_ RPCOLEMESSAGE* pMessage) PURE; \
7637     STDMETHOD_(HRESULT,GetDestCtx)(THIS_ DWORD* pdwDestContext, void** ppvDestContext) PURE; \
7638     STDMETHOD_(HRESULT,IsConnected)(THIS) PURE; \
7639     /*** IRpcChannelBuffer2 methods ***/ \
7640     STDMETHOD_(HRESULT,GetProtocolVersion)(THIS_ DWORD* pdwVersion) PURE; \
7641     /*** IRpcChannelBuffer3 methods ***/ \
7642     STDMETHOD_(HRESULT,Send)(THIS_ RPCOLEMESSAGE* pMsg, ULONG* pulStatus) PURE; \
7643     STDMETHOD_(HRESULT,Receive)(THIS_ RPCOLEMESSAGE* pMsg, ULONG ulSize, ULONG* pulStatus) PURE; \
7644     STDMETHOD_(HRESULT,Cancel)(THIS_ RPCOLEMESSAGE* pMsg) PURE; \
7645     STDMETHOD_(HRESULT,GetCallContext)(THIS_ RPCOLEMESSAGE* pMsg, REFIID riid, void** pInterface) PURE; \
7646     STDMETHOD_(HRESULT,GetDestCtxEx)(THIS_ RPCOLEMESSAGE* pMsg, DWORD* pdwDestContext, void** ppvDestContext) PURE; \
7647     STDMETHOD_(HRESULT,GetState)(THIS_ RPCOLEMESSAGE* pMsg, DWORD* pState) PURE; \
7648     STDMETHOD_(HRESULT,RegisterAsync)(THIS_ RPCOLEMESSAGE* pMsg, IAsyncManager* pAsyncMgr) PURE;
7649
7650 HRESULT CALLBACK IRpcChannelBuffer3_Send_Proxy(
7651     IRpcChannelBuffer3* This,
7652     RPCOLEMESSAGE* pMsg,
7653     ULONG* pulStatus);
7654 void __RPC_STUB IRpcChannelBuffer3_Send_Stub(
7655     struct IRpcStubBuffer* This,
7656     struct IRpcChannelBuffer* pRpcChannelBuffer,
7657     PRPC_MESSAGE pRpcMessage,
7658     DWORD* pdwStubPhase);
7659 HRESULT CALLBACK IRpcChannelBuffer3_Receive_Proxy(
7660     IRpcChannelBuffer3* This,
7661     RPCOLEMESSAGE* pMsg,
7662     ULONG ulSize,
7663     ULONG* pulStatus);
7664 void __RPC_STUB IRpcChannelBuffer3_Receive_Stub(
7665     struct IRpcStubBuffer* This,
7666     struct IRpcChannelBuffer* pRpcChannelBuffer,
7667     PRPC_MESSAGE pRpcMessage,
7668     DWORD* pdwStubPhase);
7669 HRESULT CALLBACK IRpcChannelBuffer3_Cancel_Proxy(
7670     IRpcChannelBuffer3* This,
7671     RPCOLEMESSAGE* pMsg);
7672 void __RPC_STUB IRpcChannelBuffer3_Cancel_Stub(
7673     struct IRpcStubBuffer* This,
7674     struct IRpcChannelBuffer* pRpcChannelBuffer,
7675     PRPC_MESSAGE pRpcMessage,
7676     DWORD* pdwStubPhase);
7677 HRESULT CALLBACK IRpcChannelBuffer3_GetCallContext_Proxy(
7678     IRpcChannelBuffer3* This,
7679     RPCOLEMESSAGE* pMsg,
7680     REFIID riid,
7681     void** pInterface);
7682 void __RPC_STUB IRpcChannelBuffer3_GetCallContext_Stub(
7683     struct IRpcStubBuffer* This,
7684     struct IRpcChannelBuffer* pRpcChannelBuffer,
7685     PRPC_MESSAGE pRpcMessage,
7686     DWORD* pdwStubPhase);
7687 HRESULT CALLBACK IRpcChannelBuffer3_GetDestCtxEx_Proxy(
7688     IRpcChannelBuffer3* This,
7689     RPCOLEMESSAGE* pMsg,
7690     DWORD* pdwDestContext,
7691     void** ppvDestContext);
7692 void __RPC_STUB IRpcChannelBuffer3_GetDestCtxEx_Stub(
7693     struct IRpcStubBuffer* This,
7694     struct IRpcChannelBuffer* pRpcChannelBuffer,
7695     PRPC_MESSAGE pRpcMessage,
7696     DWORD* pdwStubPhase);
7697 HRESULT CALLBACK IRpcChannelBuffer3_GetState_Proxy(
7698     IRpcChannelBuffer3* This,
7699     RPCOLEMESSAGE* pMsg,
7700     DWORD* pState);
7701 void __RPC_STUB IRpcChannelBuffer3_GetState_Stub(
7702     struct IRpcStubBuffer* This,
7703     struct IRpcChannelBuffer* pRpcChannelBuffer,
7704     PRPC_MESSAGE pRpcMessage,
7705     DWORD* pdwStubPhase);
7706 HRESULT CALLBACK IRpcChannelBuffer3_RegisterAsync_Proxy(
7707     IRpcChannelBuffer3* This,
7708     RPCOLEMESSAGE* pMsg,
7709     IAsyncManager* pAsyncMgr);
7710 void __RPC_STUB IRpcChannelBuffer3_RegisterAsync_Stub(
7711     struct IRpcStubBuffer* This,
7712     struct IRpcChannelBuffer* pRpcChannelBuffer,
7713     PRPC_MESSAGE pRpcMessage,
7714     DWORD* pdwStubPhase);
7715
7716 #endif  /* __IRpcChannelBuffer3_INTERFACE_DEFINED__ */
7717
7718 #ifndef __IRpcProxyBuffer_FWD_DEFINED__
7719 #define __IRpcProxyBuffer_FWD_DEFINED__
7720 typedef struct IRpcProxyBuffer IRpcProxyBuffer;
7721 #endif
7722
7723 typedef IRpcProxyBuffer *LPRPCPROXYBUFFER;
7724
7725 /*****************************************************************************
7726  * IRpcProxyBuffer interface
7727  */
7728 #ifndef __IRpcProxyBuffer_INTERFACE_DEFINED__
7729 #define __IRpcProxyBuffer_INTERFACE_DEFINED__
7730
7731 DEFINE_GUID(IID_IRpcProxyBuffer, 0xd5f56a34, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
7732 #if defined(__cplusplus) && !defined(CINTERFACE)
7733 struct IRpcProxyBuffer : public IUnknown
7734 {
7735     virtual HRESULT STDMETHODCALLTYPE Connect(
7736         IRpcChannelBuffer* pRpcChannelBuffer) = 0;
7737
7738     virtual void STDMETHODCALLTYPE Disconnect(
7739         ) = 0;
7740
7741 };
7742 #else
7743 typedef struct IRpcProxyBufferVtbl IRpcProxyBufferVtbl;
7744 struct IRpcProxyBuffer {
7745     const IRpcProxyBufferVtbl* lpVtbl;
7746 };
7747 struct IRpcProxyBufferVtbl {
7748     ICOM_MSVTABLE_COMPAT_FIELDS
7749
7750     /*** IUnknown methods ***/
7751     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7752         IRpcProxyBuffer* This,
7753         REFIID riid,
7754         void** ppvObject);
7755
7756     ULONG (STDMETHODCALLTYPE *AddRef)(
7757         IRpcProxyBuffer* This);
7758
7759     ULONG (STDMETHODCALLTYPE *Release)(
7760         IRpcProxyBuffer* This);
7761
7762     /*** IRpcProxyBuffer methods ***/
7763     HRESULT (STDMETHODCALLTYPE *Connect)(
7764         IRpcProxyBuffer* This,
7765         IRpcChannelBuffer* pRpcChannelBuffer);
7766
7767     void (STDMETHODCALLTYPE *Disconnect)(
7768         IRpcProxyBuffer* This);
7769
7770 };
7771
7772 /*** IUnknown methods ***/
7773 #define IRpcProxyBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7774 #define IRpcProxyBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
7775 #define IRpcProxyBuffer_Release(p) (p)->lpVtbl->Release(p)
7776 /*** IRpcProxyBuffer methods ***/
7777 #define IRpcProxyBuffer_Connect(p,a) (p)->lpVtbl->Connect(p,a)
7778 #define IRpcProxyBuffer_Disconnect(p) (p)->lpVtbl->Disconnect(p)
7779
7780 #endif
7781
7782 #define IRpcProxyBuffer_METHODS \
7783     ICOM_MSVTABLE_COMPAT_FIELDS \
7784     /*** IUnknown methods ***/ \
7785     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7786     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7787     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7788     /*** IRpcProxyBuffer methods ***/ \
7789     STDMETHOD_(HRESULT,Connect)(THIS_ IRpcChannelBuffer* pRpcChannelBuffer) PURE; \
7790     STDMETHOD_(void,Disconnect)(THIS) PURE;
7791
7792 HRESULT CALLBACK IRpcProxyBuffer_Connect_Proxy(
7793     IRpcProxyBuffer* This,
7794     IRpcChannelBuffer* pRpcChannelBuffer);
7795 void __RPC_STUB IRpcProxyBuffer_Connect_Stub(
7796     struct IRpcStubBuffer* This,
7797     struct IRpcChannelBuffer* pRpcChannelBuffer,
7798     PRPC_MESSAGE pRpcMessage,
7799     DWORD* pdwStubPhase);
7800 void CALLBACK IRpcProxyBuffer_Disconnect_Proxy(
7801     IRpcProxyBuffer* This);
7802 void __RPC_STUB IRpcProxyBuffer_Disconnect_Stub(
7803     struct IRpcStubBuffer* This,
7804     struct IRpcChannelBuffer* pRpcChannelBuffer,
7805     PRPC_MESSAGE pRpcMessage,
7806     DWORD* pdwStubPhase);
7807
7808 #endif  /* __IRpcProxyBuffer_INTERFACE_DEFINED__ */
7809
7810 #ifndef __IRpcStubBuffer_FWD_DEFINED__
7811 #define __IRpcStubBuffer_FWD_DEFINED__
7812 typedef struct IRpcStubBuffer IRpcStubBuffer;
7813 #endif
7814
7815 typedef IRpcStubBuffer *LPRPCSTUBBUFFER;
7816
7817 /*****************************************************************************
7818  * IRpcStubBuffer interface
7819  */
7820 #ifndef __IRpcStubBuffer_INTERFACE_DEFINED__
7821 #define __IRpcStubBuffer_INTERFACE_DEFINED__
7822
7823 DEFINE_GUID(IID_IRpcStubBuffer, 0xd5f56afc, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
7824 #if defined(__cplusplus) && !defined(CINTERFACE)
7825 struct IRpcStubBuffer : public IUnknown
7826 {
7827     virtual HRESULT STDMETHODCALLTYPE Connect(
7828         IUnknown* pUnkServer) = 0;
7829
7830     virtual void STDMETHODCALLTYPE Disconnect(
7831         ) = 0;
7832
7833     virtual HRESULT STDMETHODCALLTYPE Invoke(
7834         RPCOLEMESSAGE* _prpcmsg,
7835         IRpcChannelBuffer* _pRpcChannelBuffer) = 0;
7836
7837     virtual IRpcStubBuffer* STDMETHODCALLTYPE IsIIDSupported(
7838         REFIID riid) = 0;
7839
7840     virtual ULONG STDMETHODCALLTYPE CountRefs(
7841         ) = 0;
7842
7843     virtual HRESULT STDMETHODCALLTYPE DebugServerQueryInterface(
7844         void** ppv) = 0;
7845
7846     virtual void STDMETHODCALLTYPE DebugServerRelease(
7847         void* pv) = 0;
7848
7849 };
7850 #else
7851 typedef struct IRpcStubBufferVtbl IRpcStubBufferVtbl;
7852 struct IRpcStubBuffer {
7853     const IRpcStubBufferVtbl* lpVtbl;
7854 };
7855 struct IRpcStubBufferVtbl {
7856     ICOM_MSVTABLE_COMPAT_FIELDS
7857
7858     /*** IUnknown methods ***/
7859     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7860         IRpcStubBuffer* This,
7861         REFIID riid,
7862         void** ppvObject);
7863
7864     ULONG (STDMETHODCALLTYPE *AddRef)(
7865         IRpcStubBuffer* This);
7866
7867     ULONG (STDMETHODCALLTYPE *Release)(
7868         IRpcStubBuffer* This);
7869
7870     /*** IRpcStubBuffer methods ***/
7871     HRESULT (STDMETHODCALLTYPE *Connect)(
7872         IRpcStubBuffer* This,
7873         IUnknown* pUnkServer);
7874
7875     void (STDMETHODCALLTYPE *Disconnect)(
7876         IRpcStubBuffer* This);
7877
7878     HRESULT (STDMETHODCALLTYPE *Invoke)(
7879         IRpcStubBuffer* This,
7880         RPCOLEMESSAGE* _prpcmsg,
7881         IRpcChannelBuffer* _pRpcChannelBuffer);
7882
7883     IRpcStubBuffer* (STDMETHODCALLTYPE *IsIIDSupported)(
7884         IRpcStubBuffer* This,
7885         REFIID riid);
7886
7887     ULONG (STDMETHODCALLTYPE *CountRefs)(
7888         IRpcStubBuffer* This);
7889
7890     HRESULT (STDMETHODCALLTYPE *DebugServerQueryInterface)(
7891         IRpcStubBuffer* This,
7892         void** ppv);
7893
7894     void (STDMETHODCALLTYPE *DebugServerRelease)(
7895         IRpcStubBuffer* This,
7896         void* pv);
7897
7898 };
7899
7900 /*** IUnknown methods ***/
7901 #define IRpcStubBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7902 #define IRpcStubBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
7903 #define IRpcStubBuffer_Release(p) (p)->lpVtbl->Release(p)
7904 /*** IRpcStubBuffer methods ***/
7905 #define IRpcStubBuffer_Connect(p,a) (p)->lpVtbl->Connect(p,a)
7906 #define IRpcStubBuffer_Disconnect(p) (p)->lpVtbl->Disconnect(p)
7907 #define IRpcStubBuffer_Invoke(p,a,b) (p)->lpVtbl->Invoke(p,a,b)
7908 #define IRpcStubBuffer_IsIIDSupported(p,a) (p)->lpVtbl->IsIIDSupported(p,a)
7909 #define IRpcStubBuffer_CountRefs(p) (p)->lpVtbl->CountRefs(p)
7910 #define IRpcStubBuffer_DebugServerQueryInterface(p,a) (p)->lpVtbl->DebugServerQueryInterface(p,a)
7911 #define IRpcStubBuffer_DebugServerRelease(p,a) (p)->lpVtbl->DebugServerRelease(p,a)
7912
7913 #endif
7914
7915 #define IRpcStubBuffer_METHODS \
7916     ICOM_MSVTABLE_COMPAT_FIELDS \
7917     /*** IUnknown methods ***/ \
7918     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7919     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7920     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7921     /*** IRpcStubBuffer methods ***/ \
7922     STDMETHOD_(HRESULT,Connect)(THIS_ IUnknown* pUnkServer) PURE; \
7923     STDMETHOD_(void,Disconnect)(THIS) PURE; \
7924     STDMETHOD_(HRESULT,Invoke)(THIS_ RPCOLEMESSAGE* _prpcmsg, IRpcChannelBuffer* _pRpcChannelBuffer) PURE; \
7925     STDMETHOD_(IRpcStubBuffer*,IsIIDSupported)(THIS_ REFIID riid) PURE; \
7926     STDMETHOD_(ULONG,CountRefs)(THIS) PURE; \
7927     STDMETHOD_(HRESULT,DebugServerQueryInterface)(THIS_ void** ppv) PURE; \
7928     STDMETHOD_(void,DebugServerRelease)(THIS_ void* pv) PURE;
7929
7930 HRESULT CALLBACK IRpcStubBuffer_Connect_Proxy(
7931     IRpcStubBuffer* This,
7932     IUnknown* pUnkServer);
7933 void __RPC_STUB IRpcStubBuffer_Connect_Stub(
7934     struct IRpcStubBuffer* This,
7935     struct IRpcChannelBuffer* pRpcChannelBuffer,
7936     PRPC_MESSAGE pRpcMessage,
7937     DWORD* pdwStubPhase);
7938 void CALLBACK IRpcStubBuffer_Disconnect_Proxy(
7939     IRpcStubBuffer* This);
7940 void __RPC_STUB IRpcStubBuffer_Disconnect_Stub(
7941     struct IRpcStubBuffer* This,
7942     struct IRpcChannelBuffer* pRpcChannelBuffer,
7943     PRPC_MESSAGE pRpcMessage,
7944     DWORD* pdwStubPhase);
7945 HRESULT CALLBACK IRpcStubBuffer_Invoke_Proxy(
7946     IRpcStubBuffer* This,
7947     RPCOLEMESSAGE* _prpcmsg,
7948     IRpcChannelBuffer* _pRpcChannelBuffer);
7949 void __RPC_STUB IRpcStubBuffer_Invoke_Stub(
7950     struct IRpcStubBuffer* This,
7951     struct IRpcChannelBuffer* pRpcChannelBuffer,
7952     PRPC_MESSAGE pRpcMessage,
7953     DWORD* pdwStubPhase);
7954 IRpcStubBuffer* CALLBACK IRpcStubBuffer_IsIIDSupported_Proxy(
7955     IRpcStubBuffer* This,
7956     REFIID riid);
7957 void __RPC_STUB IRpcStubBuffer_IsIIDSupported_Stub(
7958     struct IRpcStubBuffer* This,
7959     struct IRpcChannelBuffer* pRpcChannelBuffer,
7960     PRPC_MESSAGE pRpcMessage,
7961     DWORD* pdwStubPhase);
7962 ULONG CALLBACK IRpcStubBuffer_CountRefs_Proxy(
7963     IRpcStubBuffer* This);
7964 void __RPC_STUB IRpcStubBuffer_CountRefs_Stub(
7965     struct IRpcStubBuffer* This,
7966     struct IRpcChannelBuffer* pRpcChannelBuffer,
7967     PRPC_MESSAGE pRpcMessage,
7968     DWORD* pdwStubPhase);
7969 HRESULT CALLBACK IRpcStubBuffer_DebugServerQueryInterface_Proxy(
7970     IRpcStubBuffer* This,
7971     void** ppv);
7972 void __RPC_STUB IRpcStubBuffer_DebugServerQueryInterface_Stub(
7973     struct IRpcStubBuffer* This,
7974     struct IRpcChannelBuffer* pRpcChannelBuffer,
7975     PRPC_MESSAGE pRpcMessage,
7976     DWORD* pdwStubPhase);
7977 void CALLBACK IRpcStubBuffer_DebugServerRelease_Proxy(
7978     IRpcStubBuffer* This,
7979     void* pv);
7980 void __RPC_STUB IRpcStubBuffer_DebugServerRelease_Stub(
7981     struct IRpcStubBuffer* This,
7982     struct IRpcChannelBuffer* pRpcChannelBuffer,
7983     PRPC_MESSAGE pRpcMessage,
7984     DWORD* pdwStubPhase);
7985
7986 #endif  /* __IRpcStubBuffer_INTERFACE_DEFINED__ */
7987
7988 #ifndef __IPSFactoryBuffer_FWD_DEFINED__
7989 #define __IPSFactoryBuffer_FWD_DEFINED__
7990 typedef struct IPSFactoryBuffer IPSFactoryBuffer;
7991 #endif
7992
7993 typedef IPSFactoryBuffer *LPPSFACTORYBUFFER;
7994
7995 /*****************************************************************************
7996  * IPSFactoryBuffer interface
7997  */
7998 #ifndef __IPSFactoryBuffer_INTERFACE_DEFINED__
7999 #define __IPSFactoryBuffer_INTERFACE_DEFINED__
8000
8001 DEFINE_GUID(IID_IPSFactoryBuffer, 0xd5f569d0, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a);
8002 #if defined(__cplusplus) && !defined(CINTERFACE)
8003 struct IPSFactoryBuffer : public IUnknown
8004 {
8005     virtual HRESULT STDMETHODCALLTYPE CreateProxy(
8006         IUnknown* pUnkOuter,
8007         REFIID riid,
8008         IRpcProxyBuffer** ppProxy,
8009         void** ppv) = 0;
8010
8011     virtual HRESULT STDMETHODCALLTYPE CreateStub(
8012         REFIID riid,
8013         IUnknown* pUnkServer,
8014         IRpcStubBuffer** ppStub) = 0;
8015
8016 };
8017 #else
8018 typedef struct IPSFactoryBufferVtbl IPSFactoryBufferVtbl;
8019 struct IPSFactoryBuffer {
8020     const IPSFactoryBufferVtbl* lpVtbl;
8021 };
8022 struct IPSFactoryBufferVtbl {
8023     ICOM_MSVTABLE_COMPAT_FIELDS
8024
8025     /*** IUnknown methods ***/
8026     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8027         IPSFactoryBuffer* This,
8028         REFIID riid,
8029         void** ppvObject);
8030
8031     ULONG (STDMETHODCALLTYPE *AddRef)(
8032         IPSFactoryBuffer* This);
8033
8034     ULONG (STDMETHODCALLTYPE *Release)(
8035         IPSFactoryBuffer* This);
8036
8037     /*** IPSFactoryBuffer methods ***/
8038     HRESULT (STDMETHODCALLTYPE *CreateProxy)(
8039         IPSFactoryBuffer* This,
8040         IUnknown* pUnkOuter,
8041         REFIID riid,
8042         IRpcProxyBuffer** ppProxy,
8043         void** ppv);
8044
8045     HRESULT (STDMETHODCALLTYPE *CreateStub)(
8046         IPSFactoryBuffer* This,
8047         REFIID riid,
8048         IUnknown* pUnkServer,
8049         IRpcStubBuffer** ppStub);
8050
8051 };
8052
8053 /*** IUnknown methods ***/
8054 #define IPSFactoryBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
8055 #define IPSFactoryBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
8056 #define IPSFactoryBuffer_Release(p) (p)->lpVtbl->Release(p)
8057 /*** IPSFactoryBuffer methods ***/
8058 #define IPSFactoryBuffer_CreateProxy(p,a,b,c,d) (p)->lpVtbl->CreateProxy(p,a,b,c,d)
8059 #define IPSFactoryBuffer_CreateStub(p,a,b,c) (p)->lpVtbl->CreateStub(p,a,b,c)
8060
8061 #endif
8062
8063 #define IPSFactoryBuffer_METHODS \
8064     ICOM_MSVTABLE_COMPAT_FIELDS \
8065     /*** IUnknown methods ***/ \
8066     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
8067     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
8068     STDMETHOD_(ULONG,Release)(THIS) PURE; \
8069     /*** IPSFactoryBuffer methods ***/ \
8070     STDMETHOD_(HRESULT,CreateProxy)(THIS_ IUnknown* pUnkOuter, REFIID riid, IRpcProxyBuffer** ppProxy, void** ppv) PURE; \
8071     STDMETHOD_(HRESULT,CreateStub)(THIS_ REFIID riid, IUnknown* pUnkServer, IRpcStubBuffer** ppStub) PURE;
8072
8073 HRESULT CALLBACK IPSFactoryBuffer_CreateProxy_Proxy(
8074     IPSFactoryBuffer* This,
8075     IUnknown* pUnkOuter,
8076     REFIID riid,
8077     IRpcProxyBuffer** ppProxy,
8078     void** ppv);
8079 void __RPC_STUB IPSFactoryBuffer_CreateProxy_Stub(
8080     struct IRpcStubBuffer* This,
8081     struct IRpcChannelBuffer* pRpcChannelBuffer,
8082     PRPC_MESSAGE pRpcMessage,
8083     DWORD* pdwStubPhase);
8084 HRESULT CALLBACK IPSFactoryBuffer_CreateStub_Proxy(
8085     IPSFactoryBuffer* This,
8086     REFIID riid,
8087     IUnknown* pUnkServer,
8088     IRpcStubBuffer** ppStub);
8089 void __RPC_STUB IPSFactoryBuffer_CreateStub_Stub(
8090     struct IRpcStubBuffer* This,
8091     struct IRpcChannelBuffer* pRpcChannelBuffer,
8092     PRPC_MESSAGE pRpcMessage,
8093     DWORD* pdwStubPhase);
8094
8095 #endif  /* __IPSFactoryBuffer_INTERFACE_DEFINED__ */
8096
8097 #ifndef __IChannelHook_FWD_DEFINED__
8098 #define __IChannelHook_FWD_DEFINED__
8099 typedef struct IChannelHook IChannelHook;
8100 #endif
8101
8102 typedef IChannelHook *LPCHANNELHOOK;
8103
8104 typedef struct SChannelHookCallInfo {
8105     IID iid;
8106     DWORD cbSize;
8107     GUID uCausality;
8108     DWORD dwServerPid;
8109     DWORD iMethod;
8110     void *pObject;
8111 } SChannelHookCallInfo;
8112
8113 /*****************************************************************************
8114  * IChannelHook interface
8115  */
8116 #ifndef __IChannelHook_INTERFACE_DEFINED__
8117 #define __IChannelHook_INTERFACE_DEFINED__
8118
8119 DEFINE_GUID(IID_IChannelHook, 0x1008c4a0, 0x7613, 0x11cf, 0x9a,0xf1, 0x00,0x20,0xaf,0x6e,0x72,0xf4);
8120 #if defined(__cplusplus) && !defined(CINTERFACE)
8121 struct IChannelHook : public IUnknown
8122 {
8123     virtual void STDMETHODCALLTYPE ClientGetSize(
8124         REFGUID uExtent,
8125         REFIID riid,
8126         ULONG* pDataSize) = 0;
8127
8128     virtual void STDMETHODCALLTYPE ClientFillBuffer(
8129         REFGUID uExtent,
8130         REFIID riid,
8131         ULONG* pDataSize,
8132         void* pDataBuffer) = 0;
8133
8134     virtual void STDMETHODCALLTYPE ClientNotify(
8135         REFGUID uExtent,
8136         REFIID riid,
8137         ULONG cbDataSize,
8138         void* pDataBuffer,
8139         DWORD lDataRep,
8140         HRESULT hrFault) = 0;
8141
8142     virtual void STDMETHODCALLTYPE ServerNotify(
8143         REFGUID uExtent,
8144         REFIID riid,
8145         ULONG cbDataSize,
8146         void* pDataBuffer,
8147         DWORD lDataRep) = 0;
8148
8149     virtual void STDMETHODCALLTYPE ServerGetSize(
8150         REFGUID uExtent,
8151         REFIID riid,
8152         HRESULT hrFault,
8153         ULONG* pDataSize) = 0;
8154
8155     virtual void STDMETHODCALLTYPE ServerFillBuffer(
8156         REFGUID uExtent,
8157         REFIID riid,
8158         ULONG* pDataSize,
8159         void* pDataBuffer,
8160         HRESULT hrFault) = 0;
8161
8162 };
8163 #else
8164 typedef struct IChannelHookVtbl IChannelHookVtbl;
8165 struct IChannelHook {
8166     const IChannelHookVtbl* lpVtbl;
8167 };
8168 struct IChannelHookVtbl {
8169     ICOM_MSVTABLE_COMPAT_FIELDS
8170
8171     /*** IUnknown methods ***/
8172     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8173         IChannelHook* This,
8174         REFIID riid,
8175         void** ppvObject);
8176
8177     ULONG (STDMETHODCALLTYPE *AddRef)(
8178         IChannelHook* This);
8179
8180     ULONG (STDMETHODCALLTYPE *Release)(
8181         IChannelHook* This);
8182
8183     /*** IChannelHook methods ***/
8184     void (STDMETHODCALLTYPE *ClientGetSize)(
8185         IChannelHook* This,
8186         REFGUID uExtent,
8187         REFIID riid,
8188         ULONG* pDataSize);
8189
8190     void (STDMETHODCALLTYPE *ClientFillBuffer)(
8191         IChannelHook* This,
8192         REFGUID uExtent,
8193         REFIID riid,
8194         ULONG* pDataSize,
8195         void* pDataBuffer);
8196
8197     void (STDMETHODCALLTYPE *ClientNotify)(
8198         IChannelHook* This,
8199         REFGUID uExtent,
8200         REFIID riid,
8201         ULONG cbDataSize,
8202         void* pDataBuffer,
8203         DWORD lDataRep,
8204         HRESULT hrFault);
8205
8206     void (STDMETHODCALLTYPE *ServerNotify)(
8207         IChannelHook* This,
8208         REFGUID uExtent,
8209         REFIID riid,
8210         ULONG cbDataSize,
8211         void* pDataBuffer,
8212         DWORD lDataRep);
8213
8214     void (STDMETHODCALLTYPE *ServerGetSize)(
8215         IChannelHook* This,
8216         REFGUID uExtent,
8217         REFIID riid,
8218         HRESULT hrFault,
8219         ULONG* pDataSize);
8220
8221     void (STDMETHODCALLTYPE *ServerFillBuffer)(
8222         IChannelHook* This,
8223         REFGUID uExtent,
8224         REFIID riid,
8225         ULONG* pDataSize,
8226         void* pDataBuffer,
8227         HRESULT hrFault);
8228
8229 };
8230
8231 /*** IUnknown methods ***/
8232 #define IChannelHook_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
8233 #define IChannelHook_AddRef(p) (p)->lpVtbl->AddRef(p)
8234 #define IChannelHook_Release(p) (p)->lpVtbl->Release(p)
8235 /*** IChannelHook methods ***/
8236 #define IChannelHook_ClientGetSize(p,a,b,c) (p)->lpVtbl->ClientGetSize(p,a,b,c)
8237 #define IChannelHook_ClientFillBuffer(p,a,b,c,d) (p)->lpVtbl->ClientFillBuffer(p,a,b,c,d)
8238 #define IChannelHook_ClientNotify(p,a,b,c,d,e,f) (p)->lpVtbl->ClientNotify(p,a,b,c,d,e,f)
8239 #define IChannelHook_ServerNotify(p,a,b,c,d,e) (p)->lpVtbl->ServerNotify(p,a,b,c,d,e)
8240 #define IChannelHook_ServerGetSize(p,a,b,c,d) (p)->lpVtbl->ServerGetSize(p,a,b,c,d)
8241 #define IChannelHook_ServerFillBuffer(p,a,b,c,d,e) (p)->lpVtbl->ServerFillBuffer(p,a,b,c,d,e)
8242
8243 #endif
8244
8245 #define IChannelHook_METHODS \
8246     ICOM_MSVTABLE_COMPAT_FIELDS \
8247     /*** IUnknown methods ***/ \
8248     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
8249     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
8250     STDMETHOD_(ULONG,Release)(THIS) PURE; \
8251     /*** IChannelHook methods ***/ \
8252     STDMETHOD_(void,ClientGetSize)(THIS_ REFGUID uExtent, REFIID riid, ULONG* pDataSize) PURE; \
8253     STDMETHOD_(void,ClientFillBuffer)(THIS_ REFGUID uExtent, REFIID riid, ULONG* pDataSize, void* pDataBuffer) PURE; \
8254     STDMETHOD_(void,ClientNotify)(THIS_ REFGUID uExtent, REFIID riid, ULONG cbDataSize, void* pDataBuffer, DWORD lDataRep, HRESULT hrFault) PURE; \
8255     STDMETHOD_(void,ServerNotify)(THIS_ REFGUID uExtent, REFIID riid, ULONG cbDataSize, void* pDataBuffer, DWORD lDataRep) PURE; \
8256     STDMETHOD_(void,ServerGetSize)(THIS_ REFGUID uExtent, REFIID riid, HRESULT hrFault, ULONG* pDataSize) PURE; \
8257     STDMETHOD_(void,ServerFillBuffer)(THIS_ REFGUID uExtent, REFIID riid, ULONG* pDataSize, void* pDataBuffer, HRESULT hrFault) PURE;
8258
8259 void CALLBACK IChannelHook_ClientGetSize_Proxy(
8260     IChannelHook* This,
8261     REFGUID uExtent,
8262     REFIID riid,
8263     ULONG* pDataSize);
8264 void __RPC_STUB IChannelHook_ClientGetSize_Stub(
8265     struct IRpcStubBuffer* This,
8266     struct IRpcChannelBuffer* pRpcChannelBuffer,
8267     PRPC_MESSAGE pRpcMessage,
8268     DWORD* pdwStubPhase);
8269 void CALLBACK IChannelHook_ClientFillBuffer_Proxy(
8270     IChannelHook* This,
8271     REFGUID uExtent,
8272     REFIID riid,
8273     ULONG* pDataSize,
8274     void* pDataBuffer);
8275 void __RPC_STUB IChannelHook_ClientFillBuffer_Stub(
8276     struct IRpcStubBuffer* This,
8277     struct IRpcChannelBuffer* pRpcChannelBuffer,
8278     PRPC_MESSAGE pRpcMessage,
8279     DWORD* pdwStubPhase);
8280 void CALLBACK IChannelHook_ClientNotify_Proxy(
8281     IChannelHook* This,
8282     REFGUID uExtent,
8283     REFIID riid,
8284     ULONG cbDataSize,
8285     void* pDataBuffer,
8286     DWORD lDataRep,
8287     HRESULT hrFault);
8288 void __RPC_STUB IChannelHook_ClientNotify_Stub(
8289     struct IRpcStubBuffer* This,
8290     struct IRpcChannelBuffer* pRpcChannelBuffer,
8291     PRPC_MESSAGE pRpcMessage,
8292     DWORD* pdwStubPhase);
8293 void CALLBACK IChannelHook_ServerNotify_Proxy(
8294     IChannelHook* This,
8295     REFGUID uExtent,
8296     REFIID riid,
8297     ULONG cbDataSize,
8298     void* pDataBuffer,
8299     DWORD lDataRep);
8300 void __RPC_STUB IChannelHook_ServerNotify_Stub(
8301     struct IRpcStubBuffer* This,
8302     struct IRpcChannelBuffer* pRpcChannelBuffer,
8303     PRPC_MESSAGE pRpcMessage,
8304     DWORD* pdwStubPhase);
8305 void CALLBACK IChannelHook_ServerGetSize_Proxy(
8306     IChannelHook* This,
8307     REFGUID uExtent,
8308     REFIID riid,
8309     HRESULT hrFault,
8310     ULONG* pDataSize);
8311 void __RPC_STUB IChannelHook_ServerGetSize_Stub(
8312     struct IRpcStubBuffer* This,
8313     struct IRpcChannelBuffer* pRpcChannelBuffer,
8314     PRPC_MESSAGE pRpcMessage,
8315     DWORD* pdwStubPhase);
8316 void CALLBACK IChannelHook_ServerFillBuffer_Proxy(
8317     IChannelHook* This,
8318     REFGUID uExtent,
8319     REFIID riid,
8320     ULONG* pDataSize,
8321     void* pDataBuffer,
8322     HRESULT hrFault);
8323 void __RPC_STUB IChannelHook_ServerFillBuffer_Stub(
8324     struct IRpcStubBuffer* This,
8325     struct IRpcChannelBuffer* pRpcChannelBuffer,
8326     PRPC_MESSAGE pRpcMessage,
8327     DWORD* pdwStubPhase);
8328
8329 #endif  /* __IChannelHook_INTERFACE_DEFINED__ */
8330
8331 #ifndef __IEnumSTATPROPSTG_FWD_DEFINED__
8332 #define __IEnumSTATPROPSTG_FWD_DEFINED__
8333 typedef struct IEnumSTATPROPSTG IEnumSTATPROPSTG;
8334 #endif
8335
8336 #ifndef __IEnumSTATPROPSETSTG_FWD_DEFINED__
8337 #define __IEnumSTATPROPSETSTG_FWD_DEFINED__
8338 typedef struct IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG;
8339 #endif
8340
8341 #ifndef __IPropertyStorage_FWD_DEFINED__
8342 #define __IPropertyStorage_FWD_DEFINED__
8343 typedef struct IPropertyStorage IPropertyStorage;
8344 #endif
8345
8346 typedef IPropertyStorage *LPPROPERTYSTORAGE;
8347
8348 extern const FMTID FMTID_SummaryInformation;
8349
8350 extern const FMTID FMTID_DocSummaryInformation;
8351
8352 extern const FMTID FMTID_UserDefinedProperties;
8353
8354 #define PROPSETFLAG_DEFAULT (0)
8355
8356 #define PROPSETFLAG_NONSIMPLE (1)
8357
8358 #define PROPSETFLAG_ANSI (2)
8359
8360 #define PROPSETFLAG_UNBUFFERED (4)
8361
8362 typedef struct tagPROPVARIANT PROPVARIANT;
8363
8364 typedef struct tagCAUB {
8365     ULONG cElems;
8366     unsigned char *pElems;
8367 } CAUB;
8368
8369 typedef struct tagCAI {
8370     ULONG cElems;
8371     short *pElems;
8372 } CAI;
8373
8374 typedef struct tagCAUI {
8375     ULONG cElems;
8376     USHORT *pElems;
8377 } CAUI;
8378
8379 typedef struct tagCAL {
8380     ULONG cElems;
8381     long *pElems;
8382 } CAL;
8383
8384 typedef struct tagCAUL {
8385     ULONG cElems;
8386     ULONG *pElems;
8387 } CAUL;
8388
8389 typedef struct tagCAFLT {
8390     ULONG cElems;
8391     float *pElems;
8392 } CAFLT;
8393
8394 typedef struct tagCADBL {
8395     ULONG cElems;
8396     double *pElems;
8397 } CADBL;
8398
8399 typedef struct tagCACY {
8400     ULONG cElems;
8401     CY *pElems;
8402 } CACY;
8403
8404 typedef struct tagCADATE {
8405     ULONG cElems;
8406     DATE *pElems;
8407 } CADATE;
8408
8409 typedef struct tagCABSTR {
8410     ULONG cElems;
8411     BSTR *pElems;
8412 } CABSTR;
8413
8414 typedef struct tagCABSTRBLOB {
8415     ULONG cElems;
8416     BSTRBLOB *pElems;
8417 } CABSTRBLOB;
8418
8419 typedef struct tagCABOOL {
8420     ULONG cElems;
8421     VARIANT_BOOL *pElems;
8422 } CABOOL;
8423
8424 typedef struct tagCASCODE {
8425     ULONG cElems;
8426     SCODE *pElems;
8427 } CASCODE;
8428
8429 typedef struct tagCAPROPVARIANT {
8430     ULONG cElems;
8431     PROPVARIANT *pElems;
8432 } CAPROPVARIANT;
8433
8434 typedef struct tagCAH {
8435     ULONG cElems;
8436     LARGE_INTEGER *pElems;
8437 } CAH;
8438
8439 typedef struct tagCAUH {
8440     ULONG cElems;
8441     ULARGE_INTEGER *pElems;
8442 } CAUH;
8443
8444 typedef struct tagCALPSTR {
8445     ULONG cElems;
8446     LPSTR *pElems;
8447 } CALPSTR;
8448
8449 typedef struct tagCALPWSTR {
8450     ULONG cElems;
8451     LPWSTR *pElems;
8452 } CALPWSTR;
8453
8454 typedef struct tagCAFILETIME {
8455     ULONG cElems;
8456     FILETIME *pElems;
8457 } CAFILETIME;
8458
8459 typedef struct tagCACLIPDATA {
8460     ULONG cElems;
8461     CLIPDATA *pElems;
8462 } CACLIPDATA;
8463
8464 typedef struct tagCACLSID {
8465     ULONG cElems;
8466     CLSID *pElems;
8467 } CACLSID;
8468
8469 struct tagPROPVARIANT {
8470     VARTYPE vt;
8471     WORD wReserved1;
8472     WORD wReserved2;
8473     WORD wReserved3;
8474     union {
8475         char cVal;
8476         UCHAR bVal;
8477         short iVal;
8478         USHORT uiVal;
8479         VARIANT_BOOL boolVal;
8480         long lVal;
8481         ULONG ulVal;
8482         float fltVal;
8483         SCODE scode;
8484         LARGE_INTEGER hVal;
8485         ULARGE_INTEGER uhVal;
8486         double dblVal;
8487         CY cyVal;
8488         DATE date;
8489         FILETIME filetime;
8490         CLSID *puuid;
8491         BLOB blob;
8492         CLIPDATA *pclipdata;
8493         IStream *pStream;
8494         IStorage *pStorage;
8495         BSTR bstrVal;
8496         BSTRBLOB bstrblobVal;
8497         LPSTR pszVal;
8498         LPWSTR pwszVal;
8499         CAUB caub;
8500         CAI cai;
8501         CAUI caui;
8502         CABOOL cabool;
8503         CAL cal;
8504         CAUL caul;
8505         CAFLT caflt;
8506         CASCODE cascode;
8507         CAH cah;
8508         CAUH cauh;
8509         CADBL cadbl;
8510         CACY cacy;
8511         CADATE cadate;
8512         CAFILETIME cafiletime;
8513         CACLSID cauuid;
8514         CACLIPDATA caclipdata;
8515         CABSTR cabstr;
8516         CABSTRBLOB cabstrblob;
8517         CALPSTR calpstr;
8518         CALPWSTR calpwstr;
8519         CAPROPVARIANT capropvar;
8520     } DUMMYUNIONNAME;
8521 };
8522
8523 typedef struct tagPROPVARIANT *LPPROPVARIANT;
8524
8525 #define PRSPEC_INVALID (0xffffffff)
8526
8527 #define PRSPEC_LPWSTR (0)
8528
8529 #define PRSPEC_PROPID (1)
8530
8531 typedef struct tagPROPSPEC {
8532     ULONG ulKind;
8533     union {
8534         PROPID propid;
8535         LPOLESTR lpwstr;
8536     } DUMMYUNIONNAME;
8537 } PROPSPEC;
8538
8539 typedef struct tagSTATPROPSTG {
8540     LPOLESTR lpwstrName;
8541     PROPID propid;
8542     VARTYPE vt;
8543 } STATPROPSTG;
8544
8545 typedef struct tagSTATPROPSETSTG {
8546     FMTID fmtid;
8547     CLSID clsid;
8548     DWORD grfFlags;
8549     FILETIME mtime;
8550     FILETIME ctime;
8551     FILETIME atime;
8552     DWORD dwOSVersion;
8553 } STATPROPSETSTG;
8554
8555 /*****************************************************************************
8556  * IPropertyStorage interface
8557  */
8558 #ifndef __IPropertyStorage_INTERFACE_DEFINED__
8559 #define __IPropertyStorage_INTERFACE_DEFINED__
8560
8561 DEFINE_GUID(IID_IPropertyStorage, 0x00000138, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
8562 #if defined(__cplusplus) && !defined(CINTERFACE)
8563 struct IPropertyStorage : public IUnknown
8564 {
8565     virtual HRESULT STDMETHODCALLTYPE ReadMultiple(
8566         ULONG cpspec,
8567         const PROPSPEC rgpspec[],
8568         PROPVARIANT rgpropvar[]) = 0;
8569
8570     virtual HRESULT STDMETHODCALLTYPE WriteMultiple(
8571         ULONG cpspec,
8572         const PROPSPEC rgpspec[],
8573         const PROPVARIANT rgpropvar[],
8574         PROPID propidNameFirst) = 0;
8575
8576     virtual HRESULT STDMETHODCALLTYPE DeleteMultiple(
8577         ULONG cpspec,
8578         const PROPSPEC rgpspec[]) = 0;
8579
8580     virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames(
8581         ULONG cpropid,
8582         const PROPID rgpropid[],
8583         LPOLESTR rglpwstrName[]) = 0;
8584
8585     virtual HRESULT STDMETHODCALLTYPE WritePropertyNames(
8586         ULONG cpropid,
8587         const PROPID rgpropid[],
8588         const LPOLESTR rglpwstrName[]) = 0;
8589
8590     virtual HRESULT STDMETHODCALLTYPE DeletePropertyNames(
8591         ULONG cpropid,
8592         const PROPID rgpropid[]) = 0;
8593
8594     virtual HRESULT STDMETHODCALLTYPE Commit(
8595         DWORD grfCommitFlags) = 0;
8596
8597     virtual HRESULT STDMETHODCALLTYPE Revert(
8598         ) = 0;
8599
8600     virtual HRESULT STDMETHODCALLTYPE Enum(
8601         IEnumSTATPROPSTG** ppenum) = 0;
8602
8603     virtual HRESULT STDMETHODCALLTYPE SetTimes(
8604         const FILETIME* pctime,
8605         const FILETIME* patime,
8606         const FILETIME* pmtime) = 0;
8607
8608     virtual HRESULT STDMETHODCALLTYPE SetClass(
8609         REFCLSID clsid) = 0;
8610
8611     virtual HRESULT STDMETHODCALLTYPE Stat(
8612         STATPROPSETSTG* statpsstg) = 0;
8613
8614 };
8615 #else
8616 typedef struct IPropertyStorageVtbl IPropertyStorageVtbl;
8617 struct IPropertyStorage {
8618     const IPropertyStorageVtbl* lpVtbl;
8619 };
8620 struct IPropertyStorageVtbl {
8621     ICOM_MSVTABLE_COMPAT_FIELDS
8622
8623     /*** IUnknown methods ***/
8624     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8625         IPropertyStorage* This,
8626         REFIID riid,
8627         void** ppvObject);
8628
8629     ULONG (STDMETHODCALLTYPE *AddRef)(
8630         IPropertyStorage* This);
8631
8632     ULONG (STDMETHODCALLTYPE *Release)(
8633         IPropertyStorage* This);
8634
8635     /*** IPropertyStorage methods ***/
8636     HRESULT (STDMETHODCALLTYPE *ReadMultiple)(
8637         IPropertyStorage* This,
8638         ULONG cpspec,
8639         const PROPSPEC rgpspec[],
8640         PROPVARIANT rgpropvar[]);
8641
8642     HRESULT (STDMETHODCALLTYPE *WriteMultiple)(
8643         IPropertyStorage* This,
8644         ULONG cpspec,
8645         const PROPSPEC rgpspec[],
8646         const PROPVARIANT rgpropvar[],
8647         PROPID propidNameFirst);
8648
8649     HRESULT (STDMETHODCALLTYPE *DeleteMultiple)(
8650         IPropertyStorage* This,
8651         ULONG cpspec,
8652         const PROPSPEC rgpspec[]);
8653
8654     HRESULT (STDMETHODCALLTYPE *ReadPropertyNames)(
8655         IPropertyStorage* This,
8656         ULONG cpropid,
8657         const PROPID rgpropid[],
8658         LPOLESTR rglpwstrName[]);
8659
8660     HRESULT (STDMETHODCALLTYPE *WritePropertyNames)(
8661         IPropertyStorage* This,
8662         ULONG cpropid,
8663         const PROPID rgpropid[],
8664         const LPOLESTR rglpwstrName[]);
8665
8666     HRESULT (STDMETHODCALLTYPE *DeletePropertyNames)(
8667         IPropertyStorage* This,
8668         ULONG cpropid,
8669         const PROPID rgpropid[]);
8670
8671     HRESULT (STDMETHODCALLTYPE *Commit)(
8672         IPropertyStorage* This,
8673         DWORD grfCommitFlags);
8674
8675     HRESULT (STDMETHODCALLTYPE *Revert)(
8676         IPropertyStorage* This);
8677
8678     HRESULT (STDMETHODCALLTYPE *Enum)(
8679         IPropertyStorage* This,
8680         IEnumSTATPROPSTG** ppenum);
8681
8682     HRESULT (STDMETHODCALLTYPE *SetTimes)(
8683         IPropertyStorage* This,
8684         const FILETIME* pctime,
8685         const FILETIME* patime,
8686         const FILETIME* pmtime);
8687
8688     HRESULT (STDMETHODCALLTYPE *SetClass)(
8689         IPropertyStorage* This,
8690         REFCLSID clsid);
8691
8692     HRESULT (STDMETHODCALLTYPE *Stat)(
8693         IPropertyStorage* This,
8694         STATPROPSETSTG* statpsstg);
8695
8696 };
8697
8698 /*** IUnknown methods ***/
8699 #define IPropertyStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
8700 #define IPropertyStorage_AddRef(p) (p)->lpVtbl->AddRef(p)
8701 #define IPropertyStorage_Release(p) (p)->lpVtbl->Release(p)
8702 /*** IPropertyStorage methods ***/
8703 #define IPropertyStorage_ReadMultiple(p,a,b,c) (p)->lpVtbl->ReadMultiple(p,a,b,c)
8704 #define IPropertyStorage_WriteMultiple(p,a,b,c,d) (p)->lpVtbl->WriteMultiple(p,a,b,c,d)
8705 #define IPropertyStorage_DeleteMultiple(p,a,b) (p)->lpVtbl->DeleteMultiple(p,a,b)
8706 #define IPropertyStorage_ReadPropertyNames(p,a,b,c) (p)->lpVtbl->ReadPropertyNames(p,a,b,c)
8707 #define IPropertyStorage_WritePropertyNames(p,a,b,c) (p)->lpVtbl->WritePropertyNames(p,a,b,c)
8708 #define IPropertyStorage_DeletePropertyNames(p,a,b) (p)->lpVtbl->DeletePropertyNames(p,a,b)
8709 #define IPropertyStorage_Commit(p,a) (p)->lpVtbl->Commit(p,a)
8710 #define IPropertyStorage_Revert(p) (p)->lpVtbl->Revert(p)
8711 #define IPropertyStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a)
8712 #define IPropertyStorage_SetTimes(p,a,b,c) (p)->lpVtbl->SetTimes(p,a,b,c)
8713 #define IPropertyStorage_SetClass(p,a) (p)->lpVtbl->SetClass(p,a)
8714 #define IPropertyStorage_Stat(p,a) (p)->lpVtbl->Stat(p,a)
8715
8716 #endif
8717
8718 #define IPropertyStorage_METHODS \
8719     ICOM_MSVTABLE_COMPAT_FIELDS \
8720     /*** IUnknown methods ***/ \
8721     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
8722     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
8723     STDMETHOD_(ULONG,Release)(THIS) PURE; \
8724     /*** IPropertyStorage methods ***/ \
8725     STDMETHOD_(HRESULT,ReadMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], PROPVARIANT rgpropvar[]) PURE; \
8726     STDMETHOD_(HRESULT,WriteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], const PROPVARIANT rgpropvar[], PROPID propidNameFirst) PURE; \
8727     STDMETHOD_(HRESULT,DeleteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[]) PURE; \
8728     STDMETHOD_(HRESULT,ReadPropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], LPOLESTR rglpwstrName[]) PURE; \
8729     STDMETHOD_(HRESULT,WritePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], const LPOLESTR rglpwstrName[]) PURE; \
8730     STDMETHOD_(HRESULT,DeletePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[]) PURE; \
8731     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \
8732     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \
8733     STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSTG** ppenum) PURE; \
8734     STDMETHOD_(HRESULT,SetTimes)(THIS_ const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \
8735     STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \
8736     STDMETHOD_(HRESULT,Stat)(THIS_ STATPROPSETSTG* statpsstg) PURE;
8737
8738 HRESULT CALLBACK IPropertyStorage_ReadMultiple_Proxy(
8739     IPropertyStorage* This,
8740     ULONG cpspec,
8741     const PROPSPEC rgpspec[],
8742     PROPVARIANT rgpropvar[]);
8743 void __RPC_STUB IPropertyStorage_ReadMultiple_Stub(
8744     struct IRpcStubBuffer* This,
8745     struct IRpcChannelBuffer* pRpcChannelBuffer,
8746     PRPC_MESSAGE pRpcMessage,
8747     DWORD* pdwStubPhase);
8748 HRESULT CALLBACK IPropertyStorage_WriteMultiple_Proxy(
8749     IPropertyStorage* This,
8750     ULONG cpspec,
8751     const PROPSPEC rgpspec[],
8752     const PROPVARIANT rgpropvar[],
8753     PROPID propidNameFirst);
8754 void __RPC_STUB IPropertyStorage_WriteMultiple_Stub(
8755     struct IRpcStubBuffer* This,
8756     struct IRpcChannelBuffer* pRpcChannelBuffer,
8757     PRPC_MESSAGE pRpcMessage,
8758     DWORD* pdwStubPhase);
8759 HRESULT CALLBACK IPropertyStorage_DeleteMultiple_Proxy(
8760     IPropertyStorage* This,
8761     ULONG cpspec,
8762     const PROPSPEC rgpspec[]);
8763 void __RPC_STUB IPropertyStorage_DeleteMultiple_Stub(
8764     struct IRpcStubBuffer* This,
8765     struct IRpcChannelBuffer* pRpcChannelBuffer,
8766     PRPC_MESSAGE pRpcMessage,
8767     DWORD* pdwStubPhase);
8768 HRESULT CALLBACK IPropertyStorage_ReadPropertyNames_Proxy(
8769     IPropertyStorage* This,
8770     ULONG cpropid,
8771     const PROPID rgpropid[],
8772     LPOLESTR rglpwstrName[]);
8773 void __RPC_STUB IPropertyStorage_ReadPropertyNames_Stub(
8774     struct IRpcStubBuffer* This,
8775     struct IRpcChannelBuffer* pRpcChannelBuffer,
8776     PRPC_MESSAGE pRpcMessage,
8777     DWORD* pdwStubPhase);
8778 HRESULT CALLBACK IPropertyStorage_WritePropertyNames_Proxy(
8779     IPropertyStorage* This,
8780     ULONG cpropid,
8781     const PROPID rgpropid[],
8782     const LPOLESTR rglpwstrName[]);
8783 void __RPC_STUB IPropertyStorage_WritePropertyNames_Stub(
8784     struct IRpcStubBuffer* This,
8785     struct IRpcChannelBuffer* pRpcChannelBuffer,
8786     PRPC_MESSAGE pRpcMessage,
8787     DWORD* pdwStubPhase);
8788 HRESULT CALLBACK IPropertyStorage_DeletePropertyNames_Proxy(
8789     IPropertyStorage* This,
8790     ULONG cpropid,
8791     const PROPID rgpropid[]);
8792 void __RPC_STUB IPropertyStorage_DeletePropertyNames_Stub(
8793     struct IRpcStubBuffer* This,
8794     struct IRpcChannelBuffer* pRpcChannelBuffer,
8795     PRPC_MESSAGE pRpcMessage,
8796     DWORD* pdwStubPhase);
8797 HRESULT CALLBACK IPropertyStorage_Commit_Proxy(
8798     IPropertyStorage* This,
8799     DWORD grfCommitFlags);
8800 void __RPC_STUB IPropertyStorage_Commit_Stub(
8801     struct IRpcStubBuffer* This,
8802     struct IRpcChannelBuffer* pRpcChannelBuffer,
8803     PRPC_MESSAGE pRpcMessage,
8804     DWORD* pdwStubPhase);
8805 HRESULT CALLBACK IPropertyStorage_Revert_Proxy(
8806     IPropertyStorage* This);
8807 void __RPC_STUB IPropertyStorage_Revert_Stub(
8808     struct IRpcStubBuffer* This,
8809     struct IRpcChannelBuffer* pRpcChannelBuffer,
8810     PRPC_MESSAGE pRpcMessage,
8811     DWORD* pdwStubPhase);
8812 HRESULT CALLBACK IPropertyStorage_Enum_Proxy(
8813     IPropertyStorage* This,
8814     IEnumSTATPROPSTG** ppenum);
8815 void __RPC_STUB IPropertyStorage_Enum_Stub(
8816     struct IRpcStubBuffer* This,
8817     struct IRpcChannelBuffer* pRpcChannelBuffer,
8818     PRPC_MESSAGE pRpcMessage,
8819     DWORD* pdwStubPhase);
8820 HRESULT CALLBACK IPropertyStorage_SetTimes_Proxy(
8821     IPropertyStorage* This,
8822     const FILETIME* pctime,
8823     const FILETIME* patime,
8824     const FILETIME* pmtime);
8825 void __RPC_STUB IPropertyStorage_SetTimes_Stub(
8826     struct IRpcStubBuffer* This,
8827     struct IRpcChannelBuffer* pRpcChannelBuffer,
8828     PRPC_MESSAGE pRpcMessage,
8829     DWORD* pdwStubPhase);
8830 HRESULT CALLBACK IPropertyStorage_SetClass_Proxy(
8831     IPropertyStorage* This,
8832     REFCLSID clsid);
8833 void __RPC_STUB IPropertyStorage_SetClass_Stub(
8834     struct IRpcStubBuffer* This,
8835     struct IRpcChannelBuffer* pRpcChannelBuffer,
8836     PRPC_MESSAGE pRpcMessage,
8837     DWORD* pdwStubPhase);
8838 HRESULT CALLBACK IPropertyStorage_Stat_Proxy(
8839     IPropertyStorage* This,
8840     STATPROPSETSTG* statpsstg);
8841 void __RPC_STUB IPropertyStorage_Stat_Stub(
8842     struct IRpcStubBuffer* This,
8843     struct IRpcChannelBuffer* pRpcChannelBuffer,
8844     PRPC_MESSAGE pRpcMessage,
8845     DWORD* pdwStubPhase);
8846
8847 #endif  /* __IPropertyStorage_INTERFACE_DEFINED__ */
8848
8849 #ifndef __IPropertySetStorage_FWD_DEFINED__
8850 #define __IPropertySetStorage_FWD_DEFINED__
8851 typedef struct IPropertySetStorage IPropertySetStorage;
8852 #endif
8853
8854 typedef IPropertySetStorage *LPPROPERTYSETSTORAGE;
8855
8856 /*****************************************************************************
8857  * IPropertySetStorage interface
8858  */
8859 #ifndef __IPropertySetStorage_INTERFACE_DEFINED__
8860 #define __IPropertySetStorage_INTERFACE_DEFINED__
8861
8862 DEFINE_GUID(IID_IPropertySetStorage, 0x0000013a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
8863 #if defined(__cplusplus) && !defined(CINTERFACE)
8864 struct IPropertySetStorage : public IUnknown
8865 {
8866     virtual HRESULT STDMETHODCALLTYPE Create(
8867         REFFMTID rfmtid,
8868         const CLSID* pclsid,
8869         DWORD grfFlags,
8870         DWORD grfMode,
8871         IPropertyStorage** ppprstg) = 0;
8872
8873     virtual HRESULT STDMETHODCALLTYPE Open(
8874         REFFMTID rfmtid,
8875         DWORD grfMode,
8876         IPropertyStorage** ppprstg) = 0;
8877
8878     virtual HRESULT STDMETHODCALLTYPE Delete(
8879         REFFMTID rfmtid) = 0;
8880
8881     virtual HRESULT STDMETHODCALLTYPE Enum(
8882         IEnumSTATPROPSETSTG** ppenum) = 0;
8883
8884 };
8885 #else
8886 typedef struct IPropertySetStorageVtbl IPropertySetStorageVtbl;
8887 struct IPropertySetStorage {
8888     const IPropertySetStorageVtbl* lpVtbl;
8889 };
8890 struct IPropertySetStorageVtbl {
8891     ICOM_MSVTABLE_COMPAT_FIELDS
8892
8893     /*** IUnknown methods ***/
8894     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8895         IPropertySetStorage* This,
8896         REFIID riid,
8897         void** ppvObject);
8898
8899     ULONG (STDMETHODCALLTYPE *AddRef)(
8900         IPropertySetStorage* This);
8901
8902     ULONG (STDMETHODCALLTYPE *Release)(
8903         IPropertySetStorage* This);
8904
8905     /*** IPropertySetStorage methods ***/
8906     HRESULT (STDMETHODCALLTYPE *Create)(
8907         IPropertySetStorage* This,
8908         REFFMTID rfmtid,
8909         const CLSID* pclsid,
8910         DWORD grfFlags,
8911         DWORD grfMode,
8912         IPropertyStorage** ppprstg);
8913
8914     HRESULT (STDMETHODCALLTYPE *Open)(
8915         IPropertySetStorage* This,
8916         REFFMTID rfmtid,
8917         DWORD grfMode,
8918         IPropertyStorage** ppprstg);
8919
8920     HRESULT (STDMETHODCALLTYPE *Delete)(
8921         IPropertySetStorage* This,
8922         REFFMTID rfmtid);
8923
8924     HRESULT (STDMETHODCALLTYPE *Enum)(
8925         IPropertySetStorage* This,
8926         IEnumSTATPROPSETSTG** ppenum);
8927
8928 };
8929
8930 /*** IUnknown methods ***/
8931 #define IPropertySetStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
8932 #define IPropertySetStorage_AddRef(p) (p)->lpVtbl->AddRef(p)
8933 #define IPropertySetStorage_Release(p) (p)->lpVtbl->Release(p)
8934 /*** IPropertySetStorage methods ***/
8935 #define IPropertySetStorage_Create(p,a,b,c,d,e) (p)->lpVtbl->Create(p,a,b,c,d,e)
8936 #define IPropertySetStorage_Open(p,a,b,c) (p)->lpVtbl->Open(p,a,b,c)
8937 #define IPropertySetStorage_Delete(p,a) (p)->lpVtbl->Delete(p,a)
8938 #define IPropertySetStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a)
8939
8940 #endif
8941
8942 #define IPropertySetStorage_METHODS \
8943     ICOM_MSVTABLE_COMPAT_FIELDS \
8944     /*** IUnknown methods ***/ \
8945     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
8946     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
8947     STDMETHOD_(ULONG,Release)(THIS) PURE; \
8948     /*** IPropertySetStorage methods ***/ \
8949     STDMETHOD_(HRESULT,Create)(THIS_ REFFMTID rfmtid, const CLSID* pclsid, DWORD grfFlags, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \
8950     STDMETHOD_(HRESULT,Open)(THIS_ REFFMTID rfmtid, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \
8951     STDMETHOD_(HRESULT,Delete)(THIS_ REFFMTID rfmtid) PURE; \
8952     STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE;
8953
8954 HRESULT CALLBACK IPropertySetStorage_Create_Proxy(
8955     IPropertySetStorage* This,
8956     REFFMTID rfmtid,
8957     const CLSID* pclsid,
8958     DWORD grfFlags,
8959     DWORD grfMode,
8960     IPropertyStorage** ppprstg);
8961 void __RPC_STUB IPropertySetStorage_Create_Stub(
8962     struct IRpcStubBuffer* This,
8963     struct IRpcChannelBuffer* pRpcChannelBuffer,
8964     PRPC_MESSAGE pRpcMessage,
8965     DWORD* pdwStubPhase);
8966 HRESULT CALLBACK IPropertySetStorage_Open_Proxy(
8967     IPropertySetStorage* This,
8968     REFFMTID rfmtid,
8969     DWORD grfMode,
8970     IPropertyStorage** ppprstg);
8971 void __RPC_STUB IPropertySetStorage_Open_Stub(
8972     struct IRpcStubBuffer* This,
8973     struct IRpcChannelBuffer* pRpcChannelBuffer,
8974     PRPC_MESSAGE pRpcMessage,
8975     DWORD* pdwStubPhase);
8976 HRESULT CALLBACK IPropertySetStorage_Delete_Proxy(
8977     IPropertySetStorage* This,
8978     REFFMTID rfmtid);
8979 void __RPC_STUB IPropertySetStorage_Delete_Stub(
8980     struct IRpcStubBuffer* This,
8981     struct IRpcChannelBuffer* pRpcChannelBuffer,
8982     PRPC_MESSAGE pRpcMessage,
8983     DWORD* pdwStubPhase);
8984 HRESULT CALLBACK IPropertySetStorage_Enum_Proxy(
8985     IPropertySetStorage* This,
8986     IEnumSTATPROPSETSTG** ppenum);
8987 void __RPC_STUB IPropertySetStorage_Enum_Stub(
8988     struct IRpcStubBuffer* This,
8989     struct IRpcChannelBuffer* pRpcChannelBuffer,
8990     PRPC_MESSAGE pRpcMessage,
8991     DWORD* pdwStubPhase);
8992
8993 #endif  /* __IPropertySetStorage_INTERFACE_DEFINED__ */
8994
8995 typedef IEnumSTATPROPSTG *LPENUMSTATPROPSTG;
8996
8997 /*****************************************************************************
8998  * IEnumSTATPROPSTG interface
8999  */
9000 #ifndef __IEnumSTATPROPSTG_INTERFACE_DEFINED__
9001 #define __IEnumSTATPROPSTG_INTERFACE_DEFINED__
9002
9003 DEFINE_GUID(IID_IEnumSTATPROPSTG, 0x00000139, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
9004 #if defined(__cplusplus) && !defined(CINTERFACE)
9005 struct IEnumSTATPROPSTG : public IUnknown
9006 {
9007     virtual HRESULT STDMETHODCALLTYPE Next(
9008         ULONG celt,
9009         STATPROPSTG* rgelt,
9010         ULONG* pceltFetched) = 0;
9011
9012     virtual HRESULT STDMETHODCALLTYPE Skip(
9013         ULONG celt) = 0;
9014
9015     virtual HRESULT STDMETHODCALLTYPE Reset(
9016         ) = 0;
9017
9018     virtual HRESULT STDMETHODCALLTYPE Clone(
9019         IEnumSTATPROPSTG** ppenum) = 0;
9020
9021 };
9022 #else
9023 typedef struct IEnumSTATPROPSTGVtbl IEnumSTATPROPSTGVtbl;
9024 struct IEnumSTATPROPSTG {
9025     const IEnumSTATPROPSTGVtbl* lpVtbl;
9026 };
9027 struct IEnumSTATPROPSTGVtbl {
9028     ICOM_MSVTABLE_COMPAT_FIELDS
9029
9030     /*** IUnknown methods ***/
9031     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9032         IEnumSTATPROPSTG* This,
9033         REFIID riid,
9034         void** ppvObject);
9035
9036     ULONG (STDMETHODCALLTYPE *AddRef)(
9037         IEnumSTATPROPSTG* This);
9038
9039     ULONG (STDMETHODCALLTYPE *Release)(
9040         IEnumSTATPROPSTG* This);
9041
9042     /*** IEnumSTATPROPSTG methods ***/
9043     HRESULT (STDMETHODCALLTYPE *Next)(
9044         IEnumSTATPROPSTG* This,
9045         ULONG celt,
9046         STATPROPSTG* rgelt,
9047         ULONG* pceltFetched);
9048
9049     HRESULT (STDMETHODCALLTYPE *Skip)(
9050         IEnumSTATPROPSTG* This,
9051         ULONG celt);
9052
9053     HRESULT (STDMETHODCALLTYPE *Reset)(
9054         IEnumSTATPROPSTG* This);
9055
9056     HRESULT (STDMETHODCALLTYPE *Clone)(
9057         IEnumSTATPROPSTG* This,
9058         IEnumSTATPROPSTG** ppenum);
9059
9060 };
9061
9062 /*** IUnknown methods ***/
9063 #define IEnumSTATPROPSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
9064 #define IEnumSTATPROPSTG_AddRef(p) (p)->lpVtbl->AddRef(p)
9065 #define IEnumSTATPROPSTG_Release(p) (p)->lpVtbl->Release(p)
9066 /*** IEnumSTATPROPSTG methods ***/
9067 #define IEnumSTATPROPSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
9068 #define IEnumSTATPROPSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a)
9069 #define IEnumSTATPROPSTG_Reset(p) (p)->lpVtbl->Reset(p)
9070 #define IEnumSTATPROPSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a)
9071
9072 #endif
9073
9074 #define IEnumSTATPROPSTG_METHODS \
9075     ICOM_MSVTABLE_COMPAT_FIELDS \
9076     /*** IUnknown methods ***/ \
9077     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
9078     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
9079     STDMETHOD_(ULONG,Release)(THIS) PURE; \
9080     /*** IEnumSTATPROPSTG methods ***/ \
9081     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSTG* rgelt, ULONG* pceltFetched) PURE; \
9082     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
9083     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
9084     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSTG** ppenum) PURE;
9085
9086 HRESULT CALLBACK IEnumSTATPROPSTG_RemoteNext_Proxy(
9087     IEnumSTATPROPSTG* This,
9088     ULONG celt,
9089     STATPROPSTG* rgelt,
9090     ULONG* pceltFetched);
9091 void __RPC_STUB IEnumSTATPROPSTG_RemoteNext_Stub(
9092     struct IRpcStubBuffer* This,
9093     struct IRpcChannelBuffer* pRpcChannelBuffer,
9094     PRPC_MESSAGE pRpcMessage,
9095     DWORD* pdwStubPhase);
9096 HRESULT CALLBACK IEnumSTATPROPSTG_Next_Proxy(
9097     IEnumSTATPROPSTG* This,
9098     ULONG celt,
9099     STATPROPSTG* rgelt,
9100     ULONG* pceltFetched);
9101 HRESULT __RPC_STUB IEnumSTATPROPSTG_Next_Stub(
9102     IEnumSTATPROPSTG* This,
9103     ULONG celt,
9104     STATPROPSTG* rgelt,
9105     ULONG* pceltFetched);
9106 HRESULT CALLBACK IEnumSTATPROPSTG_Skip_Proxy(
9107     IEnumSTATPROPSTG* This,
9108     ULONG celt);
9109 void __RPC_STUB IEnumSTATPROPSTG_Skip_Stub(
9110     struct IRpcStubBuffer* This,
9111     struct IRpcChannelBuffer* pRpcChannelBuffer,
9112     PRPC_MESSAGE pRpcMessage,
9113     DWORD* pdwStubPhase);
9114 HRESULT CALLBACK IEnumSTATPROPSTG_Reset_Proxy(
9115     IEnumSTATPROPSTG* This);
9116 void __RPC_STUB IEnumSTATPROPSTG_Reset_Stub(
9117     struct IRpcStubBuffer* This,
9118     struct IRpcChannelBuffer* pRpcChannelBuffer,
9119     PRPC_MESSAGE pRpcMessage,
9120     DWORD* pdwStubPhase);
9121 HRESULT CALLBACK IEnumSTATPROPSTG_Clone_Proxy(
9122     IEnumSTATPROPSTG* This,
9123     IEnumSTATPROPSTG** ppenum);
9124 void __RPC_STUB IEnumSTATPROPSTG_Clone_Stub(
9125     struct IRpcStubBuffer* This,
9126     struct IRpcChannelBuffer* pRpcChannelBuffer,
9127     PRPC_MESSAGE pRpcMessage,
9128     DWORD* pdwStubPhase);
9129
9130 #endif  /* __IEnumSTATPROPSTG_INTERFACE_DEFINED__ */
9131
9132 typedef IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
9133
9134 /*****************************************************************************
9135  * IEnumSTATPROPSETSTG interface
9136  */
9137 #ifndef __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
9138 #define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
9139
9140 DEFINE_GUID(IID_IEnumSTATPROPSETSTG, 0x0000013b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
9141 #if defined(__cplusplus) && !defined(CINTERFACE)
9142 struct IEnumSTATPROPSETSTG : public IUnknown
9143 {
9144     virtual HRESULT STDMETHODCALLTYPE Next(
9145         ULONG celt,
9146         STATPROPSETSTG* rgelt,
9147         ULONG* pceltFetched) = 0;
9148
9149     virtual HRESULT STDMETHODCALLTYPE Skip(
9150         ULONG celt) = 0;
9151
9152     virtual HRESULT STDMETHODCALLTYPE Reset(
9153         ) = 0;
9154
9155     virtual HRESULT STDMETHODCALLTYPE Clone(
9156         IEnumSTATPROPSETSTG** ppenum) = 0;
9157
9158 };
9159 #else
9160 typedef struct IEnumSTATPROPSETSTGVtbl IEnumSTATPROPSETSTGVtbl;
9161 struct IEnumSTATPROPSETSTG {
9162     const IEnumSTATPROPSETSTGVtbl* lpVtbl;
9163 };
9164 struct IEnumSTATPROPSETSTGVtbl {
9165     ICOM_MSVTABLE_COMPAT_FIELDS
9166
9167     /*** IUnknown methods ***/
9168     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9169         IEnumSTATPROPSETSTG* This,
9170         REFIID riid,
9171         void** ppvObject);
9172
9173     ULONG (STDMETHODCALLTYPE *AddRef)(
9174         IEnumSTATPROPSETSTG* This);
9175
9176     ULONG (STDMETHODCALLTYPE *Release)(
9177         IEnumSTATPROPSETSTG* This);
9178
9179     /*** IEnumSTATPROPSETSTG methods ***/
9180     HRESULT (STDMETHODCALLTYPE *Next)(
9181         IEnumSTATPROPSETSTG* This,
9182         ULONG celt,
9183         STATPROPSETSTG* rgelt,
9184         ULONG* pceltFetched);
9185
9186     HRESULT (STDMETHODCALLTYPE *Skip)(
9187         IEnumSTATPROPSETSTG* This,
9188         ULONG celt);
9189
9190     HRESULT (STDMETHODCALLTYPE *Reset)(
9191         IEnumSTATPROPSETSTG* This);
9192
9193     HRESULT (STDMETHODCALLTYPE *Clone)(
9194         IEnumSTATPROPSETSTG* This,
9195         IEnumSTATPROPSETSTG** ppenum);
9196
9197 };
9198
9199 /*** IUnknown methods ***/
9200 #define IEnumSTATPROPSETSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
9201 #define IEnumSTATPROPSETSTG_AddRef(p) (p)->lpVtbl->AddRef(p)
9202 #define IEnumSTATPROPSETSTG_Release(p) (p)->lpVtbl->Release(p)
9203 /*** IEnumSTATPROPSETSTG methods ***/
9204 #define IEnumSTATPROPSETSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
9205 #define IEnumSTATPROPSETSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a)
9206 #define IEnumSTATPROPSETSTG_Reset(p) (p)->lpVtbl->Reset(p)
9207 #define IEnumSTATPROPSETSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a)
9208
9209 #endif
9210
9211 #define IEnumSTATPROPSETSTG_METHODS \
9212     ICOM_MSVTABLE_COMPAT_FIELDS \
9213     /*** IUnknown methods ***/ \
9214     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
9215     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
9216     STDMETHOD_(ULONG,Release)(THIS) PURE; \
9217     /*** IEnumSTATPROPSETSTG methods ***/ \
9218     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSETSTG* rgelt, ULONG* pceltFetched) PURE; \
9219     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
9220     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
9221     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE;
9222
9223 HRESULT CALLBACK IEnumSTATPROPSETSTG_RemoteNext_Proxy(
9224     IEnumSTATPROPSETSTG* This,
9225     ULONG celt,
9226     STATPROPSETSTG* rgelt,
9227     ULONG* pceltFetched);
9228 void __RPC_STUB IEnumSTATPROPSETSTG_RemoteNext_Stub(
9229     struct IRpcStubBuffer* This,
9230     struct IRpcChannelBuffer* pRpcChannelBuffer,
9231     PRPC_MESSAGE pRpcMessage,
9232     DWORD* pdwStubPhase);
9233 HRESULT CALLBACK IEnumSTATPROPSETSTG_Next_Proxy(
9234     IEnumSTATPROPSETSTG* This,
9235     ULONG celt,
9236     STATPROPSETSTG* rgelt,
9237     ULONG* pceltFetched);
9238 HRESULT __RPC_STUB IEnumSTATPROPSETSTG_Next_Stub(
9239     IEnumSTATPROPSETSTG* This,
9240     ULONG celt,
9241     STATPROPSETSTG* rgelt,
9242     ULONG* pceltFetched);
9243 HRESULT CALLBACK IEnumSTATPROPSETSTG_Skip_Proxy(
9244     IEnumSTATPROPSETSTG* This,
9245     ULONG celt);
9246 void __RPC_STUB IEnumSTATPROPSETSTG_Skip_Stub(
9247     struct IRpcStubBuffer* This,
9248     struct IRpcChannelBuffer* pRpcChannelBuffer,
9249     PRPC_MESSAGE pRpcMessage,
9250     DWORD* pdwStubPhase);
9251 HRESULT CALLBACK IEnumSTATPROPSETSTG_Reset_Proxy(
9252     IEnumSTATPROPSETSTG* This);
9253 void __RPC_STUB IEnumSTATPROPSETSTG_Reset_Stub(
9254     struct IRpcStubBuffer* This,
9255     struct IRpcChannelBuffer* pRpcChannelBuffer,
9256     PRPC_MESSAGE pRpcMessage,
9257     DWORD* pdwStubPhase);
9258 HRESULT CALLBACK IEnumSTATPROPSETSTG_Clone_Proxy(
9259     IEnumSTATPROPSETSTG* This,
9260     IEnumSTATPROPSETSTG** ppenum);
9261 void __RPC_STUB IEnumSTATPROPSETSTG_Clone_Stub(
9262     struct IRpcStubBuffer* This,
9263     struct IRpcChannelBuffer* pRpcChannelBuffer,
9264     PRPC_MESSAGE pRpcMessage,
9265     DWORD* pdwStubPhase);
9266
9267 #endif  /* __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ */
9268
9269 #ifndef __IClientSecurity_FWD_DEFINED__
9270 #define __IClientSecurity_FWD_DEFINED__
9271 typedef struct IClientSecurity IClientSecurity;
9272 #endif
9273
9274 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
9275     DWORD dwAuthnSvc;
9276     DWORD dwAuthzSvc;
9277     OLECHAR *pPrincipalName;
9278     HRESULT hr;
9279 } SOLE_AUTHENTICATION_SERVICE;
9280
9281 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
9282
9283 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
9284     EOAC_NONE = 0x0,
9285     EOAC_MUTUAL_AUTH = 0x1,
9286     EOAC_CLOAKING = 0x10,
9287     EOAC_SECURE_REFS = 0x2,
9288     EOAC_ACCESS_CONTROL = 0x4,
9289     EOAC_APPID = 0x8
9290 } EOLE_AUTHENTICATION_CAPABILITIES;
9291
9292 /*****************************************************************************
9293  * IClientSecurity interface
9294  */
9295 #ifndef __IClientSecurity_INTERFACE_DEFINED__
9296 #define __IClientSecurity_INTERFACE_DEFINED__
9297
9298 DEFINE_GUID(IID_IClientSecurity, 0x0000013d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
9299 #if defined(__cplusplus) && !defined(CINTERFACE)
9300 struct IClientSecurity : public IUnknown
9301 {
9302     virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
9303         IUnknown* pProxy,
9304         DWORD* pAuthnSvc,
9305         DWORD* pAuthzSvc,
9306         OLECHAR** pServerPrincName,
9307         DWORD* pAuthnLevel,
9308         DWORD* pImpLevel,
9309         void** pAuthInfo,
9310         DWORD* pCapabilites) = 0;
9311
9312     virtual HRESULT STDMETHODCALLTYPE SetBlanket(
9313         IUnknown* pProxy,
9314         DWORD AuthnSvc,
9315         DWORD AuthzSvc,
9316         OLECHAR* pServerPrincName,
9317         DWORD AuthnLevel,
9318         DWORD ImpLevel,
9319         void* pAuthInfo,
9320         DWORD Capabilities) = 0;
9321
9322     virtual HRESULT STDMETHODCALLTYPE CopyProxy(
9323         IUnknown* pProxy,
9324         IUnknown** ppCopy) = 0;
9325
9326 };
9327 #else
9328 typedef struct IClientSecurityVtbl IClientSecurityVtbl;
9329 struct IClientSecurity {
9330     const IClientSecurityVtbl* lpVtbl;
9331 };
9332 struct IClientSecurityVtbl {
9333     ICOM_MSVTABLE_COMPAT_FIELDS
9334
9335     /*** IUnknown methods ***/
9336     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9337         IClientSecurity* This,
9338         REFIID riid,
9339         void** ppvObject);
9340
9341     ULONG (STDMETHODCALLTYPE *AddRef)(
9342         IClientSecurity* This);
9343
9344     ULONG (STDMETHODCALLTYPE *Release)(
9345         IClientSecurity* This);
9346
9347     /*** IClientSecurity methods ***/
9348     HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
9349         IClientSecurity* This,
9350         IUnknown* pProxy,
9351         DWORD* pAuthnSvc,
9352         DWORD* pAuthzSvc,
9353         OLECHAR** pServerPrincName,
9354         DWORD* pAuthnLevel,
9355         DWORD* pImpLevel,
9356         void** pAuthInfo,
9357         DWORD* pCapabilites);
9358
9359     HRESULT (STDMETHODCALLTYPE *SetBlanket)(
9360         IClientSecurity* This,
9361         IUnknown* pProxy,
9362         DWORD AuthnSvc,
9363         DWORD AuthzSvc,
9364         OLECHAR* pServerPrincName,
9365         DWORD AuthnLevel,
9366         DWORD ImpLevel,
9367         void* pAuthInfo,
9368         DWORD Capabilities);
9369
9370     HRESULT (STDMETHODCALLTYPE *CopyProxy)(
9371         IClientSecurity* This,
9372         IUnknown* pProxy,
9373         IUnknown** ppCopy);
9374
9375 };
9376
9377 /*** IUnknown methods ***/
9378 #define IClientSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
9379 #define IClientSecurity_AddRef(p) (p)->lpVtbl->AddRef(p)
9380 #define IClientSecurity_Release(p) (p)->lpVtbl->Release(p)
9381 /*** IClientSecurity methods ***/
9382 #define IClientSecurity_QueryBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g,h)
9383 #define IClientSecurity_SetBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->SetBlanket(p,a,b,c,d,e,f,g,h)
9384 #define IClientSecurity_CopyProxy(p,a,b) (p)->lpVtbl->CopyProxy(p,a,b)
9385
9386 #endif
9387
9388 #define IClientSecurity_METHODS \
9389     ICOM_MSVTABLE_COMPAT_FIELDS \
9390     /*** IUnknown methods ***/ \
9391     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
9392     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
9393     STDMETHOD_(ULONG,Release)(THIS) PURE; \
9394     /*** IClientSecurity methods ***/ \
9395     STDMETHOD_(HRESULT,QueryBlanket)(THIS_ IUnknown* pProxy, DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, void** pAuthInfo, DWORD* pCapabilites) PURE; \
9396     STDMETHOD_(HRESULT,SetBlanket)(THIS_ IUnknown* pProxy, DWORD AuthnSvc, DWORD AuthzSvc, OLECHAR* pServerPrincName, DWORD AuthnLevel, DWORD ImpLevel, void* pAuthInfo, DWORD Capabilities) PURE; \
9397     STDMETHOD_(HRESULT,CopyProxy)(THIS_ IUnknown* pProxy, IUnknown** ppCopy) PURE;
9398
9399 HRESULT CALLBACK IClientSecurity_QueryBlanket_Proxy(
9400     IClientSecurity* This,
9401     IUnknown* pProxy,
9402     DWORD* pAuthnSvc,
9403     DWORD* pAuthzSvc,
9404     OLECHAR** pServerPrincName,
9405     DWORD* pAuthnLevel,
9406     DWORD* pImpLevel,
9407     void** pAuthInfo,
9408     DWORD* pCapabilites);
9409 void __RPC_STUB IClientSecurity_QueryBlanket_Stub(
9410     struct IRpcStubBuffer* This,
9411     struct IRpcChannelBuffer* pRpcChannelBuffer,
9412     PRPC_MESSAGE pRpcMessage,
9413     DWORD* pdwStubPhase);
9414 HRESULT CALLBACK IClientSecurity_SetBlanket_Proxy(
9415     IClientSecurity* This,
9416     IUnknown* pProxy,
9417     DWORD AuthnSvc,
9418     DWORD AuthzSvc,
9419     OLECHAR* pServerPrincName,
9420     DWORD AuthnLevel,
9421     DWORD ImpLevel,
9422     void* pAuthInfo,
9423     DWORD Capabilities);
9424 void __RPC_STUB IClientSecurity_SetBlanket_Stub(
9425     struct IRpcStubBuffer* This,
9426     struct IRpcChannelBuffer* pRpcChannelBuffer,
9427     PRPC_MESSAGE pRpcMessage,
9428     DWORD* pdwStubPhase);
9429 HRESULT CALLBACK IClientSecurity_CopyProxy_Proxy(
9430     IClientSecurity* This,
9431     IUnknown* pProxy,
9432     IUnknown** ppCopy);
9433 void __RPC_STUB IClientSecurity_CopyProxy_Stub(
9434     struct IRpcStubBuffer* This,
9435     struct IRpcChannelBuffer* pRpcChannelBuffer,
9436     PRPC_MESSAGE pRpcMessage,
9437     DWORD* pdwStubPhase);
9438
9439 #endif  /* __IClientSecurity_INTERFACE_DEFINED__ */
9440
9441 #ifndef __IServerSecurity_FWD_DEFINED__
9442 #define __IServerSecurity_FWD_DEFINED__
9443 typedef struct IServerSecurity IServerSecurity;
9444 #endif
9445
9446 /*****************************************************************************
9447  * IServerSecurity interface
9448  */
9449 #ifndef __IServerSecurity_INTERFACE_DEFINED__
9450 #define __IServerSecurity_INTERFACE_DEFINED__
9451
9452 DEFINE_GUID(IID_IServerSecurity, 0x0000013e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
9453 #if defined(__cplusplus) && !defined(CINTERFACE)
9454 struct IServerSecurity : public IUnknown
9455 {
9456     virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
9457         DWORD* pAuthnSvc,
9458         DWORD* pAuthzSvc,
9459         OLECHAR** pServerPrincName,
9460         DWORD* pAuthnLevel,
9461         DWORD* pImpLevel,
9462         void** pPrivs,
9463         DWORD* pCapabilities) = 0;
9464
9465     virtual HRESULT STDMETHODCALLTYPE ImpersonateClient(
9466         ) = 0;
9467
9468     virtual HRESULT STDMETHODCALLTYPE RevertToSelf(
9469         ) = 0;
9470
9471     virtual BOOL STDMETHODCALLTYPE IsImpersonating(
9472         ) = 0;
9473
9474 };
9475 #else
9476 typedef struct IServerSecurityVtbl IServerSecurityVtbl;
9477 struct IServerSecurity {
9478     const IServerSecurityVtbl* lpVtbl;
9479 };
9480 struct IServerSecurityVtbl {
9481     ICOM_MSVTABLE_COMPAT_FIELDS
9482
9483     /*** IUnknown methods ***/
9484     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9485         IServerSecurity* This,
9486         REFIID riid,
9487         void** ppvObject);
9488
9489     ULONG (STDMETHODCALLTYPE *AddRef)(
9490         IServerSecurity* This);
9491
9492     ULONG (STDMETHODCALLTYPE *Release)(
9493         IServerSecurity* This);
9494
9495     /*** IServerSecurity methods ***/
9496     HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
9497         IServerSecurity* This,
9498         DWORD* pAuthnSvc,
9499         DWORD* pAuthzSvc,
9500         OLECHAR** pServerPrincName,
9501         DWORD* pAuthnLevel,
9502         DWORD* pImpLevel,
9503         void** pPrivs,
9504         DWORD* pCapabilities);
9505
9506     HRESULT (STDMETHODCALLTYPE *ImpersonateClient)(
9507         IServerSecurity* This);
9508
9509     HRESULT (STDMETHODCALLTYPE *RevertToSelf)(
9510         IServerSecurity* This);
9511
9512     BOOL (STDMETHODCALLTYPE *IsImpersonating)(
9513         IServerSecurity* This);
9514
9515 };
9516
9517 /*** IUnknown methods ***/
9518 #define IServerSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
9519 #define IServerSecurity_AddRef(p) (p)->lpVtbl->AddRef(p)
9520 #define IServerSecurity_Release(p) (p)->lpVtbl->Release(p)
9521 /*** IServerSecurity methods ***/
9522 #define IServerSecurity_QueryBlanket(p,a,b,c,d,e,f,g) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g)
9523 #define IServerSecurity_ImpersonateClient(p) (p)->lpVtbl->ImpersonateClient(p)
9524 #define IServerSecurity_RevertToSelf(p) (p)->lpVtbl->RevertToSelf(p)
9525 #define IServerSecurity_IsImpersonating(p) (p)->lpVtbl->IsImpersonating(p)
9526
9527 #endif
9528
9529 #define IServerSecurity_METHODS \
9530     ICOM_MSVTABLE_COMPAT_FIELDS \
9531     /*** IUnknown methods ***/ \
9532     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
9533     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
9534     STDMETHOD_(ULONG,Release)(THIS) PURE; \
9535     /*** IServerSecurity methods ***/ \
9536     STDMETHOD_(HRESULT,QueryBlanket)(THIS_ DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, void** pPrivs, DWORD* pCapabilities) PURE; \
9537     STDMETHOD_(HRESULT,ImpersonateClient)(THIS) PURE; \
9538     STDMETHOD_(HRESULT,RevertToSelf)(THIS) PURE; \
9539     STDMETHOD_(BOOL,IsImpersonating)(THIS) PURE;
9540
9541 HRESULT CALLBACK IServerSecurity_QueryBlanket_Proxy(
9542     IServerSecurity* This,
9543     DWORD* pAuthnSvc,
9544     DWORD* pAuthzSvc,
9545     OLECHAR** pServerPrincName,
9546     DWORD* pAuthnLevel,
9547     DWORD* pImpLevel,
9548     void** pPrivs,
9549     DWORD* pCapabilities);
9550 void __RPC_STUB IServerSecurity_QueryBlanket_Stub(
9551     struct IRpcStubBuffer* This,
9552     struct IRpcChannelBuffer* pRpcChannelBuffer,
9553     PRPC_MESSAGE pRpcMessage,
9554     DWORD* pdwStubPhase);
9555 HRESULT CALLBACK IServerSecurity_ImpersonateClient_Proxy(
9556     IServerSecurity* This);
9557 void __RPC_STUB IServerSecurity_ImpersonateClient_Stub(
9558     struct IRpcStubBuffer* This,
9559     struct IRpcChannelBuffer* pRpcChannelBuffer,
9560     PRPC_MESSAGE pRpcMessage,
9561     DWORD* pdwStubPhase);
9562 HRESULT CALLBACK IServerSecurity_RevertToSelf_Proxy(
9563     IServerSecurity* This);
9564 void __RPC_STUB IServerSecurity_RevertToSelf_Stub(
9565     struct IRpcStubBuffer* This,
9566     struct IRpcChannelBuffer* pRpcChannelBuffer,
9567     PRPC_MESSAGE pRpcMessage,
9568     DWORD* pdwStubPhase);
9569 BOOL CALLBACK IServerSecurity_IsImpersonating_Proxy(
9570     IServerSecurity* This);
9571 void __RPC_STUB IServerSecurity_IsImpersonating_Stub(
9572     struct IRpcStubBuffer* This,
9573     struct IRpcChannelBuffer* pRpcChannelBuffer,
9574     PRPC_MESSAGE pRpcMessage,
9575     DWORD* pdwStubPhase);
9576
9577 #endif  /* __IServerSecurity_INTERFACE_DEFINED__ */
9578
9579 #ifndef __IAsyncSetup_FWD_DEFINED__
9580 #define __IAsyncSetup_FWD_DEFINED__
9581 typedef struct IAsyncSetup IAsyncSetup;
9582 #endif
9583
9584 /*****************************************************************************
9585  * IAsyncSetup interface
9586  */
9587 #ifndef __IAsyncSetup_INTERFACE_DEFINED__
9588 #define __IAsyncSetup_INTERFACE_DEFINED__
9589
9590 DEFINE_GUID(IID_IAsyncSetup, 0x00000024, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
9591 #if defined(__cplusplus) && !defined(CINTERFACE)
9592 struct IAsyncSetup : public IUnknown
9593 {
9594     virtual HRESULT STDMETHODCALLTYPE GetAsyncManager(
9595         REFIID riid,
9596         IUnknown* pOuter,
9597         DWORD dwFlags,
9598         IUnknown** ppInner,
9599         IAsyncManager** ppAsyncMgr) = 0;
9600
9601 };
9602 #else
9603 typedef struct IAsyncSetupVtbl IAsyncSetupVtbl;
9604 struct IAsyncSetup {
9605     const IAsyncSetupVtbl* lpVtbl;
9606 };
9607 struct IAsyncSetupVtbl {
9608     ICOM_MSVTABLE_COMPAT_FIELDS
9609
9610     /*** IUnknown methods ***/
9611     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9612         IAsyncSetup* This,
9613         REFIID riid,
9614         void** ppvObject);
9615
9616     ULONG (STDMETHODCALLTYPE *AddRef)(
9617         IAsyncSetup* This);
9618
9619     ULONG (STDMETHODCALLTYPE *Release)(
9620         IAsyncSetup* This);
9621
9622     /*** IAsyncSetup methods ***/
9623     HRESULT (STDMETHODCALLTYPE *GetAsyncManager)(
9624         IAsyncSetup* This,
9625         REFIID riid,
9626         IUnknown* pOuter,
9627         DWORD dwFlags,
9628         IUnknown** ppInner,
9629         IAsyncManager** ppAsyncMgr);
9630
9631 };
9632
9633 /*** IUnknown methods ***/
9634 #define IAsyncSetup_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
9635 #define IAsyncSetup_AddRef(p) (p)->lpVtbl->AddRef(p)
9636 #define IAsyncSetup_Release(p) (p)->lpVtbl->Release(p)
9637 /*** IAsyncSetup methods ***/
9638 #define IAsyncSetup_GetAsyncManager(p,a,b,c,d,e) (p)->lpVtbl->GetAsyncManager(p,a,b,c,d,e)
9639
9640 #endif
9641
9642 #define IAsyncSetup_METHODS \
9643     ICOM_MSVTABLE_COMPAT_FIELDS \
9644     /*** IUnknown methods ***/ \
9645     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
9646     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
9647     STDMETHOD_(ULONG,Release)(THIS) PURE; \
9648     /*** IAsyncSetup methods ***/ \
9649     STDMETHOD_(HRESULT,GetAsyncManager)(THIS_ REFIID riid, IUnknown* pOuter, DWORD dwFlags, IUnknown** ppInner, IAsyncManager** ppAsyncMgr) PURE;
9650
9651 HRESULT CALLBACK IAsyncSetup_GetAsyncManager_Proxy(
9652     IAsyncSetup* This,
9653     REFIID riid,
9654     IUnknown* pOuter,
9655     DWORD dwFlags,
9656     IUnknown** ppInner,
9657     IAsyncManager** ppAsyncMgr);
9658 void __RPC_STUB IAsyncSetup_GetAsyncManager_Stub(
9659     struct IRpcStubBuffer* This,
9660     struct IRpcChannelBuffer* pRpcChannelBuffer,
9661     PRPC_MESSAGE pRpcMessage,
9662     DWORD* pdwStubPhase);
9663
9664 #endif  /* __IAsyncSetup_INTERFACE_DEFINED__ */
9665
9666 typedef enum tagDCOM_CALL_STATE {
9667     DCOM_NONE = 0,
9668     DCOM_CALL_COMPLETE = 1,
9669     DCOM_CALL_CANCELED = 2
9670 } DCOM_CALL_STATE;
9671
9672 /*****************************************************************************
9673  * IAsyncManager interface
9674  */
9675 #ifndef __IAsyncManager_INTERFACE_DEFINED__
9676 #define __IAsyncManager_INTERFACE_DEFINED__
9677
9678 DEFINE_GUID(IID_IAsyncManager, 0x0000002a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
9679 #if defined(__cplusplus) && !defined(CINTERFACE)
9680 struct IAsyncManager : public IUnknown
9681 {
9682     virtual HRESULT STDMETHODCALLTYPE CompleteCall(
9683         HRESULT Result) = 0;
9684
9685     virtual HRESULT STDMETHODCALLTYPE GetCallContext(
9686         REFIID riid,
9687         void** pInterface) = 0;
9688
9689     virtual HRESULT STDMETHODCALLTYPE GetState(
9690         ULONG* pulStateFlags) = 0;
9691
9692 };
9693 #else
9694 typedef struct IAsyncManagerVtbl IAsyncManagerVtbl;
9695 struct IAsyncManager {
9696     const IAsyncManagerVtbl* lpVtbl;
9697 };
9698 struct IAsyncManagerVtbl {
9699     ICOM_MSVTABLE_COMPAT_FIELDS
9700
9701     /*** IUnknown methods ***/
9702     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9703         IAsyncManager* This,
9704         REFIID riid,
9705         void** ppvObject);
9706
9707     ULONG (STDMETHODCALLTYPE *AddRef)(
9708         IAsyncManager* This);
9709
9710     ULONG (STDMETHODCALLTYPE *Release)(
9711         IAsyncManager* This);
9712
9713     /*** IAsyncManager methods ***/
9714     HRESULT (STDMETHODCALLTYPE *CompleteCall)(
9715         IAsyncManager* This,
9716         HRESULT Result);
9717
9718     HRESULT (STDMETHODCALLTYPE *GetCallContext)(
9719         IAsyncManager* This,
9720         REFIID riid,
9721         void** pInterface);
9722
9723     HRESULT (STDMETHODCALLTYPE *GetState)(
9724         IAsyncManager* This,
9725         ULONG* pulStateFlags);
9726
9727 };
9728
9729 /*** IUnknown methods ***/
9730 #define IAsyncManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
9731 #define IAsyncManager_AddRef(p) (p)->lpVtbl->AddRef(p)
9732 #define IAsyncManager_Release(p) (p)->lpVtbl->Release(p)
9733 /*** IAsyncManager methods ***/
9734 #define IAsyncManager_CompleteCall(p,a) (p)->lpVtbl->CompleteCall(p,a)
9735 #define IAsyncManager_GetCallContext(p,a,b) (p)->lpVtbl->GetCallContext(p,a,b)
9736 #define IAsyncManager_GetState(p,a) (p)->lpVtbl->GetState(p,a)
9737
9738 #endif
9739
9740 #define IAsyncManager_METHODS \
9741     ICOM_MSVTABLE_COMPAT_FIELDS \
9742     /*** IUnknown methods ***/ \
9743     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
9744     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
9745     STDMETHOD_(ULONG,Release)(THIS) PURE; \
9746     /*** IAsyncManager methods ***/ \
9747     STDMETHOD_(HRESULT,CompleteCall)(THIS_ HRESULT Result) PURE; \
9748     STDMETHOD_(HRESULT,GetCallContext)(THIS_ REFIID riid, void** pInterface) PURE; \
9749     STDMETHOD_(HRESULT,GetState)(THIS_ ULONG* pulStateFlags) PURE;
9750
9751 HRESULT CALLBACK IAsyncManager_CompleteCall_Proxy(
9752     IAsyncManager* This,
9753     HRESULT Result);
9754 void __RPC_STUB IAsyncManager_CompleteCall_Stub(
9755     struct IRpcStubBuffer* This,
9756     struct IRpcChannelBuffer* pRpcChannelBuffer,
9757     PRPC_MESSAGE pRpcMessage,
9758     DWORD* pdwStubPhase);
9759 HRESULT CALLBACK IAsyncManager_GetCallContext_Proxy(
9760     IAsyncManager* This,
9761     REFIID riid,
9762     void** pInterface);
9763 void __RPC_STUB IAsyncManager_GetCallContext_Stub(
9764     struct IRpcStubBuffer* This,
9765     struct IRpcChannelBuffer* pRpcChannelBuffer,
9766     PRPC_MESSAGE pRpcMessage,
9767     DWORD* pdwStubPhase);
9768 HRESULT CALLBACK IAsyncManager_GetState_Proxy(
9769     IAsyncManager* This,
9770     ULONG* pulStateFlags);
9771 void __RPC_STUB IAsyncManager_GetState_Stub(
9772     struct IRpcStubBuffer* This,
9773     struct IRpcChannelBuffer* pRpcChannelBuffer,
9774     PRPC_MESSAGE pRpcMessage,
9775     DWORD* pdwStubPhase);
9776
9777 #endif  /* __IAsyncManager_INTERFACE_DEFINED__ */
9778
9779 #ifdef __cplusplus
9780 }
9781 #endif
9782 #endif /* __WIDL_OBJIDL_H */