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