Move the PROPVARIANT declaration from objidl.idl to propidl.idl.
[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 extern const FMTID FMTID_SummaryInformation;
7673
7674 extern const FMTID FMTID_DocSummaryInformation;
7675
7676 extern const FMTID FMTID_UserDefinedProperties;
7677
7678 #ifndef __IClientSecurity_FWD_DEFINED__
7679 #define __IClientSecurity_FWD_DEFINED__
7680 typedef struct IClientSecurity IClientSecurity;
7681 #endif
7682
7683 typedef struct tagSOLE_AUTHENTICATION_SERVICE {
7684     DWORD dwAuthnSvc;
7685     DWORD dwAuthzSvc;
7686     OLECHAR *pPrincipalName;
7687     HRESULT hr;
7688 } SOLE_AUTHENTICATION_SERVICE;
7689
7690 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
7691
7692 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
7693     EOAC_NONE = 0x0,
7694     EOAC_MUTUAL_AUTH = 0x1,
7695     EOAC_CLOAKING = 0x10,
7696     EOAC_SECURE_REFS = 0x2,
7697     EOAC_ACCESS_CONTROL = 0x4,
7698     EOAC_APPID = 0x8
7699 } EOLE_AUTHENTICATION_CAPABILITIES;
7700
7701 /*****************************************************************************
7702  * IClientSecurity interface
7703  */
7704 #ifndef __IClientSecurity_INTERFACE_DEFINED__
7705 #define __IClientSecurity_INTERFACE_DEFINED__
7706
7707 DEFINE_GUID(IID_IClientSecurity, 0x0000013d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
7708 #if defined(__cplusplus) && !defined(CINTERFACE)
7709 struct IClientSecurity : public IUnknown
7710 {
7711     virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
7712         IUnknown* pProxy,
7713         DWORD* pAuthnSvc,
7714         DWORD* pAuthzSvc,
7715         OLECHAR** pServerPrincName,
7716         DWORD* pAuthnLevel,
7717         DWORD* pImpLevel,
7718         void** pAuthInfo,
7719         DWORD* pCapabilites) = 0;
7720
7721     virtual HRESULT STDMETHODCALLTYPE SetBlanket(
7722         IUnknown* pProxy,
7723         DWORD AuthnSvc,
7724         DWORD AuthzSvc,
7725         OLECHAR* pServerPrincName,
7726         DWORD AuthnLevel,
7727         DWORD ImpLevel,
7728         void* pAuthInfo,
7729         DWORD Capabilities) = 0;
7730
7731     virtual HRESULT STDMETHODCALLTYPE CopyProxy(
7732         IUnknown* pProxy,
7733         IUnknown** ppCopy) = 0;
7734
7735 };
7736 #else
7737 typedef struct IClientSecurityVtbl IClientSecurityVtbl;
7738 struct IClientSecurity {
7739     const IClientSecurityVtbl* lpVtbl;
7740 };
7741 struct IClientSecurityVtbl {
7742     BEGIN_INTERFACE
7743
7744     /*** IUnknown methods ***/
7745     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7746         IClientSecurity* This,
7747         REFIID riid,
7748         void** ppvObject);
7749
7750     ULONG (STDMETHODCALLTYPE *AddRef)(
7751         IClientSecurity* This);
7752
7753     ULONG (STDMETHODCALLTYPE *Release)(
7754         IClientSecurity* This);
7755
7756     /*** IClientSecurity methods ***/
7757     HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
7758         IClientSecurity* This,
7759         IUnknown* pProxy,
7760         DWORD* pAuthnSvc,
7761         DWORD* pAuthzSvc,
7762         OLECHAR** pServerPrincName,
7763         DWORD* pAuthnLevel,
7764         DWORD* pImpLevel,
7765         void** pAuthInfo,
7766         DWORD* pCapabilites);
7767
7768     HRESULT (STDMETHODCALLTYPE *SetBlanket)(
7769         IClientSecurity* This,
7770         IUnknown* pProxy,
7771         DWORD AuthnSvc,
7772         DWORD AuthzSvc,
7773         OLECHAR* pServerPrincName,
7774         DWORD AuthnLevel,
7775         DWORD ImpLevel,
7776         void* pAuthInfo,
7777         DWORD Capabilities);
7778
7779     HRESULT (STDMETHODCALLTYPE *CopyProxy)(
7780         IClientSecurity* This,
7781         IUnknown* pProxy,
7782         IUnknown** ppCopy);
7783
7784     END_INTERFACE
7785 };
7786
7787 #ifdef COBJMACROS
7788 /*** IUnknown methods ***/
7789 #define IClientSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7790 #define IClientSecurity_AddRef(p) (p)->lpVtbl->AddRef(p)
7791 #define IClientSecurity_Release(p) (p)->lpVtbl->Release(p)
7792 /*** IClientSecurity methods ***/
7793 #define IClientSecurity_QueryBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g,h)
7794 #define IClientSecurity_SetBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->SetBlanket(p,a,b,c,d,e,f,g,h)
7795 #define IClientSecurity_CopyProxy(p,a,b) (p)->lpVtbl->CopyProxy(p,a,b)
7796 #endif
7797
7798 #endif
7799
7800 #define IClientSecurity_METHODS \
7801     /*** IUnknown methods ***/ \
7802     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7803     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7804     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7805     /*** IClientSecurity methods ***/ \
7806     STDMETHOD_(HRESULT,QueryBlanket)(THIS_ IUnknown* pProxy, DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, void** pAuthInfo, DWORD* pCapabilites) PURE; \
7807     STDMETHOD_(HRESULT,SetBlanket)(THIS_ IUnknown* pProxy, DWORD AuthnSvc, DWORD AuthzSvc, OLECHAR* pServerPrincName, DWORD AuthnLevel, DWORD ImpLevel, void* pAuthInfo, DWORD Capabilities) PURE; \
7808     STDMETHOD_(HRESULT,CopyProxy)(THIS_ IUnknown* pProxy, IUnknown** ppCopy) PURE;
7809
7810 HRESULT CALLBACK IClientSecurity_QueryBlanket_Proxy(
7811     IClientSecurity* This,
7812     IUnknown* pProxy,
7813     DWORD* pAuthnSvc,
7814     DWORD* pAuthzSvc,
7815     OLECHAR** pServerPrincName,
7816     DWORD* pAuthnLevel,
7817     DWORD* pImpLevel,
7818     void** pAuthInfo,
7819     DWORD* pCapabilites);
7820 void __RPC_STUB IClientSecurity_QueryBlanket_Stub(
7821     struct IRpcStubBuffer* This,
7822     struct IRpcChannelBuffer* pRpcChannelBuffer,
7823     PRPC_MESSAGE pRpcMessage,
7824     DWORD* pdwStubPhase);
7825 HRESULT CALLBACK IClientSecurity_SetBlanket_Proxy(
7826     IClientSecurity* This,
7827     IUnknown* pProxy,
7828     DWORD AuthnSvc,
7829     DWORD AuthzSvc,
7830     OLECHAR* pServerPrincName,
7831     DWORD AuthnLevel,
7832     DWORD ImpLevel,
7833     void* pAuthInfo,
7834     DWORD Capabilities);
7835 void __RPC_STUB IClientSecurity_SetBlanket_Stub(
7836     struct IRpcStubBuffer* This,
7837     struct IRpcChannelBuffer* pRpcChannelBuffer,
7838     PRPC_MESSAGE pRpcMessage,
7839     DWORD* pdwStubPhase);
7840 HRESULT CALLBACK IClientSecurity_CopyProxy_Proxy(
7841     IClientSecurity* This,
7842     IUnknown* pProxy,
7843     IUnknown** ppCopy);
7844 void __RPC_STUB IClientSecurity_CopyProxy_Stub(
7845     struct IRpcStubBuffer* This,
7846     struct IRpcChannelBuffer* pRpcChannelBuffer,
7847     PRPC_MESSAGE pRpcMessage,
7848     DWORD* pdwStubPhase);
7849
7850 #endif  /* __IClientSecurity_INTERFACE_DEFINED__ */
7851
7852 #ifndef __IServerSecurity_FWD_DEFINED__
7853 #define __IServerSecurity_FWD_DEFINED__
7854 typedef struct IServerSecurity IServerSecurity;
7855 #endif
7856
7857 /*****************************************************************************
7858  * IServerSecurity interface
7859  */
7860 #ifndef __IServerSecurity_INTERFACE_DEFINED__
7861 #define __IServerSecurity_INTERFACE_DEFINED__
7862
7863 DEFINE_GUID(IID_IServerSecurity, 0x0000013e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
7864 #if defined(__cplusplus) && !defined(CINTERFACE)
7865 struct IServerSecurity : public IUnknown
7866 {
7867     virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
7868         DWORD* pAuthnSvc,
7869         DWORD* pAuthzSvc,
7870         OLECHAR** pServerPrincName,
7871         DWORD* pAuthnLevel,
7872         DWORD* pImpLevel,
7873         void** pPrivs,
7874         DWORD* pCapabilities) = 0;
7875
7876     virtual HRESULT STDMETHODCALLTYPE ImpersonateClient(
7877         ) = 0;
7878
7879     virtual HRESULT STDMETHODCALLTYPE RevertToSelf(
7880         ) = 0;
7881
7882     virtual BOOL STDMETHODCALLTYPE IsImpersonating(
7883         ) = 0;
7884
7885 };
7886 #else
7887 typedef struct IServerSecurityVtbl IServerSecurityVtbl;
7888 struct IServerSecurity {
7889     const IServerSecurityVtbl* lpVtbl;
7890 };
7891 struct IServerSecurityVtbl {
7892     BEGIN_INTERFACE
7893
7894     /*** IUnknown methods ***/
7895     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7896         IServerSecurity* This,
7897         REFIID riid,
7898         void** ppvObject);
7899
7900     ULONG (STDMETHODCALLTYPE *AddRef)(
7901         IServerSecurity* This);
7902
7903     ULONG (STDMETHODCALLTYPE *Release)(
7904         IServerSecurity* This);
7905
7906     /*** IServerSecurity methods ***/
7907     HRESULT (STDMETHODCALLTYPE *QueryBlanket)(
7908         IServerSecurity* This,
7909         DWORD* pAuthnSvc,
7910         DWORD* pAuthzSvc,
7911         OLECHAR** pServerPrincName,
7912         DWORD* pAuthnLevel,
7913         DWORD* pImpLevel,
7914         void** pPrivs,
7915         DWORD* pCapabilities);
7916
7917     HRESULT (STDMETHODCALLTYPE *ImpersonateClient)(
7918         IServerSecurity* This);
7919
7920     HRESULT (STDMETHODCALLTYPE *RevertToSelf)(
7921         IServerSecurity* This);
7922
7923     BOOL (STDMETHODCALLTYPE *IsImpersonating)(
7924         IServerSecurity* This);
7925
7926     END_INTERFACE
7927 };
7928
7929 #ifdef COBJMACROS
7930 /*** IUnknown methods ***/
7931 #define IServerSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
7932 #define IServerSecurity_AddRef(p) (p)->lpVtbl->AddRef(p)
7933 #define IServerSecurity_Release(p) (p)->lpVtbl->Release(p)
7934 /*** IServerSecurity methods ***/
7935 #define IServerSecurity_QueryBlanket(p,a,b,c,d,e,f,g) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g)
7936 #define IServerSecurity_ImpersonateClient(p) (p)->lpVtbl->ImpersonateClient(p)
7937 #define IServerSecurity_RevertToSelf(p) (p)->lpVtbl->RevertToSelf(p)
7938 #define IServerSecurity_IsImpersonating(p) (p)->lpVtbl->IsImpersonating(p)
7939 #endif
7940
7941 #endif
7942
7943 #define IServerSecurity_METHODS \
7944     /*** IUnknown methods ***/ \
7945     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
7946     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
7947     STDMETHOD_(ULONG,Release)(THIS) PURE; \
7948     /*** IServerSecurity methods ***/ \
7949     STDMETHOD_(HRESULT,QueryBlanket)(THIS_ DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, void** pPrivs, DWORD* pCapabilities) PURE; \
7950     STDMETHOD_(HRESULT,ImpersonateClient)(THIS) PURE; \
7951     STDMETHOD_(HRESULT,RevertToSelf)(THIS) PURE; \
7952     STDMETHOD_(BOOL,IsImpersonating)(THIS) PURE;
7953
7954 HRESULT CALLBACK IServerSecurity_QueryBlanket_Proxy(
7955     IServerSecurity* This,
7956     DWORD* pAuthnSvc,
7957     DWORD* pAuthzSvc,
7958     OLECHAR** pServerPrincName,
7959     DWORD* pAuthnLevel,
7960     DWORD* pImpLevel,
7961     void** pPrivs,
7962     DWORD* pCapabilities);
7963 void __RPC_STUB IServerSecurity_QueryBlanket_Stub(
7964     struct IRpcStubBuffer* This,
7965     struct IRpcChannelBuffer* pRpcChannelBuffer,
7966     PRPC_MESSAGE pRpcMessage,
7967     DWORD* pdwStubPhase);
7968 HRESULT CALLBACK IServerSecurity_ImpersonateClient_Proxy(
7969     IServerSecurity* This);
7970 void __RPC_STUB IServerSecurity_ImpersonateClient_Stub(
7971     struct IRpcStubBuffer* This,
7972     struct IRpcChannelBuffer* pRpcChannelBuffer,
7973     PRPC_MESSAGE pRpcMessage,
7974     DWORD* pdwStubPhase);
7975 HRESULT CALLBACK IServerSecurity_RevertToSelf_Proxy(
7976     IServerSecurity* This);
7977 void __RPC_STUB IServerSecurity_RevertToSelf_Stub(
7978     struct IRpcStubBuffer* This,
7979     struct IRpcChannelBuffer* pRpcChannelBuffer,
7980     PRPC_MESSAGE pRpcMessage,
7981     DWORD* pdwStubPhase);
7982 BOOL CALLBACK IServerSecurity_IsImpersonating_Proxy(
7983     IServerSecurity* This);
7984 void __RPC_STUB IServerSecurity_IsImpersonating_Stub(
7985     struct IRpcStubBuffer* This,
7986     struct IRpcChannelBuffer* pRpcChannelBuffer,
7987     PRPC_MESSAGE pRpcMessage,
7988     DWORD* pdwStubPhase);
7989
7990 #endif  /* __IServerSecurity_INTERFACE_DEFINED__ */
7991
7992 #ifndef __IAsyncSetup_FWD_DEFINED__
7993 #define __IAsyncSetup_FWD_DEFINED__
7994 typedef struct IAsyncSetup IAsyncSetup;
7995 #endif
7996
7997 /*****************************************************************************
7998  * IAsyncSetup interface
7999  */
8000 #ifndef __IAsyncSetup_INTERFACE_DEFINED__
8001 #define __IAsyncSetup_INTERFACE_DEFINED__
8002
8003 DEFINE_GUID(IID_IAsyncSetup, 0x00000024, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
8004 #if defined(__cplusplus) && !defined(CINTERFACE)
8005 struct IAsyncSetup : public IUnknown
8006 {
8007     virtual HRESULT STDMETHODCALLTYPE GetAsyncManager(
8008         REFIID riid,
8009         IUnknown* pOuter,
8010         DWORD dwFlags,
8011         IUnknown** ppInner,
8012         IAsyncManager** ppAsyncMgr) = 0;
8013
8014 };
8015 #else
8016 typedef struct IAsyncSetupVtbl IAsyncSetupVtbl;
8017 struct IAsyncSetup {
8018     const IAsyncSetupVtbl* lpVtbl;
8019 };
8020 struct IAsyncSetupVtbl {
8021     BEGIN_INTERFACE
8022
8023     /*** IUnknown methods ***/
8024     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8025         IAsyncSetup* This,
8026         REFIID riid,
8027         void** ppvObject);
8028
8029     ULONG (STDMETHODCALLTYPE *AddRef)(
8030         IAsyncSetup* This);
8031
8032     ULONG (STDMETHODCALLTYPE *Release)(
8033         IAsyncSetup* This);
8034
8035     /*** IAsyncSetup methods ***/
8036     HRESULT (STDMETHODCALLTYPE *GetAsyncManager)(
8037         IAsyncSetup* This,
8038         REFIID riid,
8039         IUnknown* pOuter,
8040         DWORD dwFlags,
8041         IUnknown** ppInner,
8042         IAsyncManager** ppAsyncMgr);
8043
8044     END_INTERFACE
8045 };
8046
8047 #ifdef COBJMACROS
8048 /*** IUnknown methods ***/
8049 #define IAsyncSetup_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
8050 #define IAsyncSetup_AddRef(p) (p)->lpVtbl->AddRef(p)
8051 #define IAsyncSetup_Release(p) (p)->lpVtbl->Release(p)
8052 /*** IAsyncSetup methods ***/
8053 #define IAsyncSetup_GetAsyncManager(p,a,b,c,d,e) (p)->lpVtbl->GetAsyncManager(p,a,b,c,d,e)
8054 #endif
8055
8056 #endif
8057
8058 #define IAsyncSetup_METHODS \
8059     /*** IUnknown methods ***/ \
8060     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
8061     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
8062     STDMETHOD_(ULONG,Release)(THIS) PURE; \
8063     /*** IAsyncSetup methods ***/ \
8064     STDMETHOD_(HRESULT,GetAsyncManager)(THIS_ REFIID riid, IUnknown* pOuter, DWORD dwFlags, IUnknown** ppInner, IAsyncManager** ppAsyncMgr) PURE;
8065
8066 HRESULT CALLBACK IAsyncSetup_GetAsyncManager_Proxy(
8067     IAsyncSetup* This,
8068     REFIID riid,
8069     IUnknown* pOuter,
8070     DWORD dwFlags,
8071     IUnknown** ppInner,
8072     IAsyncManager** ppAsyncMgr);
8073 void __RPC_STUB IAsyncSetup_GetAsyncManager_Stub(
8074     struct IRpcStubBuffer* This,
8075     struct IRpcChannelBuffer* pRpcChannelBuffer,
8076     PRPC_MESSAGE pRpcMessage,
8077     DWORD* pdwStubPhase);
8078
8079 #endif  /* __IAsyncSetup_INTERFACE_DEFINED__ */
8080
8081 typedef enum tagDCOM_CALL_STATE {
8082     DCOM_NONE = 0,
8083     DCOM_CALL_COMPLETE = 1,
8084     DCOM_CALL_CANCELED = 2
8085 } DCOM_CALL_STATE;
8086
8087 /*****************************************************************************
8088  * IAsyncManager interface
8089  */
8090 #ifndef __IAsyncManager_INTERFACE_DEFINED__
8091 #define __IAsyncManager_INTERFACE_DEFINED__
8092
8093 DEFINE_GUID(IID_IAsyncManager, 0x0000002a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
8094 #if defined(__cplusplus) && !defined(CINTERFACE)
8095 struct IAsyncManager : public IUnknown
8096 {
8097     virtual HRESULT STDMETHODCALLTYPE CompleteCall(
8098         HRESULT Result) = 0;
8099
8100     virtual HRESULT STDMETHODCALLTYPE GetCallContext(
8101         REFIID riid,
8102         void** pInterface) = 0;
8103
8104     virtual HRESULT STDMETHODCALLTYPE GetState(
8105         ULONG* pulStateFlags) = 0;
8106
8107 };
8108 #else
8109 typedef struct IAsyncManagerVtbl IAsyncManagerVtbl;
8110 struct IAsyncManager {
8111     const IAsyncManagerVtbl* lpVtbl;
8112 };
8113 struct IAsyncManagerVtbl {
8114     BEGIN_INTERFACE
8115
8116     /*** IUnknown methods ***/
8117     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8118         IAsyncManager* This,
8119         REFIID riid,
8120         void** ppvObject);
8121
8122     ULONG (STDMETHODCALLTYPE *AddRef)(
8123         IAsyncManager* This);
8124
8125     ULONG (STDMETHODCALLTYPE *Release)(
8126         IAsyncManager* This);
8127
8128     /*** IAsyncManager methods ***/
8129     HRESULT (STDMETHODCALLTYPE *CompleteCall)(
8130         IAsyncManager* This,
8131         HRESULT Result);
8132
8133     HRESULT (STDMETHODCALLTYPE *GetCallContext)(
8134         IAsyncManager* This,
8135         REFIID riid,
8136         void** pInterface);
8137
8138     HRESULT (STDMETHODCALLTYPE *GetState)(
8139         IAsyncManager* This,
8140         ULONG* pulStateFlags);
8141
8142     END_INTERFACE
8143 };
8144
8145 #ifdef COBJMACROS
8146 /*** IUnknown methods ***/
8147 #define IAsyncManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
8148 #define IAsyncManager_AddRef(p) (p)->lpVtbl->AddRef(p)
8149 #define IAsyncManager_Release(p) (p)->lpVtbl->Release(p)
8150 /*** IAsyncManager methods ***/
8151 #define IAsyncManager_CompleteCall(p,a) (p)->lpVtbl->CompleteCall(p,a)
8152 #define IAsyncManager_GetCallContext(p,a,b) (p)->lpVtbl->GetCallContext(p,a,b)
8153 #define IAsyncManager_GetState(p,a) (p)->lpVtbl->GetState(p,a)
8154 #endif
8155
8156 #endif
8157
8158 #define IAsyncManager_METHODS \
8159     /*** IUnknown methods ***/ \
8160     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
8161     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
8162     STDMETHOD_(ULONG,Release)(THIS) PURE; \
8163     /*** IAsyncManager methods ***/ \
8164     STDMETHOD_(HRESULT,CompleteCall)(THIS_ HRESULT Result) PURE; \
8165     STDMETHOD_(HRESULT,GetCallContext)(THIS_ REFIID riid, void** pInterface) PURE; \
8166     STDMETHOD_(HRESULT,GetState)(THIS_ ULONG* pulStateFlags) PURE;
8167
8168 HRESULT CALLBACK IAsyncManager_CompleteCall_Proxy(
8169     IAsyncManager* This,
8170     HRESULT Result);
8171 void __RPC_STUB IAsyncManager_CompleteCall_Stub(
8172     struct IRpcStubBuffer* This,
8173     struct IRpcChannelBuffer* pRpcChannelBuffer,
8174     PRPC_MESSAGE pRpcMessage,
8175     DWORD* pdwStubPhase);
8176 HRESULT CALLBACK IAsyncManager_GetCallContext_Proxy(
8177     IAsyncManager* This,
8178     REFIID riid,
8179     void** pInterface);
8180 void __RPC_STUB IAsyncManager_GetCallContext_Stub(
8181     struct IRpcStubBuffer* This,
8182     struct IRpcChannelBuffer* pRpcChannelBuffer,
8183     PRPC_MESSAGE pRpcMessage,
8184     DWORD* pdwStubPhase);
8185 HRESULT CALLBACK IAsyncManager_GetState_Proxy(
8186     IAsyncManager* This,
8187     ULONG* pulStateFlags);
8188 void __RPC_STUB IAsyncManager_GetState_Stub(
8189     struct IRpcStubBuffer* This,
8190     struct IRpcChannelBuffer* pRpcChannelBuffer,
8191     PRPC_MESSAGE pRpcMessage,
8192     DWORD* pdwStubPhase);
8193
8194 #endif  /* __IAsyncManager_INTERFACE_DEFINED__ */
8195
8196 #ifdef __cplusplus
8197 }
8198 #endif
8199 #endif /* __WIDL_OBJIDL_H */