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