| /*** Autogenerated by WIDL 0.1 from objidl.idl - Do not edit ***/ | 
 | #include "rpc.h" | 
 | #include "rpcndr.h" | 
 |  | 
 | #ifndef __WIDL_OBJIDL_H | 
 | #define __WIDL_OBJIDL_H | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 | #include "unknwn.h" | 
 | typedef struct IStream IStream; | 
 | typedef struct IStream16 IStream16; | 
 | typedef struct IEnumString IEnumString; | 
 | typedef struct IRunningObjectTable IRunningObjectTable; | 
 | typedef struct IMoniker IMoniker; | 
 | typedef struct IAdviseSink IAdviseSink; | 
 | typedef struct IAsyncManager IAsyncManager; | 
 | typedef struct IMarshal IMarshal; | 
 | typedef IMarshal *LPMARSHAL; | 
 |  | 
 | /***************************************************************************** | 
 |  * IMarshal interface | 
 |  */ | 
 | DEFINE_GUID(IID_IMarshal, 0x00000003, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IMarshal : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetUnmarshalClass( | 
 |         REFIID riid, | 
 |         void* pv, | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         DWORD mshlflags, | 
 |         CLSID* pCid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetMarshalSizeMax( | 
 |         REFIID riid, | 
 |         void* pv, | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         DWORD mshlflags, | 
 |         DWORD* pSize) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE MarshalInterface( | 
 |         IStream* pStm, | 
 |         REFIID riid, | 
 |         void* pv, | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         DWORD mshlflags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE UnmarshalInterface( | 
 |         IStream* pStm, | 
 |         REFIID riid, | 
 |         void** ppv) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ReleaseMarshalData( | 
 |         IStream* pStm) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DisconnectObject( | 
 |         DWORD dwReserved) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IMarshalVtbl IMarshalVtbl; | 
 | struct IMarshal { | 
 |     const IMarshalVtbl* lpVtbl; | 
 | }; | 
 | struct IMarshalVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IMarshal* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IMarshal* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IMarshal* This); | 
 |  | 
 |     /*** IMarshal methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetUnmarshalClass)( | 
 |         IMarshal* This, | 
 |         REFIID riid, | 
 |         void* pv, | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         DWORD mshlflags, | 
 |         CLSID* pCid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetMarshalSizeMax)( | 
 |         IMarshal* This, | 
 |         REFIID riid, | 
 |         void* pv, | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         DWORD mshlflags, | 
 |         DWORD* pSize); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *MarshalInterface)( | 
 |         IMarshal* This, | 
 |         IStream* pStm, | 
 |         REFIID riid, | 
 |         void* pv, | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         DWORD mshlflags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *UnmarshalInterface)( | 
 |         IMarshal* This, | 
 |         IStream* pStm, | 
 |         REFIID riid, | 
 |         void** ppv); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ReleaseMarshalData)( | 
 |         IMarshal* This, | 
 |         IStream* pStm); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DisconnectObject)( | 
 |         IMarshal* This, | 
 |         DWORD dwReserved); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IMarshal_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IMarshal_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IMarshal_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IMarshal methods ***/ | 
 | #define IMarshal_GetUnmarshalClass(p,a,b,c,d,e,f) (p)->lpVtbl->GetUnmarshalClass(p,a,b,c,d,e,f) | 
 | #define IMarshal_GetMarshalSizeMax(p,a,b,c,d,e,f) (p)->lpVtbl->GetMarshalSizeMax(p,a,b,c,d,e,f) | 
 | #define IMarshal_MarshalInterface(p,a,b,c,d,e,f) (p)->lpVtbl->MarshalInterface(p,a,b,c,d,e,f) | 
 | #define IMarshal_UnmarshalInterface(p,a,b,c) (p)->lpVtbl->UnmarshalInterface(p,a,b,c) | 
 | #define IMarshal_ReleaseMarshalData(p,a) (p)->lpVtbl->ReleaseMarshalData(p,a) | 
 | #define IMarshal_DisconnectObject(p,a) (p)->lpVtbl->DisconnectObject(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IMarshal_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IMarshal methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetUnmarshalClass)(THIS_ REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, CLSID* pCid) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetMarshalSizeMax)(THIS_ REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags, DWORD* pSize) PURE; \ | 
 |     STDMETHOD_(HRESULT,MarshalInterface)(THIS_ IStream* pStm, REFIID riid, void* pv, DWORD dwDestContext, void* pvDestContext, DWORD mshlflags) PURE; \ | 
 |     STDMETHOD_(HRESULT,UnmarshalInterface)(THIS_ IStream* pStm, REFIID riid, void** ppv) PURE; \ | 
 |     STDMETHOD_(HRESULT,ReleaseMarshalData)(THIS_ IStream* pStm) PURE; \ | 
 |     STDMETHOD_(HRESULT,DisconnectObject)(THIS_ DWORD dwReserved) PURE; | 
 |  | 
 | HRESULT CALLBACK IMarshal_GetUnmarshalClass_Proxy( | 
 |     IMarshal* This, | 
 |     REFIID riid, | 
 |     void* pv, | 
 |     DWORD dwDestContext, | 
 |     void* pvDestContext, | 
 |     DWORD mshlflags, | 
 |     CLSID* pCid); | 
 | void __RPC_STUB IMarshal_GetUnmarshalClass_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMarshal_GetMarshalSizeMax_Proxy( | 
 |     IMarshal* This, | 
 |     REFIID riid, | 
 |     void* pv, | 
 |     DWORD dwDestContext, | 
 |     void* pvDestContext, | 
 |     DWORD mshlflags, | 
 |     DWORD* pSize); | 
 | void __RPC_STUB IMarshal_GetMarshalSizeMax_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMarshal_MarshalInterface_Proxy( | 
 |     IMarshal* This, | 
 |     IStream* pStm, | 
 |     REFIID riid, | 
 |     void* pv, | 
 |     DWORD dwDestContext, | 
 |     void* pvDestContext, | 
 |     DWORD mshlflags); | 
 | void __RPC_STUB IMarshal_MarshalInterface_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMarshal_UnmarshalInterface_Proxy( | 
 |     IMarshal* This, | 
 |     IStream* pStm, | 
 |     REFIID riid, | 
 |     void** ppv); | 
 | void __RPC_STUB IMarshal_UnmarshalInterface_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMarshal_ReleaseMarshalData_Proxy( | 
 |     IMarshal* This, | 
 |     IStream* pStm); | 
 | void __RPC_STUB IMarshal_ReleaseMarshalData_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMarshal_DisconnectObject_Proxy( | 
 |     IMarshal* This, | 
 |     DWORD dwReserved); | 
 | void __RPC_STUB IMarshal_DisconnectObject_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IStdMarshalInfo IStdMarshalInfo; | 
 | typedef IStdMarshalInfo *LPSTDMARSHALINFO; | 
 |  | 
 | /***************************************************************************** | 
 |  * IStdMarshalInfo interface | 
 |  */ | 
 | DEFINE_GUID(IID_IStdMarshalInfo, 0x00000018, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IStdMarshalInfo : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetClassForHandler( | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         CLSID* pClsid) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IStdMarshalInfoVtbl IStdMarshalInfoVtbl; | 
 | struct IStdMarshalInfo { | 
 |     const IStdMarshalInfoVtbl* lpVtbl; | 
 | }; | 
 | struct IStdMarshalInfoVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IStdMarshalInfo* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IStdMarshalInfo* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IStdMarshalInfo* This); | 
 |  | 
 |     /*** IStdMarshalInfo methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetClassForHandler)( | 
 |         IStdMarshalInfo* This, | 
 |         DWORD dwDestContext, | 
 |         void* pvDestContext, | 
 |         CLSID* pClsid); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IStdMarshalInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IStdMarshalInfo_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IStdMarshalInfo_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IStdMarshalInfo methods ***/ | 
 | #define IStdMarshalInfo_GetClassForHandler(p,a,b,c) (p)->lpVtbl->GetClassForHandler(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define IStdMarshalInfo_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IStdMarshalInfo methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetClassForHandler)(THIS_ DWORD dwDestContext, void* pvDestContext, CLSID* pClsid) PURE; | 
 |  | 
 | HRESULT CALLBACK IStdMarshalInfo_GetClassForHandler_Proxy( | 
 |     IStdMarshalInfo* This, | 
 |     DWORD dwDestContext, | 
 |     void* pvDestContext, | 
 |     CLSID* pClsid); | 
 | void __RPC_STUB IStdMarshalInfo_GetClassForHandler_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IExternalConnection IExternalConnection; | 
 | typedef IExternalConnection *LPEXTERNALCONNECTION; | 
 |  | 
 | typedef enum tagEXTCONN { | 
 |     EXTCONN_STRONG = 0x1, | 
 |     EXTCONN_WEAK = 0x2, | 
 |     EXTCONN_CALLABLE = 0x4 | 
 | } EXTCONN; | 
 |  | 
 | /***************************************************************************** | 
 |  * IExternalConnection interface | 
 |  */ | 
 | DEFINE_GUID(IID_IExternalConnection, 0x00000019, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IExternalConnection : public IUnknown | 
 | { | 
 |     virtual DWORD STDMETHODCALLTYPE AddConnection( | 
 |         DWORD extconn, | 
 |         DWORD reserved) = 0; | 
 |  | 
 |     virtual DWORD STDMETHODCALLTYPE ReleaseConnection( | 
 |         DWORD extconn, | 
 |         DWORD reserved, | 
 |         BOOL fLastReleaseCloses) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IExternalConnectionVtbl IExternalConnectionVtbl; | 
 | struct IExternalConnection { | 
 |     const IExternalConnectionVtbl* lpVtbl; | 
 | }; | 
 | struct IExternalConnectionVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IExternalConnection* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IExternalConnection* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IExternalConnection* This); | 
 |  | 
 |     /*** IExternalConnection methods ***/ | 
 |     DWORD (STDMETHODCALLTYPE *AddConnection)( | 
 |         IExternalConnection* This, | 
 |         DWORD extconn, | 
 |         DWORD reserved); | 
 |  | 
 |     DWORD (STDMETHODCALLTYPE *ReleaseConnection)( | 
 |         IExternalConnection* This, | 
 |         DWORD extconn, | 
 |         DWORD reserved, | 
 |         BOOL fLastReleaseCloses); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IExternalConnection_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IExternalConnection_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IExternalConnection_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IExternalConnection methods ***/ | 
 | #define IExternalConnection_AddConnection(p,a,b) (p)->lpVtbl->AddConnection(p,a,b) | 
 | #define IExternalConnection_ReleaseConnection(p,a,b,c) (p)->lpVtbl->ReleaseConnection(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define IExternalConnection_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IExternalConnection methods ***/ \ | 
 |     STDMETHOD_(DWORD,AddConnection)(THIS_ DWORD extconn, DWORD reserved) PURE; \ | 
 |     STDMETHOD_(DWORD,ReleaseConnection)(THIS_ DWORD extconn, DWORD reserved, BOOL fLastReleaseCloses) PURE; | 
 |  | 
 | DWORD CALLBACK IExternalConnection_AddConnection_Proxy( | 
 |     IExternalConnection* This, | 
 |     DWORD extconn, | 
 |     DWORD reserved); | 
 | void __RPC_STUB IExternalConnection_AddConnection_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | DWORD CALLBACK IExternalConnection_ReleaseConnection_Proxy( | 
 |     IExternalConnection* This, | 
 |     DWORD extconn, | 
 |     DWORD reserved, | 
 |     BOOL fLastReleaseCloses); | 
 | void __RPC_STUB IExternalConnection_ReleaseConnection_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IMultiQI IMultiQI; | 
 | typedef IMultiQI *LPMULTIQI; | 
 |  | 
 | typedef struct tagMULTI_QI { | 
 |     const IID *pIID; | 
 |     IUnknown *pItf; | 
 |     HRESULT hr; | 
 | } MULTI_QI; | 
 |  | 
 | /***************************************************************************** | 
 |  * IMultiQI interface | 
 |  */ | 
 | DEFINE_GUID(IID_IMultiQI, 0x00000020, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IMultiQI : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE QueryMultipleInterfaces( | 
 |         ULONG cMQIs, | 
 |         MULTI_QI* pMQIs) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IMultiQIVtbl IMultiQIVtbl; | 
 | struct IMultiQI { | 
 |     const IMultiQIVtbl* lpVtbl; | 
 | }; | 
 | struct IMultiQIVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IMultiQI* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IMultiQI* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IMultiQI* This); | 
 |  | 
 |     /*** IMultiQI methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryMultipleInterfaces)( | 
 |         IMultiQI* This, | 
 |         ULONG cMQIs, | 
 |         MULTI_QI* pMQIs); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IMultiQI_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IMultiQI_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IMultiQI_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IMultiQI methods ***/ | 
 | #define IMultiQI_QueryMultipleInterfaces(p,a,b) (p)->lpVtbl->QueryMultipleInterfaces(p,a,b) | 
 |  | 
 | #endif | 
 |  | 
 | #define IMultiQI_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IMultiQI methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryMultipleInterfaces)(THIS_ ULONG cMQIs, MULTI_QI* pMQIs) PURE; | 
 |  | 
 | HRESULT CALLBACK IMultiQI_QueryMultipleInterfaces_Proxy( | 
 |     IMultiQI* This, | 
 |     ULONG cMQIs, | 
 |     MULTI_QI* pMQIs); | 
 | void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IMalloc IMalloc; | 
 | typedef IMalloc *LPMALLOC; | 
 |  | 
 | /***************************************************************************** | 
 |  * IMalloc interface | 
 |  */ | 
 | DEFINE_GUID(IID_IMalloc, 0x00000002, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IMalloc : public IUnknown | 
 | { | 
 |     virtual LPVOID STDMETHODCALLTYPE Alloc( | 
 |         ULONG cb) = 0; | 
 |  | 
 |     virtual LPVOID STDMETHODCALLTYPE Realloc( | 
 |         LPVOID pv, | 
 |         ULONG cb) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE Free( | 
 |         LPVOID pv) = 0; | 
 |  | 
 |     virtual ULONG STDMETHODCALLTYPE GetSize( | 
 |         LPVOID pv) = 0; | 
 |  | 
 |     virtual int STDMETHODCALLTYPE DidAlloc( | 
 |         LPVOID pv) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE HeapMinimize( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IMallocVtbl IMallocVtbl; | 
 | struct IMalloc { | 
 |     const IMallocVtbl* lpVtbl; | 
 | }; | 
 | struct IMallocVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IMalloc* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IMalloc* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IMalloc* This); | 
 |  | 
 |     /*** IMalloc methods ***/ | 
 |     LPVOID (STDMETHODCALLTYPE *Alloc)( | 
 |         IMalloc* This, | 
 |         ULONG cb); | 
 |  | 
 |     LPVOID (STDMETHODCALLTYPE *Realloc)( | 
 |         IMalloc* This, | 
 |         LPVOID pv, | 
 |         ULONG cb); | 
 |  | 
 |     void (STDMETHODCALLTYPE *Free)( | 
 |         IMalloc* This, | 
 |         LPVOID pv); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *GetSize)( | 
 |         IMalloc* This, | 
 |         LPVOID pv); | 
 |  | 
 |     int (STDMETHODCALLTYPE *DidAlloc)( | 
 |         IMalloc* This, | 
 |         LPVOID pv); | 
 |  | 
 |     void (STDMETHODCALLTYPE *HeapMinimize)( | 
 |         IMalloc* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IMalloc_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IMalloc_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IMalloc_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IMalloc methods ***/ | 
 | #define IMalloc_Alloc(p,a) (p)->lpVtbl->Alloc(p,a) | 
 | #define IMalloc_Realloc(p,a,b) (p)->lpVtbl->Realloc(p,a,b) | 
 | #define IMalloc_Free(p,a) (p)->lpVtbl->Free(p,a) | 
 | #define IMalloc_GetSize(p,a) (p)->lpVtbl->GetSize(p,a) | 
 | #define IMalloc_DidAlloc(p,a) (p)->lpVtbl->DidAlloc(p,a) | 
 | #define IMalloc_HeapMinimize(p) (p)->lpVtbl->HeapMinimize(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define IMalloc_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IMalloc methods ***/ \ | 
 |     STDMETHOD_(LPVOID,Alloc)(THIS_ ULONG cb) PURE; \ | 
 |     STDMETHOD_(LPVOID,Realloc)(THIS_ LPVOID pv, ULONG cb) PURE; \ | 
 |     STDMETHOD_(void,Free)(THIS_ LPVOID pv) PURE; \ | 
 |     STDMETHOD_(ULONG,GetSize)(THIS_ LPVOID pv) PURE; \ | 
 |     STDMETHOD_(int,DidAlloc)(THIS_ LPVOID pv) PURE; \ | 
 |     STDMETHOD_(void,HeapMinimize)(THIS) PURE; | 
 |  | 
 | LPVOID CALLBACK IMalloc_Alloc_Proxy( | 
 |     IMalloc* This, | 
 |     ULONG cb); | 
 | void __RPC_STUB IMalloc_Alloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | LPVOID CALLBACK IMalloc_Realloc_Proxy( | 
 |     IMalloc* This, | 
 |     LPVOID pv, | 
 |     ULONG cb); | 
 | void __RPC_STUB IMalloc_Realloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IMalloc_Free_Proxy( | 
 |     IMalloc* This, | 
 |     LPVOID pv); | 
 | void __RPC_STUB IMalloc_Free_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | ULONG CALLBACK IMalloc_GetSize_Proxy( | 
 |     IMalloc* This, | 
 |     LPVOID pv); | 
 | void __RPC_STUB IMalloc_GetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | int CALLBACK IMalloc_DidAlloc_Proxy( | 
 |     IMalloc* This, | 
 |     LPVOID pv); | 
 | void __RPC_STUB IMalloc_DidAlloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IMalloc_HeapMinimize_Proxy( | 
 |     IMalloc* This); | 
 | void __RPC_STUB IMalloc_HeapMinimize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IMallocSpy IMallocSpy; | 
 | typedef IMallocSpy *LPMALLOCSPY; | 
 |  | 
 | /***************************************************************************** | 
 |  * IMallocSpy interface | 
 |  */ | 
 | DEFINE_GUID(IID_IMallocSpy, 0x0000001d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IMallocSpy : public IUnknown | 
 | { | 
 |     virtual ULONG STDMETHODCALLTYPE PreAlloc( | 
 |         ULONG cbRequest) = 0; | 
 |  | 
 |     virtual LPVOID STDMETHODCALLTYPE PostAlloc( | 
 |         LPVOID pActual) = 0; | 
 |  | 
 |     virtual LPVOID STDMETHODCALLTYPE PreFree( | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE PostFree( | 
 |         BOOL fSpyed) = 0; | 
 |  | 
 |     virtual ULONG STDMETHODCALLTYPE PreRealloc( | 
 |         LPVOID pRequest, | 
 |         ULONG cbRequest, | 
 |         LPVOID* ppNewRequest, | 
 |         BOOL fSpyed) = 0; | 
 |  | 
 |     virtual LPVOID STDMETHODCALLTYPE PostRealloc( | 
 |         LPVOID pActual, | 
 |         BOOL fSpyed) = 0; | 
 |  | 
 |     virtual LPVOID STDMETHODCALLTYPE PreGetSize( | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed) = 0; | 
 |  | 
 |     virtual ULONG STDMETHODCALLTYPE PostGetSize( | 
 |         ULONG cbActual, | 
 |         BOOL fSpyed) = 0; | 
 |  | 
 |     virtual LPVOID STDMETHODCALLTYPE PreDidAlloc( | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed) = 0; | 
 |  | 
 |     virtual int STDMETHODCALLTYPE PostDidAlloc( | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed, | 
 |         int fActual) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE PreHeapMinimize( | 
 |         ) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE PostHeapMinimize( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IMallocSpyVtbl IMallocSpyVtbl; | 
 | struct IMallocSpy { | 
 |     const IMallocSpyVtbl* lpVtbl; | 
 | }; | 
 | struct IMallocSpyVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IMallocSpy* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IMallocSpy* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IMallocSpy* This); | 
 |  | 
 |     /*** IMallocSpy methods ***/ | 
 |     ULONG (STDMETHODCALLTYPE *PreAlloc)( | 
 |         IMallocSpy* This, | 
 |         ULONG cbRequest); | 
 |  | 
 |     LPVOID (STDMETHODCALLTYPE *PostAlloc)( | 
 |         IMallocSpy* This, | 
 |         LPVOID pActual); | 
 |  | 
 |     LPVOID (STDMETHODCALLTYPE *PreFree)( | 
 |         IMallocSpy* This, | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed); | 
 |  | 
 |     void (STDMETHODCALLTYPE *PostFree)( | 
 |         IMallocSpy* This, | 
 |         BOOL fSpyed); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *PreRealloc)( | 
 |         IMallocSpy* This, | 
 |         LPVOID pRequest, | 
 |         ULONG cbRequest, | 
 |         LPVOID* ppNewRequest, | 
 |         BOOL fSpyed); | 
 |  | 
 |     LPVOID (STDMETHODCALLTYPE *PostRealloc)( | 
 |         IMallocSpy* This, | 
 |         LPVOID pActual, | 
 |         BOOL fSpyed); | 
 |  | 
 |     LPVOID (STDMETHODCALLTYPE *PreGetSize)( | 
 |         IMallocSpy* This, | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *PostGetSize)( | 
 |         IMallocSpy* This, | 
 |         ULONG cbActual, | 
 |         BOOL fSpyed); | 
 |  | 
 |     LPVOID (STDMETHODCALLTYPE *PreDidAlloc)( | 
 |         IMallocSpy* This, | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed); | 
 |  | 
 |     int (STDMETHODCALLTYPE *PostDidAlloc)( | 
 |         IMallocSpy* This, | 
 |         LPVOID pRequest, | 
 |         BOOL fSpyed, | 
 |         int fActual); | 
 |  | 
 |     void (STDMETHODCALLTYPE *PreHeapMinimize)( | 
 |         IMallocSpy* This); | 
 |  | 
 |     void (STDMETHODCALLTYPE *PostHeapMinimize)( | 
 |         IMallocSpy* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IMallocSpy_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IMallocSpy_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IMallocSpy_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IMallocSpy methods ***/ | 
 | #define IMallocSpy_PreAlloc(p,a) (p)->lpVtbl->PreAlloc(p,a) | 
 | #define IMallocSpy_PostAlloc(p,a) (p)->lpVtbl->PostAlloc(p,a) | 
 | #define IMallocSpy_PreFree(p,a,b) (p)->lpVtbl->PreFree(p,a,b) | 
 | #define IMallocSpy_PostFree(p,a) (p)->lpVtbl->PostFree(p,a) | 
 | #define IMallocSpy_PreRealloc(p,a,b,c,d) (p)->lpVtbl->PreRealloc(p,a,b,c,d) | 
 | #define IMallocSpy_PostRealloc(p,a,b) (p)->lpVtbl->PostRealloc(p,a,b) | 
 | #define IMallocSpy_PreGetSize(p,a,b) (p)->lpVtbl->PreGetSize(p,a,b) | 
 | #define IMallocSpy_PostGetSize(p,a,b) (p)->lpVtbl->PostGetSize(p,a,b) | 
 | #define IMallocSpy_PreDidAlloc(p,a,b) (p)->lpVtbl->PreDidAlloc(p,a,b) | 
 | #define IMallocSpy_PostDidAlloc(p,a,b,c) (p)->lpVtbl->PostDidAlloc(p,a,b,c) | 
 | #define IMallocSpy_PreHeapMinimize(p) (p)->lpVtbl->PreHeapMinimize(p) | 
 | #define IMallocSpy_PostHeapMinimize(p) (p)->lpVtbl->PostHeapMinimize(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define IMallocSpy_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IMallocSpy methods ***/ \ | 
 |     STDMETHOD_(ULONG,PreAlloc)(THIS_ ULONG cbRequest) PURE; \ | 
 |     STDMETHOD_(LPVOID,PostAlloc)(THIS_ LPVOID pActual) PURE; \ | 
 |     STDMETHOD_(LPVOID,PreFree)(THIS_ LPVOID pRequest, BOOL fSpyed) PURE; \ | 
 |     STDMETHOD_(void,PostFree)(THIS_ BOOL fSpyed) PURE; \ | 
 |     STDMETHOD_(ULONG,PreRealloc)(THIS_ LPVOID pRequest, ULONG cbRequest, LPVOID* ppNewRequest, BOOL fSpyed) PURE; \ | 
 |     STDMETHOD_(LPVOID,PostRealloc)(THIS_ LPVOID pActual, BOOL fSpyed) PURE; \ | 
 |     STDMETHOD_(LPVOID,PreGetSize)(THIS_ LPVOID pRequest, BOOL fSpyed) PURE; \ | 
 |     STDMETHOD_(ULONG,PostGetSize)(THIS_ ULONG cbActual, BOOL fSpyed) PURE; \ | 
 |     STDMETHOD_(LPVOID,PreDidAlloc)(THIS_ LPVOID pRequest, BOOL fSpyed) PURE; \ | 
 |     STDMETHOD_(int,PostDidAlloc)(THIS_ LPVOID pRequest, BOOL fSpyed, int fActual) PURE; \ | 
 |     STDMETHOD_(void,PreHeapMinimize)(THIS) PURE; \ | 
 |     STDMETHOD_(void,PostHeapMinimize)(THIS) PURE; | 
 |  | 
 | ULONG CALLBACK IMallocSpy_PreAlloc_Proxy( | 
 |     IMallocSpy* This, | 
 |     ULONG cbRequest); | 
 | void __RPC_STUB IMallocSpy_PreAlloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | LPVOID CALLBACK IMallocSpy_PostAlloc_Proxy( | 
 |     IMallocSpy* This, | 
 |     LPVOID pActual); | 
 | void __RPC_STUB IMallocSpy_PostAlloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | LPVOID CALLBACK IMallocSpy_PreFree_Proxy( | 
 |     IMallocSpy* This, | 
 |     LPVOID pRequest, | 
 |     BOOL fSpyed); | 
 | void __RPC_STUB IMallocSpy_PreFree_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IMallocSpy_PostFree_Proxy( | 
 |     IMallocSpy* This, | 
 |     BOOL fSpyed); | 
 | void __RPC_STUB IMallocSpy_PostFree_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | ULONG CALLBACK IMallocSpy_PreRealloc_Proxy( | 
 |     IMallocSpy* This, | 
 |     LPVOID pRequest, | 
 |     ULONG cbRequest, | 
 |     LPVOID* ppNewRequest, | 
 |     BOOL fSpyed); | 
 | void __RPC_STUB IMallocSpy_PreRealloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | LPVOID CALLBACK IMallocSpy_PostRealloc_Proxy( | 
 |     IMallocSpy* This, | 
 |     LPVOID pActual, | 
 |     BOOL fSpyed); | 
 | void __RPC_STUB IMallocSpy_PostRealloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | LPVOID CALLBACK IMallocSpy_PreGetSize_Proxy( | 
 |     IMallocSpy* This, | 
 |     LPVOID pRequest, | 
 |     BOOL fSpyed); | 
 | void __RPC_STUB IMallocSpy_PreGetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | ULONG CALLBACK IMallocSpy_PostGetSize_Proxy( | 
 |     IMallocSpy* This, | 
 |     ULONG cbActual, | 
 |     BOOL fSpyed); | 
 | void __RPC_STUB IMallocSpy_PostGetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | LPVOID CALLBACK IMallocSpy_PreDidAlloc_Proxy( | 
 |     IMallocSpy* This, | 
 |     LPVOID pRequest, | 
 |     BOOL fSpyed); | 
 | void __RPC_STUB IMallocSpy_PreDidAlloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | int CALLBACK IMallocSpy_PostDidAlloc_Proxy( | 
 |     IMallocSpy* This, | 
 |     LPVOID pRequest, | 
 |     BOOL fSpyed, | 
 |     int fActual); | 
 | void __RPC_STUB IMallocSpy_PostDidAlloc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IMallocSpy_PreHeapMinimize_Proxy( | 
 |     IMallocSpy* This); | 
 | void __RPC_STUB IMallocSpy_PreHeapMinimize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IMallocSpy_PostHeapMinimize_Proxy( | 
 |     IMallocSpy* This); | 
 | void __RPC_STUB IMallocSpy_PostHeapMinimize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IEnumUnknown IEnumUnknown; | 
 | typedef IEnumUnknown *LPENUMUNKNOWN; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumUnknown interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumUnknown, 0x00000100, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumUnknown : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         IUnknown** rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumUnknown** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumUnknownVtbl IEnumUnknownVtbl; | 
 | struct IEnumUnknown { | 
 |     const IEnumUnknownVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumUnknownVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumUnknown* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumUnknown* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumUnknown* This); | 
 |  | 
 |     /*** IEnumUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumUnknown* This, | 
 |         ULONG celt, | 
 |         IUnknown** rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumUnknown* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumUnknown* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumUnknown* This, | 
 |         IEnumUnknown** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumUnknown_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumUnknown methods ***/ | 
 | #define IEnumUnknown_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumUnknown_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumUnknown_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumUnknown_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumUnknown_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, IUnknown** rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumUnknown** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumUnknown_RemoteNext_Proxy( | 
 |     IEnumUnknown* This, | 
 |     ULONG celt, | 
 |     IUnknown** rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumUnknown_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumUnknown_Next_Proxy( | 
 |     IEnumUnknown* This, | 
 |     ULONG celt, | 
 |     IUnknown** rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumUnknown_Next_Stub( | 
 |     IEnumUnknown* This, | 
 |     ULONG celt, | 
 |     IUnknown** rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumUnknown_Skip_Proxy( | 
 |     IEnumUnknown* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumUnknown_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumUnknown_Reset_Proxy( | 
 |     IEnumUnknown* This); | 
 | void __RPC_STUB IEnumUnknown_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumUnknown_Clone_Proxy( | 
 |     IEnumUnknown* This, | 
 |     IEnumUnknown** ppenum); | 
 | void __RPC_STUB IEnumUnknown_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct ISurrogate ISurrogate; | 
 | typedef ISurrogate *LPSURROGATE; | 
 |  | 
 | /***************************************************************************** | 
 |  * ISurrogate interface | 
 |  */ | 
 | DEFINE_GUID(IID_ISurrogate, 0x00000022, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct ISurrogate : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE LoadDllServer( | 
 |         REFCLSID Clsid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE FreeSurrogate( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct ISurrogateVtbl ISurrogateVtbl; | 
 | struct ISurrogate { | 
 |     const ISurrogateVtbl* lpVtbl; | 
 | }; | 
 | struct ISurrogateVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         ISurrogate* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         ISurrogate* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         ISurrogate* This); | 
 |  | 
 |     /*** ISurrogate methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *LoadDllServer)( | 
 |         ISurrogate* This, | 
 |         REFCLSID Clsid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *FreeSurrogate)( | 
 |         ISurrogate* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define ISurrogate_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define ISurrogate_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define ISurrogate_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** ISurrogate methods ***/ | 
 | #define ISurrogate_LoadDllServer(p,a) (p)->lpVtbl->LoadDllServer(p,a) | 
 | #define ISurrogate_FreeSurrogate(p) (p)->lpVtbl->FreeSurrogate(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define ISurrogate_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** ISurrogate methods ***/ \ | 
 |     STDMETHOD_(HRESULT,LoadDllServer)(THIS_ REFCLSID Clsid) PURE; \ | 
 |     STDMETHOD_(HRESULT,FreeSurrogate)(THIS) PURE; | 
 |  | 
 | HRESULT CALLBACK ISurrogate_LoadDllServer_Proxy( | 
 |     ISurrogate* This, | 
 |     REFCLSID Clsid); | 
 | void __RPC_STUB ISurrogate_LoadDllServer_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ISurrogate_FreeSurrogate_Proxy( | 
 |     ISurrogate* This); | 
 | void __RPC_STUB ISurrogate_FreeSurrogate_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IGlobalInterfaceTable IGlobalInterfaceTable; | 
 | typedef IGlobalInterfaceTable *LPGLOBALINTERFACETABLE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IGlobalInterfaceTable interface | 
 |  */ | 
 | DEFINE_GUID(IID_IGlobalInterfaceTable, 0x00000146, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IGlobalInterfaceTable : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE RegisterInterfaceInGlobal( | 
 |         IUnknown* pUnk, | 
 |         REFIID riid, | 
 |         DWORD* pdwCookie) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RevokeInterfaceFromGlobal( | 
 |         DWORD dwCookie) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetInterfaceFromGlobal( | 
 |         DWORD dwCookie, | 
 |         REFIID riid, | 
 |         void** ppv) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IGlobalInterfaceTableVtbl IGlobalInterfaceTableVtbl; | 
 | struct IGlobalInterfaceTable { | 
 |     const IGlobalInterfaceTableVtbl* lpVtbl; | 
 | }; | 
 | struct IGlobalInterfaceTableVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IGlobalInterfaceTable* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IGlobalInterfaceTable* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IGlobalInterfaceTable* This); | 
 |  | 
 |     /*** IGlobalInterfaceTable methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *RegisterInterfaceInGlobal)( | 
 |         IGlobalInterfaceTable* This, | 
 |         IUnknown* pUnk, | 
 |         REFIID riid, | 
 |         DWORD* pdwCookie); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RevokeInterfaceFromGlobal)( | 
 |         IGlobalInterfaceTable* This, | 
 |         DWORD dwCookie); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetInterfaceFromGlobal)( | 
 |         IGlobalInterfaceTable* This, | 
 |         DWORD dwCookie, | 
 |         REFIID riid, | 
 |         void** ppv); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IGlobalInterfaceTable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IGlobalInterfaceTable_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IGlobalInterfaceTable_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IGlobalInterfaceTable methods ***/ | 
 | #define IGlobalInterfaceTable_RegisterInterfaceInGlobal(p,a,b,c) (p)->lpVtbl->RegisterInterfaceInGlobal(p,a,b,c) | 
 | #define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(p,a) (p)->lpVtbl->RevokeInterfaceFromGlobal(p,a) | 
 | #define IGlobalInterfaceTable_GetInterfaceFromGlobal(p,a,b,c) (p)->lpVtbl->GetInterfaceFromGlobal(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define IGlobalInterfaceTable_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IGlobalInterfaceTable methods ***/ \ | 
 |     STDMETHOD_(HRESULT,RegisterInterfaceInGlobal)(THIS_ IUnknown* pUnk, REFIID riid, DWORD* pdwCookie) PURE; \ | 
 |     STDMETHOD_(HRESULT,RevokeInterfaceFromGlobal)(THIS_ DWORD dwCookie) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetInterfaceFromGlobal)(THIS_ DWORD dwCookie, REFIID riid, void** ppv) PURE; | 
 |  | 
 | HRESULT CALLBACK IGlobalInterfaceTable_RegisterInterfaceInGlobal_Proxy( | 
 |     IGlobalInterfaceTable* This, | 
 |     IUnknown* pUnk, | 
 |     REFIID riid, | 
 |     DWORD* pdwCookie); | 
 | void __RPC_STUB IGlobalInterfaceTable_RegisterInterfaceInGlobal_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Proxy( | 
 |     IGlobalInterfaceTable* This, | 
 |     DWORD dwCookie); | 
 | void __RPC_STUB IGlobalInterfaceTable_RevokeInterfaceFromGlobal_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IGlobalInterfaceTable_GetInterfaceFromGlobal_Proxy( | 
 |     IGlobalInterfaceTable* This, | 
 |     DWORD dwCookie, | 
 |     REFIID riid, | 
 |     void** ppv); | 
 | void __RPC_STUB IGlobalInterfaceTable_GetInterfaceFromGlobal_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IBindCtx IBindCtx; | 
 | typedef IBindCtx *LPBINDCTX; | 
 |  | 
 | typedef IBindCtx *LPBC; | 
 |  | 
 | typedef struct tagBIND_OPTS { | 
 |     DWORD cbStruct; | 
 |     DWORD grfFlags; | 
 |     DWORD grfMode; | 
 |     DWORD dwTickCountDeadline; | 
 | } BIND_OPTS, *LPBIND_OPTS; | 
 |  | 
 | typedef struct tagBIND_OPTS2 { | 
 |     DWORD cbStruct; | 
 |     DWORD grfFlags; | 
 |     DWORD grfMode; | 
 |     DWORD dwTickCountDeadline; | 
 |     DWORD dwTrackFlags; | 
 |     DWORD dwClassContext; | 
 |     LCID locale; | 
 |     COSERVERINFO *pServerInfo; | 
 | } BIND_OPTS2, *LPBIND_OPTS2; | 
 |  | 
 | typedef enum tagBIND_FLAGS { | 
 |     BIND_MAYBOTHERUSER = 1, | 
 |     BIND_JUSTTESTEXISTENCE = 2 | 
 | } BIND_FLAGS; | 
 |  | 
 | /***************************************************************************** | 
 |  * IBindCtx interface | 
 |  */ | 
 | DEFINE_GUID(IID_IBindCtx, 0x0000000e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IBindCtx : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE RegisterObjectBound( | 
 |         IUnknown* punk) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RevokeObjectBound( | 
 |         IUnknown* punk) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ReleaseBoundObjects( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetBindOptions( | 
 |         BIND_OPTS* pbindopts) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetBindOptions( | 
 |         BIND_OPTS* pbindopts) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetRunningObjectTable( | 
 |         IRunningObjectTable** pprot) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RegisterObjectParam( | 
 |         LPOLESTR pszKey, | 
 |         IUnknown* punk) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetObjectParam( | 
 |         LPOLESTR pszKey, | 
 |         IUnknown** ppunk) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EnumObjectParam( | 
 |         IEnumString** ppenum) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RevokeObjectParam( | 
 |         LPOLESTR pszKey) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IBindCtxVtbl IBindCtxVtbl; | 
 | struct IBindCtx { | 
 |     const IBindCtxVtbl* lpVtbl; | 
 | }; | 
 | struct IBindCtxVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IBindCtx* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IBindCtx* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IBindCtx* This); | 
 |  | 
 |     /*** IBindCtx methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *RegisterObjectBound)( | 
 |         IBindCtx* This, | 
 |         IUnknown* punk); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RevokeObjectBound)( | 
 |         IBindCtx* This, | 
 |         IUnknown* punk); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ReleaseBoundObjects)( | 
 |         IBindCtx* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetBindOptions)( | 
 |         IBindCtx* This, | 
 |         BIND_OPTS* pbindopts); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetBindOptions)( | 
 |         IBindCtx* This, | 
 |         BIND_OPTS* pbindopts); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetRunningObjectTable)( | 
 |         IBindCtx* This, | 
 |         IRunningObjectTable** pprot); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RegisterObjectParam)( | 
 |         IBindCtx* This, | 
 |         LPOLESTR pszKey, | 
 |         IUnknown* punk); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetObjectParam)( | 
 |         IBindCtx* This, | 
 |         LPOLESTR pszKey, | 
 |         IUnknown** ppunk); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EnumObjectParam)( | 
 |         IBindCtx* This, | 
 |         IEnumString** ppenum); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RevokeObjectParam)( | 
 |         IBindCtx* This, | 
 |         LPOLESTR pszKey); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IBindCtx_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IBindCtx_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IBindCtx_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IBindCtx methods ***/ | 
 | #define IBindCtx_RegisterObjectBound(p,a) (p)->lpVtbl->RegisterObjectBound(p,a) | 
 | #define IBindCtx_RevokeObjectBound(p,a) (p)->lpVtbl->RevokeObjectBound(p,a) | 
 | #define IBindCtx_ReleaseBoundObjects(p) (p)->lpVtbl->ReleaseBoundObjects(p) | 
 | #define IBindCtx_SetBindOptions(p,a) (p)->lpVtbl->SetBindOptions(p,a) | 
 | #define IBindCtx_GetBindOptions(p,a) (p)->lpVtbl->GetBindOptions(p,a) | 
 | #define IBindCtx_GetRunningObjectTable(p,a) (p)->lpVtbl->GetRunningObjectTable(p,a) | 
 | #define IBindCtx_RegisterObjectParam(p,a,b) (p)->lpVtbl->RegisterObjectParam(p,a,b) | 
 | #define IBindCtx_GetObjectParam(p,a,b) (p)->lpVtbl->GetObjectParam(p,a,b) | 
 | #define IBindCtx_EnumObjectParam(p,a) (p)->lpVtbl->EnumObjectParam(p,a) | 
 | #define IBindCtx_RevokeObjectParam(p,a) (p)->lpVtbl->RevokeObjectParam(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IBindCtx_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IBindCtx methods ***/ \ | 
 |     STDMETHOD_(HRESULT,RegisterObjectBound)(THIS_ IUnknown* punk) PURE; \ | 
 |     STDMETHOD_(HRESULT,RevokeObjectBound)(THIS_ IUnknown* punk) PURE; \ | 
 |     STDMETHOD_(HRESULT,ReleaseBoundObjects)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetBindOptions)(THIS_ BIND_OPTS* pbindopts) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetBindOptions)(THIS_ BIND_OPTS* pbindopts) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetRunningObjectTable)(THIS_ IRunningObjectTable** pprot) PURE; \ | 
 |     STDMETHOD_(HRESULT,RegisterObjectParam)(THIS_ LPOLESTR pszKey, IUnknown* punk) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetObjectParam)(THIS_ LPOLESTR pszKey, IUnknown** ppunk) PURE; \ | 
 |     STDMETHOD_(HRESULT,EnumObjectParam)(THIS_ IEnumString** ppenum) PURE; \ | 
 |     STDMETHOD_(HRESULT,RevokeObjectParam)(THIS_ LPOLESTR pszKey) PURE; | 
 |  | 
 | HRESULT CALLBACK IBindCtx_RegisterObjectBound_Proxy( | 
 |     IBindCtx* This, | 
 |     IUnknown* punk); | 
 | void __RPC_STUB IBindCtx_RegisterObjectBound_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_RevokeObjectBound_Proxy( | 
 |     IBindCtx* This, | 
 |     IUnknown* punk); | 
 | void __RPC_STUB IBindCtx_RevokeObjectBound_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_ReleaseBoundObjects_Proxy( | 
 |     IBindCtx* This); | 
 | void __RPC_STUB IBindCtx_ReleaseBoundObjects_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_RemoteSetBindOptions_Proxy( | 
 |     IBindCtx* This, | 
 |     BIND_OPTS2* pbindopts); | 
 | void __RPC_STUB IBindCtx_RemoteSetBindOptions_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_SetBindOptions_Proxy( | 
 |     IBindCtx* This, | 
 |     BIND_OPTS* pbindopts); | 
 | HRESULT __RPC_STUB IBindCtx_SetBindOptions_Stub( | 
 |     IBindCtx* This, | 
 |     BIND_OPTS2* pbindopts); | 
 | HRESULT CALLBACK IBindCtx_RemoteGetBindOptions_Proxy( | 
 |     IBindCtx* This, | 
 |     BIND_OPTS2* pbindopts); | 
 | void __RPC_STUB IBindCtx_RemoteGetBindOptions_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_GetBindOptions_Proxy( | 
 |     IBindCtx* This, | 
 |     BIND_OPTS* pbindopts); | 
 | HRESULT __RPC_STUB IBindCtx_GetBindOptions_Stub( | 
 |     IBindCtx* This, | 
 |     BIND_OPTS2* pbindopts); | 
 | HRESULT CALLBACK IBindCtx_GetRunningObjectTable_Proxy( | 
 |     IBindCtx* This, | 
 |     IRunningObjectTable** pprot); | 
 | void __RPC_STUB IBindCtx_GetRunningObjectTable_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_RegisterObjectParam_Proxy( | 
 |     IBindCtx* This, | 
 |     LPOLESTR pszKey, | 
 |     IUnknown* punk); | 
 | void __RPC_STUB IBindCtx_RegisterObjectParam_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_GetObjectParam_Proxy( | 
 |     IBindCtx* This, | 
 |     LPOLESTR pszKey, | 
 |     IUnknown** ppunk); | 
 | void __RPC_STUB IBindCtx_GetObjectParam_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_EnumObjectParam_Proxy( | 
 |     IBindCtx* This, | 
 |     IEnumString** ppenum); | 
 | void __RPC_STUB IBindCtx_EnumObjectParam_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IBindCtx_RevokeObjectParam_Proxy( | 
 |     IBindCtx* This, | 
 |     LPOLESTR pszKey); | 
 | void __RPC_STUB IBindCtx_RevokeObjectParam_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IEnumMoniker IEnumMoniker; | 
 | typedef IEnumMoniker *LPENUMMONIKER; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumMoniker interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumMoniker, 0x00000102, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumMoniker : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         IMoniker** rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumMoniker** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumMonikerVtbl IEnumMonikerVtbl; | 
 | struct IEnumMoniker { | 
 |     const IEnumMonikerVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumMonikerVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumMoniker* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumMoniker* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumMoniker* This); | 
 |  | 
 |     /*** IEnumMoniker methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumMoniker* This, | 
 |         ULONG celt, | 
 |         IMoniker** rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumMoniker* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumMoniker* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumMoniker* This, | 
 |         IEnumMoniker** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumMoniker_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumMoniker_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumMoniker_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumMoniker methods ***/ | 
 | #define IEnumMoniker_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumMoniker_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumMoniker_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumMoniker_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumMoniker_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumMoniker methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, IMoniker** rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumMoniker** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumMoniker_RemoteNext_Proxy( | 
 |     IEnumMoniker* This, | 
 |     ULONG celt, | 
 |     IMoniker** rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumMoniker_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumMoniker_Next_Proxy( | 
 |     IEnumMoniker* This, | 
 |     ULONG celt, | 
 |     IMoniker** rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumMoniker_Next_Stub( | 
 |     IEnumMoniker* This, | 
 |     ULONG celt, | 
 |     IMoniker** rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumMoniker_Skip_Proxy( | 
 |     IEnumMoniker* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumMoniker_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumMoniker_Reset_Proxy( | 
 |     IEnumMoniker* This); | 
 | void __RPC_STUB IEnumMoniker_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumMoniker_Clone_Proxy( | 
 |     IEnumMoniker* This, | 
 |     IEnumMoniker** ppenum); | 
 | void __RPC_STUB IEnumMoniker_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IRunnableObject IRunnableObject; | 
 | typedef IRunnableObject *LPRUNNABLEOBJECT; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRunnableObject interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRunnableObject, 0x00000126, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRunnableObject : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetRunningClass( | 
 |         LPCLSID lpClsid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Run( | 
 |         LPBINDCTX pbc) = 0; | 
 |  | 
 |     virtual BOOL STDMETHODCALLTYPE IsRunning( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE LockRunning( | 
 |         BOOL fLock, | 
 |         BOOL fLastUnlockCloses) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetContainedObject( | 
 |         BOOL fContained) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRunnableObjectVtbl IRunnableObjectVtbl; | 
 | struct IRunnableObject { | 
 |     const IRunnableObjectVtbl* lpVtbl; | 
 | }; | 
 | struct IRunnableObjectVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRunnableObject* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRunnableObject* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRunnableObject* This); | 
 |  | 
 |     /*** IRunnableObject methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetRunningClass)( | 
 |         IRunnableObject* This, | 
 |         LPCLSID lpClsid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Run)( | 
 |         IRunnableObject* This, | 
 |         LPBINDCTX pbc); | 
 |  | 
 |     BOOL (STDMETHODCALLTYPE *IsRunning)( | 
 |         IRunnableObject* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *LockRunning)( | 
 |         IRunnableObject* This, | 
 |         BOOL fLock, | 
 |         BOOL fLastUnlockCloses); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetContainedObject)( | 
 |         IRunnableObject* This, | 
 |         BOOL fContained); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRunnableObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRunnableObject_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRunnableObject_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRunnableObject methods ***/ | 
 | #define IRunnableObject_GetRunningClass(p,a) (p)->lpVtbl->GetRunningClass(p,a) | 
 | #define IRunnableObject_Run(p,a) (p)->lpVtbl->Run(p,a) | 
 | #define IRunnableObject_IsRunning(p) (p)->lpVtbl->IsRunning(p) | 
 | #define IRunnableObject_LockRunning(p,a,b) (p)->lpVtbl->LockRunning(p,a,b) | 
 | #define IRunnableObject_SetContainedObject(p,a) (p)->lpVtbl->SetContainedObject(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRunnableObject_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRunnableObject methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetRunningClass)(THIS_ LPCLSID lpClsid) PURE; \ | 
 |     STDMETHOD_(HRESULT,Run)(THIS_ LPBINDCTX pbc) PURE; \ | 
 |     STDMETHOD_(BOOL,IsRunning)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,LockRunning)(THIS_ BOOL fLock, BOOL fLastUnlockCloses) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetContainedObject)(THIS_ BOOL fContained) PURE; | 
 |  | 
 | HRESULT CALLBACK IRunnableObject_GetRunningClass_Proxy( | 
 |     IRunnableObject* This, | 
 |     LPCLSID lpClsid); | 
 | void __RPC_STUB IRunnableObject_GetRunningClass_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunnableObject_Run_Proxy( | 
 |     IRunnableObject* This, | 
 |     LPBINDCTX pbc); | 
 | void __RPC_STUB IRunnableObject_Run_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunnableObject_RemoteIsRunning_Proxy( | 
 |     IRunnableObject* This); | 
 | void __RPC_STUB IRunnableObject_RemoteIsRunning_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | BOOL CALLBACK IRunnableObject_IsRunning_Proxy( | 
 |     IRunnableObject* This); | 
 | HRESULT __RPC_STUB IRunnableObject_IsRunning_Stub( | 
 |     IRunnableObject* This); | 
 | HRESULT CALLBACK IRunnableObject_LockRunning_Proxy( | 
 |     IRunnableObject* This, | 
 |     BOOL fLock, | 
 |     BOOL fLastUnlockCloses); | 
 | void __RPC_STUB IRunnableObject_LockRunning_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunnableObject_SetContainedObject_Proxy( | 
 |     IRunnableObject* This, | 
 |     BOOL fContained); | 
 | void __RPC_STUB IRunnableObject_SetContainedObject_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | #ifdef __WINESRC__ | 
 | #undef GetObject | 
 | #endif | 
 | typedef IRunningObjectTable *LPRUNNINGOBJECTTABLE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRunningObjectTable interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRunningObjectTable, 0x00000010, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRunningObjectTable : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Register( | 
 |         DWORD grfFlags, | 
 |         IUnknown* punkObject, | 
 |         IMoniker* pmkObjectName, | 
 |         DWORD* pdwRegister) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Revoke( | 
 |         DWORD dwRegister) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE IsRunning( | 
 |         IMoniker* pmkObjectName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetObject( | 
 |         IMoniker* pmkObjectName, | 
 |         IUnknown** ppunkObject) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE NoteChangeTime( | 
 |         DWORD dwRegister, | 
 |         FILETIME* pfiletime) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange( | 
 |         IMoniker* pmkObjectName, | 
 |         FILETIME* pfiletime) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EnumRunning( | 
 |         IEnumMoniker** ppenumMoniker) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRunningObjectTableVtbl IRunningObjectTableVtbl; | 
 | struct IRunningObjectTable { | 
 |     const IRunningObjectTableVtbl* lpVtbl; | 
 | }; | 
 | struct IRunningObjectTableVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRunningObjectTable* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRunningObjectTable* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRunningObjectTable* This); | 
 |  | 
 |     /*** IRunningObjectTable methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Register)( | 
 |         IRunningObjectTable* This, | 
 |         DWORD grfFlags, | 
 |         IUnknown* punkObject, | 
 |         IMoniker* pmkObjectName, | 
 |         DWORD* pdwRegister); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Revoke)( | 
 |         IRunningObjectTable* This, | 
 |         DWORD dwRegister); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *IsRunning)( | 
 |         IRunningObjectTable* This, | 
 |         IMoniker* pmkObjectName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetObject)( | 
 |         IRunningObjectTable* This, | 
 |         IMoniker* pmkObjectName, | 
 |         IUnknown** ppunkObject); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *NoteChangeTime)( | 
 |         IRunningObjectTable* This, | 
 |         DWORD dwRegister, | 
 |         FILETIME* pfiletime); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)( | 
 |         IRunningObjectTable* This, | 
 |         IMoniker* pmkObjectName, | 
 |         FILETIME* pfiletime); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EnumRunning)( | 
 |         IRunningObjectTable* This, | 
 |         IEnumMoniker** ppenumMoniker); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRunningObjectTable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRunningObjectTable_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRunningObjectTable_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRunningObjectTable methods ***/ | 
 | #define IRunningObjectTable_Register(p,a,b,c,d) (p)->lpVtbl->Register(p,a,b,c,d) | 
 | #define IRunningObjectTable_Revoke(p,a) (p)->lpVtbl->Revoke(p,a) | 
 | #define IRunningObjectTable_IsRunning(p,a) (p)->lpVtbl->IsRunning(p,a) | 
 | #define IRunningObjectTable_GetObject(p,a,b) (p)->lpVtbl->GetObject(p,a,b) | 
 | #define IRunningObjectTable_NoteChangeTime(p,a,b) (p)->lpVtbl->NoteChangeTime(p,a,b) | 
 | #define IRunningObjectTable_GetTimeOfLastChange(p,a,b) (p)->lpVtbl->GetTimeOfLastChange(p,a,b) | 
 | #define IRunningObjectTable_EnumRunning(p,a) (p)->lpVtbl->EnumRunning(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRunningObjectTable_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRunningObjectTable methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Register)(THIS_ DWORD grfFlags, IUnknown* punkObject, IMoniker* pmkObjectName, DWORD* pdwRegister) PURE; \ | 
 |     STDMETHOD_(HRESULT,Revoke)(THIS_ DWORD dwRegister) PURE; \ | 
 |     STDMETHOD_(HRESULT,IsRunning)(THIS_ IMoniker* pmkObjectName) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetObject)(THIS_ IMoniker* pmkObjectName, IUnknown** ppunkObject) PURE; \ | 
 |     STDMETHOD_(HRESULT,NoteChangeTime)(THIS_ DWORD dwRegister, FILETIME* pfiletime) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetTimeOfLastChange)(THIS_ IMoniker* pmkObjectName, FILETIME* pfiletime) PURE; \ | 
 |     STDMETHOD_(HRESULT,EnumRunning)(THIS_ IEnumMoniker** ppenumMoniker) PURE; | 
 |  | 
 | HRESULT CALLBACK IRunningObjectTable_Register_Proxy( | 
 |     IRunningObjectTable* This, | 
 |     DWORD grfFlags, | 
 |     IUnknown* punkObject, | 
 |     IMoniker* pmkObjectName, | 
 |     DWORD* pdwRegister); | 
 | void __RPC_STUB IRunningObjectTable_Register_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunningObjectTable_Revoke_Proxy( | 
 |     IRunningObjectTable* This, | 
 |     DWORD dwRegister); | 
 | void __RPC_STUB IRunningObjectTable_Revoke_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunningObjectTable_IsRunning_Proxy( | 
 |     IRunningObjectTable* This, | 
 |     IMoniker* pmkObjectName); | 
 | void __RPC_STUB IRunningObjectTable_IsRunning_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunningObjectTable_GetObject_Proxy( | 
 |     IRunningObjectTable* This, | 
 |     IMoniker* pmkObjectName, | 
 |     IUnknown** ppunkObject); | 
 | void __RPC_STUB IRunningObjectTable_GetObject_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunningObjectTable_NoteChangeTime_Proxy( | 
 |     IRunningObjectTable* This, | 
 |     DWORD dwRegister, | 
 |     FILETIME* pfiletime); | 
 | void __RPC_STUB IRunningObjectTable_NoteChangeTime_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunningObjectTable_GetTimeOfLastChange_Proxy( | 
 |     IRunningObjectTable* This, | 
 |     IMoniker* pmkObjectName, | 
 |     FILETIME* pfiletime); | 
 | void __RPC_STUB IRunningObjectTable_GetTimeOfLastChange_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRunningObjectTable_EnumRunning_Proxy( | 
 |     IRunningObjectTable* This, | 
 |     IEnumMoniker** ppenumMoniker); | 
 | void __RPC_STUB IRunningObjectTable_EnumRunning_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IPersist IPersist; | 
 | typedef IPersist *LPPERSIST; | 
 |  | 
 | /***************************************************************************** | 
 |  * IPersist interface | 
 |  */ | 
 | DEFINE_GUID(IID_IPersist, 0x0000010c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IPersist : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetClassID( | 
 |         CLSID* pClassID) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IPersistVtbl IPersistVtbl; | 
 | struct IPersist { | 
 |     const IPersistVtbl* lpVtbl; | 
 | }; | 
 | struct IPersistVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IPersist* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IPersist* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IPersist* This); | 
 |  | 
 |     /*** IPersist methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetClassID)( | 
 |         IPersist* This, | 
 |         CLSID* pClassID); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IPersist_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IPersist_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IPersist_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPersist methods ***/ | 
 | #define IPersist_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IPersist_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPersist methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; | 
 |  | 
 | HRESULT CALLBACK IPersist_GetClassID_Proxy( | 
 |     IPersist* This, | 
 |     CLSID* pClassID); | 
 | void __RPC_STUB IPersist_GetClassID_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IPersistStream IPersistStream; | 
 | typedef IPersistStream *LPPERSISTSTREAM; | 
 |  | 
 | /***************************************************************************** | 
 |  * IPersistStream interface | 
 |  */ | 
 | DEFINE_GUID(IID_IPersistStream, 0x00000109, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IPersistStream : public IPersist | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE IsDirty( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Load( | 
 |         IStream* pStm) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Save( | 
 |         IStream* pStm, | 
 |         BOOL fClearDirty) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetSizeMax( | 
 |         ULARGE_INTEGER* pcbSize) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IPersistStreamVtbl IPersistStreamVtbl; | 
 | struct IPersistStream { | 
 |     const IPersistStreamVtbl* lpVtbl; | 
 | }; | 
 | struct IPersistStreamVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IPersistStream* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IPersistStream* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IPersistStream* This); | 
 |  | 
 |     /*** IPersist methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetClassID)( | 
 |         IPersistStream* This, | 
 |         CLSID* pClassID); | 
 |  | 
 |     /*** IPersistStream methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *IsDirty)( | 
 |         IPersistStream* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Load)( | 
 |         IPersistStream* This, | 
 |         IStream* pStm); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Save)( | 
 |         IPersistStream* This, | 
 |         IStream* pStm, | 
 |         BOOL fClearDirty); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetSizeMax)( | 
 |         IPersistStream* This, | 
 |         ULARGE_INTEGER* pcbSize); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IPersistStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IPersistStream_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IPersistStream_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPersist methods ***/ | 
 | #define IPersistStream_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) | 
 | /*** IPersistStream methods ***/ | 
 | #define IPersistStream_IsDirty(p) (p)->lpVtbl->IsDirty(p) | 
 | #define IPersistStream_Load(p,a) (p)->lpVtbl->Load(p,a) | 
 | #define IPersistStream_Save(p,a,b) (p)->lpVtbl->Save(p,a,b) | 
 | #define IPersistStream_GetSizeMax(p,a) (p)->lpVtbl->GetSizeMax(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IPersistStream_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPersist methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ | 
 |     /*** IPersistStream methods ***/ \ | 
 |     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Load)(THIS_ IStream* pStm) PURE; \ | 
 |     STDMETHOD_(HRESULT,Save)(THIS_ IStream* pStm, BOOL fClearDirty) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetSizeMax)(THIS_ ULARGE_INTEGER* pcbSize) PURE; | 
 |  | 
 | HRESULT CALLBACK IPersistStream_IsDirty_Proxy( | 
 |     IPersistStream* This); | 
 | void __RPC_STUB IPersistStream_IsDirty_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStream_Load_Proxy( | 
 |     IPersistStream* This, | 
 |     IStream* pStm); | 
 | void __RPC_STUB IPersistStream_Load_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStream_Save_Proxy( | 
 |     IPersistStream* This, | 
 |     IStream* pStm, | 
 |     BOOL fClearDirty); | 
 | void __RPC_STUB IPersistStream_Save_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStream_GetSizeMax_Proxy( | 
 |     IPersistStream* This, | 
 |     ULARGE_INTEGER* pcbSize); | 
 | void __RPC_STUB IPersistStream_GetSizeMax_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef IMoniker *LPMONIKER; | 
 |  | 
 | typedef enum tagMKSYS { | 
 |     MKSYS_NONE = 0, | 
 |     MKSYS_GENERICCOMPOSITE = 1, | 
 |     MKSYS_FILEMONIKER = 2, | 
 |     MKSYS_ANTIMONIKER = 3, | 
 |     MKSYS_ITEMMONIKER = 4, | 
 |     MKSYS_POINTERMONIKER = 5, | 
 |     MKSYS_CLASSMONIKER = 7 | 
 | } MKSYS; | 
 |  | 
 | typedef enum tagMKREDUCE { | 
 |     MKRREDUCE_ONE = 3 << 16, | 
 |     MKRREDUCE_TOUSER = 2 << 16, | 
 |     MKRREDUCE_THROUGHUSER = 1 << 16, | 
 |     MKRREDUCE_ALL = 0 | 
 | } MKRREDUCE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IMoniker interface | 
 |  */ | 
 | DEFINE_GUID(IID_IMoniker, 0x0000000f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IMoniker : public IPersistStream | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE BindToObject( | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         REFIID riidResult, | 
 |         void** ppvResult) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE BindToStorage( | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         REFIID riid, | 
 |         void** ppvObj) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reduce( | 
 |         IBindCtx* pbc, | 
 |         DWORD dwReduceHowFar, | 
 |         IMoniker** ppmkToLeft, | 
 |         IMoniker** ppmkReduced) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ComposeWith( | 
 |         IMoniker* pmkRight, | 
 |         BOOL fOnlyIfNotGeneric, | 
 |         IMoniker** ppmkComposite) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Enum( | 
 |         BOOL fForward, | 
 |         IEnumMoniker** ppenumMoniker) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE IsEqual( | 
 |         IMoniker* pmkOtherMoniker) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Hash( | 
 |         DWORD* pdwHash) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE IsRunning( | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         IMoniker* pmkNewlyRunning) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange( | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         FILETIME* pFileTime) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Inverse( | 
 |         IMoniker** ppmk) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CommonPrefixWith( | 
 |         IMoniker* pmkOther, | 
 |         IMoniker** ppmkPrefix) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RelativePathTo( | 
 |         IMoniker* pmkOther, | 
 |         IMoniker** ppmkRelPath) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetDisplayName( | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         LPOLESTR* ppszDisplayName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ParseDisplayName( | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         LPOLESTR pszDisplayName, | 
 |         ULONG* pchEaten, | 
 |         IMoniker** ppmkOut) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE IsSystemMoniker( | 
 |         DWORD* pdwMksys) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IMonikerVtbl IMonikerVtbl; | 
 | struct IMoniker { | 
 |     const IMonikerVtbl* lpVtbl; | 
 | }; | 
 | struct IMonikerVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IMoniker* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IMoniker* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IMoniker* This); | 
 |  | 
 |     /*** IPersist methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetClassID)( | 
 |         IMoniker* This, | 
 |         CLSID* pClassID); | 
 |  | 
 |     /*** IPersistStream methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *IsDirty)( | 
 |         IMoniker* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Load)( | 
 |         IMoniker* This, | 
 |         IStream* pStm); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Save)( | 
 |         IMoniker* This, | 
 |         IStream* pStm, | 
 |         BOOL fClearDirty); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetSizeMax)( | 
 |         IMoniker* This, | 
 |         ULARGE_INTEGER* pcbSize); | 
 |  | 
 |     /*** IMoniker methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *BindToObject)( | 
 |         IMoniker* This, | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         REFIID riidResult, | 
 |         void** ppvResult); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *BindToStorage)( | 
 |         IMoniker* This, | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         REFIID riid, | 
 |         void** ppvObj); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reduce)( | 
 |         IMoniker* This, | 
 |         IBindCtx* pbc, | 
 |         DWORD dwReduceHowFar, | 
 |         IMoniker** ppmkToLeft, | 
 |         IMoniker** ppmkReduced); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ComposeWith)( | 
 |         IMoniker* This, | 
 |         IMoniker* pmkRight, | 
 |         BOOL fOnlyIfNotGeneric, | 
 |         IMoniker** ppmkComposite); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Enum)( | 
 |         IMoniker* This, | 
 |         BOOL fForward, | 
 |         IEnumMoniker** ppenumMoniker); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *IsEqual)( | 
 |         IMoniker* This, | 
 |         IMoniker* pmkOtherMoniker); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Hash)( | 
 |         IMoniker* This, | 
 |         DWORD* pdwHash); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *IsRunning)( | 
 |         IMoniker* This, | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         IMoniker* pmkNewlyRunning); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetTimeOfLastChange)( | 
 |         IMoniker* This, | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         FILETIME* pFileTime); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Inverse)( | 
 |         IMoniker* This, | 
 |         IMoniker** ppmk); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CommonPrefixWith)( | 
 |         IMoniker* This, | 
 |         IMoniker* pmkOther, | 
 |         IMoniker** ppmkPrefix); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RelativePathTo)( | 
 |         IMoniker* This, | 
 |         IMoniker* pmkOther, | 
 |         IMoniker** ppmkRelPath); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetDisplayName)( | 
 |         IMoniker* This, | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         LPOLESTR* ppszDisplayName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)( | 
 |         IMoniker* This, | 
 |         IBindCtx* pbc, | 
 |         IMoniker* pmkToLeft, | 
 |         LPOLESTR pszDisplayName, | 
 |         ULONG* pchEaten, | 
 |         IMoniker** ppmkOut); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *IsSystemMoniker)( | 
 |         IMoniker* This, | 
 |         DWORD* pdwMksys); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IMoniker_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IMoniker_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IMoniker_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPersist methods ***/ | 
 | #define IMoniker_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) | 
 | /*** IPersistStream methods ***/ | 
 | #define IMoniker_IsDirty(p) (p)->lpVtbl->IsDirty(p) | 
 | #define IMoniker_Load(p,a) (p)->lpVtbl->Load(p,a) | 
 | #define IMoniker_Save(p,a,b) (p)->lpVtbl->Save(p,a,b) | 
 | #define IMoniker_GetSizeMax(p,a) (p)->lpVtbl->GetSizeMax(p,a) | 
 | /*** IMoniker methods ***/ | 
 | #define IMoniker_BindToObject(p,a,b,c,d) (p)->lpVtbl->BindToObject(p,a,b,c,d) | 
 | #define IMoniker_BindToStorage(p,a,b,c,d) (p)->lpVtbl->BindToStorage(p,a,b,c,d) | 
 | #define IMoniker_Reduce(p,a,b,c,d) (p)->lpVtbl->Reduce(p,a,b,c,d) | 
 | #define IMoniker_ComposeWith(p,a,b,c) (p)->lpVtbl->ComposeWith(p,a,b,c) | 
 | #define IMoniker_Enum(p,a,b) (p)->lpVtbl->Enum(p,a,b) | 
 | #define IMoniker_IsEqual(p,a) (p)->lpVtbl->IsEqual(p,a) | 
 | #define IMoniker_Hash(p,a) (p)->lpVtbl->Hash(p,a) | 
 | #define IMoniker_IsRunning(p,a,b,c) (p)->lpVtbl->IsRunning(p,a,b,c) | 
 | #define IMoniker_GetTimeOfLastChange(p,a,b,c) (p)->lpVtbl->GetTimeOfLastChange(p,a,b,c) | 
 | #define IMoniker_Inverse(p,a) (p)->lpVtbl->Inverse(p,a) | 
 | #define IMoniker_CommonPrefixWith(p,a,b) (p)->lpVtbl->CommonPrefixWith(p,a,b) | 
 | #define IMoniker_RelativePathTo(p,a,b) (p)->lpVtbl->RelativePathTo(p,a,b) | 
 | #define IMoniker_GetDisplayName(p,a,b,c) (p)->lpVtbl->GetDisplayName(p,a,b,c) | 
 | #define IMoniker_ParseDisplayName(p,a,b,c,d,e) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d,e) | 
 | #define IMoniker_IsSystemMoniker(p,a) (p)->lpVtbl->IsSystemMoniker(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IMoniker_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPersist methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ | 
 |     /*** IPersistStream methods ***/ \ | 
 |     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Load)(THIS_ IStream* pStm) PURE; \ | 
 |     STDMETHOD_(HRESULT,Save)(THIS_ IStream* pStm, BOOL fClearDirty) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetSizeMax)(THIS_ ULARGE_INTEGER* pcbSize) PURE; \ | 
 |     /*** IMoniker methods ***/ \ | 
 |     STDMETHOD_(HRESULT,BindToObject)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riidResult, void** ppvResult) PURE; \ | 
 |     STDMETHOD_(HRESULT,BindToStorage)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, void** ppvObj) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reduce)(THIS_ IBindCtx* pbc, DWORD dwReduceHowFar, IMoniker** ppmkToLeft, IMoniker** ppmkReduced) PURE; \ | 
 |     STDMETHOD_(HRESULT,ComposeWith)(THIS_ IMoniker* pmkRight, BOOL fOnlyIfNotGeneric, IMoniker** ppmkComposite) PURE; \ | 
 |     STDMETHOD_(HRESULT,Enum)(THIS_ BOOL fForward, IEnumMoniker** ppenumMoniker) PURE; \ | 
 |     STDMETHOD_(HRESULT,IsEqual)(THIS_ IMoniker* pmkOtherMoniker) PURE; \ | 
 |     STDMETHOD_(HRESULT,Hash)(THIS_ DWORD* pdwHash) PURE; \ | 
 |     STDMETHOD_(HRESULT,IsRunning)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, IMoniker* pmkNewlyRunning) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetTimeOfLastChange)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, FILETIME* pFileTime) PURE; \ | 
 |     STDMETHOD_(HRESULT,Inverse)(THIS_ IMoniker** ppmk) PURE; \ | 
 |     STDMETHOD_(HRESULT,CommonPrefixWith)(THIS_ IMoniker* pmkOther, IMoniker** ppmkPrefix) PURE; \ | 
 |     STDMETHOD_(HRESULT,RelativePathTo)(THIS_ IMoniker* pmkOther, IMoniker** ppmkRelPath) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetDisplayName)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR* ppszDisplayName) PURE; \ | 
 |     STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut) PURE; \ | 
 |     STDMETHOD_(HRESULT,IsSystemMoniker)(THIS_ DWORD* pdwMksys) PURE; | 
 |  | 
 | HRESULT CALLBACK IMoniker_RemoteBindToObject_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     REFIID riidResult, | 
 |     IUnknown** ppvResult); | 
 | void __RPC_STUB IMoniker_RemoteBindToObject_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_BindToObject_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     REFIID riidResult, | 
 |     void** ppvResult); | 
 | HRESULT __RPC_STUB IMoniker_BindToObject_Stub( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     REFIID riidResult, | 
 |     IUnknown** ppvResult); | 
 | HRESULT CALLBACK IMoniker_RemoteBindToStorage_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     REFIID riid, | 
 |     IUnknown** ppvObj); | 
 | void __RPC_STUB IMoniker_RemoteBindToStorage_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_BindToStorage_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     REFIID riid, | 
 |     void** ppvObj); | 
 | HRESULT __RPC_STUB IMoniker_BindToStorage_Stub( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     REFIID riid, | 
 |     IUnknown** ppvObj); | 
 | HRESULT CALLBACK IMoniker_Reduce_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     DWORD dwReduceHowFar, | 
 |     IMoniker** ppmkToLeft, | 
 |     IMoniker** ppmkReduced); | 
 | void __RPC_STUB IMoniker_Reduce_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_ComposeWith_Proxy( | 
 |     IMoniker* This, | 
 |     IMoniker* pmkRight, | 
 |     BOOL fOnlyIfNotGeneric, | 
 |     IMoniker** ppmkComposite); | 
 | void __RPC_STUB IMoniker_ComposeWith_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_Enum_Proxy( | 
 |     IMoniker* This, | 
 |     BOOL fForward, | 
 |     IEnumMoniker** ppenumMoniker); | 
 | void __RPC_STUB IMoniker_Enum_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_IsEqual_Proxy( | 
 |     IMoniker* This, | 
 |     IMoniker* pmkOtherMoniker); | 
 | void __RPC_STUB IMoniker_IsEqual_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_Hash_Proxy( | 
 |     IMoniker* This, | 
 |     DWORD* pdwHash); | 
 | void __RPC_STUB IMoniker_Hash_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_IsRunning_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     IMoniker* pmkNewlyRunning); | 
 | void __RPC_STUB IMoniker_IsRunning_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_GetTimeOfLastChange_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     FILETIME* pFileTime); | 
 | void __RPC_STUB IMoniker_GetTimeOfLastChange_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_Inverse_Proxy( | 
 |     IMoniker* This, | 
 |     IMoniker** ppmk); | 
 | void __RPC_STUB IMoniker_Inverse_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_CommonPrefixWith_Proxy( | 
 |     IMoniker* This, | 
 |     IMoniker* pmkOther, | 
 |     IMoniker** ppmkPrefix); | 
 | void __RPC_STUB IMoniker_CommonPrefixWith_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_RelativePathTo_Proxy( | 
 |     IMoniker* This, | 
 |     IMoniker* pmkOther, | 
 |     IMoniker** ppmkRelPath); | 
 | void __RPC_STUB IMoniker_RelativePathTo_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_GetDisplayName_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     LPOLESTR* ppszDisplayName); | 
 | void __RPC_STUB IMoniker_GetDisplayName_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_ParseDisplayName_Proxy( | 
 |     IMoniker* This, | 
 |     IBindCtx* pbc, | 
 |     IMoniker* pmkToLeft, | 
 |     LPOLESTR pszDisplayName, | 
 |     ULONG* pchEaten, | 
 |     IMoniker** ppmkOut); | 
 | void __RPC_STUB IMoniker_ParseDisplayName_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IMoniker_IsSystemMoniker_Proxy( | 
 |     IMoniker* This, | 
 |     DWORD* pdwMksys); | 
 | void __RPC_STUB IMoniker_IsSystemMoniker_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IROTData IROTData; | 
 | /***************************************************************************** | 
 |  * IROTData interface | 
 |  */ | 
 | DEFINE_GUID(IID_IROTData, 0xf29f6bc0, 0x5021, 0x11ce, 0xaa,0x15, 0x00,0x00,0x69,0x01,0x29,0x3f); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IROTData : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetComparisonData( | 
 |         byte* pbData, | 
 |         ULONG cbMax, | 
 |         ULONG* pcbData) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IROTDataVtbl IROTDataVtbl; | 
 | struct IROTData { | 
 |     const IROTDataVtbl* lpVtbl; | 
 | }; | 
 | struct IROTDataVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IROTData* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IROTData* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IROTData* This); | 
 |  | 
 |     /*** IROTData methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetComparisonData)( | 
 |         IROTData* This, | 
 |         byte* pbData, | 
 |         ULONG cbMax, | 
 |         ULONG* pcbData); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IROTData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IROTData_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IROTData_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IROTData methods ***/ | 
 | #define IROTData_GetComparisonData(p,a,b,c) (p)->lpVtbl->GetComparisonData(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define IROTData_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IROTData methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetComparisonData)(THIS_ byte* pbData, ULONG cbMax, ULONG* pcbData) PURE; | 
 |  | 
 | HRESULT CALLBACK IROTData_GetComparisonData_Proxy( | 
 |     IROTData* This, | 
 |     byte* pbData, | 
 |     ULONG cbMax, | 
 |     ULONG* pcbData); | 
 | void __RPC_STUB IROTData_GetComparisonData_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef IEnumString *LPENUMSTRING; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumString interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumString, 0x00000101, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumString : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         LPOLESTR* rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumString** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumStringVtbl IEnumStringVtbl; | 
 | struct IEnumString { | 
 |     const IEnumStringVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumStringVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumString* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumString* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumString* This); | 
 |  | 
 |     /*** IEnumString methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumString* This, | 
 |         ULONG celt, | 
 |         LPOLESTR* rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumString* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumString* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumString* This, | 
 |         IEnumString** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumString_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumString_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumString_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumString methods ***/ | 
 | #define IEnumString_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumString_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumString_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumString_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumString_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumString methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, LPOLESTR* rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumString** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumString_RemoteNext_Proxy( | 
 |     IEnumString* This, | 
 |     ULONG celt, | 
 |     LPOLESTR* rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumString_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumString_Next_Proxy( | 
 |     IEnumString* This, | 
 |     ULONG celt, | 
 |     LPOLESTR* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumString_Next_Stub( | 
 |     IEnumString* This, | 
 |     ULONG celt, | 
 |     LPOLESTR* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumString_Skip_Proxy( | 
 |     IEnumString* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumString_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumString_Reset_Proxy( | 
 |     IEnumString* This); | 
 | void __RPC_STUB IEnumString_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumString_Clone_Proxy( | 
 |     IEnumString* This, | 
 |     IEnumString** ppenum); | 
 | void __RPC_STUB IEnumString_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IClassActivator IClassActivator; | 
 | /***************************************************************************** | 
 |  * IClassActivator interface | 
 |  */ | 
 | DEFINE_GUID(IID_IClassActivator, 0x00000140, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IClassActivator : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetClassObject( | 
 |         REFCLSID rclsid, | 
 |         DWORD dwClassContext, | 
 |         LCID locale, | 
 |         REFIID riid, | 
 |         void** ppv) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IClassActivatorVtbl IClassActivatorVtbl; | 
 | struct IClassActivator { | 
 |     const IClassActivatorVtbl* lpVtbl; | 
 | }; | 
 | struct IClassActivatorVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IClassActivator* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IClassActivator* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IClassActivator* This); | 
 |  | 
 |     /*** IClassActivator methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetClassObject)( | 
 |         IClassActivator* This, | 
 |         REFCLSID rclsid, | 
 |         DWORD dwClassContext, | 
 |         LCID locale, | 
 |         REFIID riid, | 
 |         void** ppv); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IClassActivator_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IClassActivator_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IClassActivator_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IClassActivator methods ***/ | 
 | #define IClassActivator_GetClassObject(p,a,b,c,d,e) (p)->lpVtbl->GetClassObject(p,a,b,c,d,e) | 
 |  | 
 | #endif | 
 |  | 
 | #define IClassActivator_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IClassActivator methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetClassObject)(THIS_ REFCLSID rclsid, DWORD dwClassContext, LCID locale, REFIID riid, void** ppv) PURE; | 
 |  | 
 | HRESULT CALLBACK IClassActivator_GetClassObject_Proxy( | 
 |     IClassActivator* This, | 
 |     REFCLSID rclsid, | 
 |     DWORD dwClassContext, | 
 |     LCID locale, | 
 |     REFIID riid, | 
 |     void** ppv); | 
 | void __RPC_STUB IClassActivator_GetClassObject_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct ISequentialStream ISequentialStream; | 
 | /***************************************************************************** | 
 |  * ISequentialStream interface | 
 |  */ | 
 | DEFINE_GUID(IID_ISequentialStream, 0x0c733a30, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct ISequentialStream : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Read( | 
 |         void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbRead) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Write( | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct ISequentialStreamVtbl ISequentialStreamVtbl; | 
 | struct ISequentialStream { | 
 |     const ISequentialStreamVtbl* lpVtbl; | 
 | }; | 
 | struct ISequentialStreamVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         ISequentialStream* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         ISequentialStream* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         ISequentialStream* This); | 
 |  | 
 |     /*** ISequentialStream methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Read)( | 
 |         ISequentialStream* This, | 
 |         void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbRead); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Write)( | 
 |         ISequentialStream* This, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define ISequentialStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define ISequentialStream_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define ISequentialStream_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** ISequentialStream methods ***/ | 
 | #define ISequentialStream_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c) | 
 | #define ISequentialStream_Write(p,a,b,c) (p)->lpVtbl->Write(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define ISequentialStream_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** ISequentialStream methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; \ | 
 |     STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; | 
 |  | 
 | HRESULT CALLBACK ISequentialStream_RemoteRead_Proxy( | 
 |     ISequentialStream* This, | 
 |     byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbRead); | 
 | void __RPC_STUB ISequentialStream_RemoteRead_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ISequentialStream_Read_Proxy( | 
 |     ISequentialStream* This, | 
 |     void* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbRead); | 
 | HRESULT __RPC_STUB ISequentialStream_Read_Stub( | 
 |     ISequentialStream* This, | 
 |     byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbRead); | 
 | HRESULT CALLBACK ISequentialStream_RemoteWrite_Proxy( | 
 |     ISequentialStream* This, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | void __RPC_STUB ISequentialStream_RemoteWrite_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ISequentialStream_Write_Proxy( | 
 |     ISequentialStream* This, | 
 |     const void* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | HRESULT __RPC_STUB ISequentialStream_Write_Stub( | 
 |     ISequentialStream* This, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 |  | 
 | typedef IStream *LPSTREAM; | 
 |  | 
 | typedef struct tagSTATSTG { | 
 |     LPOLESTR pwcsName; | 
 |     DWORD type; | 
 |     ULARGE_INTEGER cbSize; | 
 |     FILETIME mtime; | 
 |     FILETIME ctime; | 
 |     FILETIME atime; | 
 |     DWORD grfMode; | 
 |     DWORD grfLocksSupported; | 
 |     CLSID clsid; | 
 |     DWORD grfStateBits; | 
 |     DWORD reserved; | 
 | } STATSTG; | 
 |  | 
 | typedef enum tagSTGTY { | 
 |     STGTY_STORAGE = 1, | 
 |     STGTY_STREAM = 2, | 
 |     STGTY_LOCKBYTES = 3, | 
 |     STGTY_PROPERTY = 4 | 
 | } STGTY; | 
 |  | 
 | typedef enum tagSTREAM_SEEK { | 
 |     STREAM_SEEK_SET = 0, | 
 |     STREAM_SEEK_CUR = 1, | 
 |     STREAM_SEEK_END = 2 | 
 | } STREAM_SEEK; | 
 |  | 
 | #undef LOCK_MAND | 
 | #undef LOCK_READ | 
 | #undef LOCK_WRITE | 
 | #undef LOCK_RW | 
 | typedef enum tagLOCKTYPE { | 
 |     LOCK_WRITE = 1, | 
 |     LOCK_EXCLUSIVE = 2, | 
 |     LOCK_ONLYONCE = 4 | 
 | } LOCKTYPE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IStream interface | 
 |  */ | 
 | DEFINE_GUID(IID_IStream, 0x0000000c, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IStream : public ISequentialStream | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Seek( | 
 |         LARGE_INTEGER dlibMove, | 
 |         DWORD dwOrigin, | 
 |         ULARGE_INTEGER* plibNewPosition) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetSize( | 
 |         ULARGE_INTEGER libNewSize) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CopyTo( | 
 |         IStream* pstm, | 
 |         ULARGE_INTEGER cb, | 
 |         ULARGE_INTEGER* pcbRead, | 
 |         ULARGE_INTEGER* pcbWritten) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Commit( | 
 |         DWORD grfCommitFlags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Revert( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE LockRegion( | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE UnlockRegion( | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Stat( | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IStream** ppstm) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IStreamVtbl IStreamVtbl; | 
 | struct IStream { | 
 |     const IStreamVtbl* lpVtbl; | 
 | }; | 
 | struct IStreamVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IStream* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IStream* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IStream* This); | 
 |  | 
 |     /*** ISequentialStream methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Read)( | 
 |         IStream* This, | 
 |         void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbRead); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Write)( | 
 |         IStream* This, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten); | 
 |  | 
 |     /*** IStream methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Seek)( | 
 |         IStream* This, | 
 |         LARGE_INTEGER dlibMove, | 
 |         DWORD dwOrigin, | 
 |         ULARGE_INTEGER* plibNewPosition); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetSize)( | 
 |         IStream* This, | 
 |         ULARGE_INTEGER libNewSize); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CopyTo)( | 
 |         IStream* This, | 
 |         IStream* pstm, | 
 |         ULARGE_INTEGER cb, | 
 |         ULARGE_INTEGER* pcbRead, | 
 |         ULARGE_INTEGER* pcbWritten); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Commit)( | 
 |         IStream* This, | 
 |         DWORD grfCommitFlags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Revert)( | 
 |         IStream* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *LockRegion)( | 
 |         IStream* This, | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *UnlockRegion)( | 
 |         IStream* This, | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Stat)( | 
 |         IStream* This, | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IStream* This, | 
 |         IStream** ppstm); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IStream_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IStream_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** ISequentialStream methods ***/ | 
 | #define IStream_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c) | 
 | #define IStream_Write(p,a,b,c) (p)->lpVtbl->Write(p,a,b,c) | 
 | /*** IStream methods ***/ | 
 | #define IStream_Seek(p,a,b,c) (p)->lpVtbl->Seek(p,a,b,c) | 
 | #define IStream_SetSize(p,a) (p)->lpVtbl->SetSize(p,a) | 
 | #define IStream_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d) | 
 | #define IStream_Commit(p,a) (p)->lpVtbl->Commit(p,a) | 
 | #define IStream_Revert(p) (p)->lpVtbl->Revert(p) | 
 | #define IStream_LockRegion(p,a,b,c) (p)->lpVtbl->LockRegion(p,a,b,c) | 
 | #define IStream_UnlockRegion(p,a,b,c) (p)->lpVtbl->UnlockRegion(p,a,b,c) | 
 | #define IStream_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b) | 
 | #define IStream_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IStream_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** ISequentialStream methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; \ | 
 |     STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \ | 
 |     /*** IStream methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE; \ | 
 |     STDMETHOD_(HRESULT,CopyTo)(THIS_ IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE; \ | 
 |     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \ | 
 |     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \ | 
 |     STDMETHOD_(HRESULT,UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \ | 
 |     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IStream** ppstm) PURE; | 
 |  | 
 | HRESULT CALLBACK IStream_RemoteSeek_Proxy( | 
 |     IStream* This, | 
 |     LARGE_INTEGER dlibMove, | 
 |     DWORD dwOrigin, | 
 |     ULARGE_INTEGER* plibNewPosition); | 
 | void __RPC_STUB IStream_RemoteSeek_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_Seek_Proxy( | 
 |     IStream* This, | 
 |     LARGE_INTEGER dlibMove, | 
 |     DWORD dwOrigin, | 
 |     ULARGE_INTEGER* plibNewPosition); | 
 | HRESULT __RPC_STUB IStream_Seek_Stub( | 
 |     IStream* This, | 
 |     LARGE_INTEGER dlibMove, | 
 |     DWORD dwOrigin, | 
 |     ULARGE_INTEGER* plibNewPosition); | 
 | HRESULT CALLBACK IStream_SetSize_Proxy( | 
 |     IStream* This, | 
 |     ULARGE_INTEGER libNewSize); | 
 | void __RPC_STUB IStream_SetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_RemoteCopyTo_Proxy( | 
 |     IStream* This, | 
 |     IStream* pstm, | 
 |     ULARGE_INTEGER cb, | 
 |     ULARGE_INTEGER* pcbRead, | 
 |     ULARGE_INTEGER* pcbWritten); | 
 | void __RPC_STUB IStream_RemoteCopyTo_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_CopyTo_Proxy( | 
 |     IStream* This, | 
 |     IStream* pstm, | 
 |     ULARGE_INTEGER cb, | 
 |     ULARGE_INTEGER* pcbRead, | 
 |     ULARGE_INTEGER* pcbWritten); | 
 | HRESULT __RPC_STUB IStream_CopyTo_Stub( | 
 |     IStream* This, | 
 |     IStream* pstm, | 
 |     ULARGE_INTEGER cb, | 
 |     ULARGE_INTEGER* pcbRead, | 
 |     ULARGE_INTEGER* pcbWritten); | 
 | HRESULT CALLBACK IStream_Commit_Proxy( | 
 |     IStream* This, | 
 |     DWORD grfCommitFlags); | 
 | void __RPC_STUB IStream_Commit_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_Revert_Proxy( | 
 |     IStream* This); | 
 | void __RPC_STUB IStream_Revert_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_LockRegion_Proxy( | 
 |     IStream* This, | 
 |     ULARGE_INTEGER libOffset, | 
 |     ULARGE_INTEGER cb, | 
 |     DWORD dwLockType); | 
 | void __RPC_STUB IStream_LockRegion_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_UnlockRegion_Proxy( | 
 |     IStream* This, | 
 |     ULARGE_INTEGER libOffset, | 
 |     ULARGE_INTEGER cb, | 
 |     DWORD dwLockType); | 
 | void __RPC_STUB IStream_UnlockRegion_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_Stat_Proxy( | 
 |     IStream* This, | 
 |     STATSTG* pstatstg, | 
 |     DWORD grfStatFlag); | 
 | void __RPC_STUB IStream_Stat_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream_Clone_Proxy( | 
 |     IStream* This, | 
 |     IStream** ppstm); | 
 | void __RPC_STUB IStream_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef IStream16 *LPSTREAM16; | 
 |  | 
 | typedef struct tagSTATSTG16 { | 
 |     LPOLESTR16 pwcsName; | 
 |     DWORD type; | 
 |     ULARGE_INTEGER cbSize; | 
 |     FILETIME mtime; | 
 |     FILETIME ctime; | 
 |     FILETIME atime; | 
 |     DWORD grfMode; | 
 |     DWORD grfLocksSupported; | 
 |     CLSID clsid; | 
 |     DWORD grfStateBits; | 
 |     DWORD reserved; | 
 | } STATSTG16; | 
 |  | 
 | /***************************************************************************** | 
 |  * IStream16 interface | 
 |  */ | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IStream16 : public ISequentialStream | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Seek( | 
 |         LARGE_INTEGER dlibMove, | 
 |         DWORD dwOrigin, | 
 |         ULARGE_INTEGER* plibNewPosition) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetSize( | 
 |         ULARGE_INTEGER libNewSize) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CopyTo( | 
 |         IStream16* pstm, | 
 |         ULARGE_INTEGER cb, | 
 |         ULARGE_INTEGER* pcbRead, | 
 |         ULARGE_INTEGER* pcbWritten) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Commit( | 
 |         DWORD grfCommitFlags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Revert( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE LockRegion( | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE UnlockRegion( | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Stat( | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IStream16** ppstm) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IStream16Vtbl IStream16Vtbl; | 
 | struct IStream16 { | 
 |     const IStream16Vtbl* lpVtbl; | 
 | }; | 
 | struct IStream16Vtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IStream16* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IStream16* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IStream16* This); | 
 |  | 
 |     /*** ISequentialStream methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Read)( | 
 |         IStream16* This, | 
 |         void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbRead); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Write)( | 
 |         IStream16* This, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten); | 
 |  | 
 |     /*** IStream16 methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Seek)( | 
 |         IStream16* This, | 
 |         LARGE_INTEGER dlibMove, | 
 |         DWORD dwOrigin, | 
 |         ULARGE_INTEGER* plibNewPosition); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetSize)( | 
 |         IStream16* This, | 
 |         ULARGE_INTEGER libNewSize); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CopyTo)( | 
 |         IStream16* This, | 
 |         IStream16* pstm, | 
 |         ULARGE_INTEGER cb, | 
 |         ULARGE_INTEGER* pcbRead, | 
 |         ULARGE_INTEGER* pcbWritten); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Commit)( | 
 |         IStream16* This, | 
 |         DWORD grfCommitFlags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Revert)( | 
 |         IStream16* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *LockRegion)( | 
 |         IStream16* This, | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *UnlockRegion)( | 
 |         IStream16* This, | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Stat)( | 
 |         IStream16* This, | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IStream16* This, | 
 |         IStream16** ppstm); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IStream16_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IStream16_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IStream16_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** ISequentialStream methods ***/ | 
 | #define IStream16_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c) | 
 | #define IStream16_Write(p,a,b,c) (p)->lpVtbl->Write(p,a,b,c) | 
 | /*** IStream16 methods ***/ | 
 | #define IStream16_Seek(p,a,b,c) (p)->lpVtbl->Seek(p,a,b,c) | 
 | #define IStream16_SetSize(p,a) (p)->lpVtbl->SetSize(p,a) | 
 | #define IStream16_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d) | 
 | #define IStream16_Commit(p,a) (p)->lpVtbl->Commit(p,a) | 
 | #define IStream16_Revert(p) (p)->lpVtbl->Revert(p) | 
 | #define IStream16_LockRegion(p,a,b,c) (p)->lpVtbl->LockRegion(p,a,b,c) | 
 | #define IStream16_UnlockRegion(p,a,b,c) (p)->lpVtbl->UnlockRegion(p,a,b,c) | 
 | #define IStream16_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b) | 
 | #define IStream16_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IStream16_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** ISequentialStream methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Read)(THIS_ void* pv, ULONG cb, ULONG* pcbRead) PURE; \ | 
 |     STDMETHOD_(HRESULT,Write)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \ | 
 |     /*** IStream16 methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Seek)(THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetSize)(THIS_ ULARGE_INTEGER libNewSize) PURE; \ | 
 |     STDMETHOD_(HRESULT,CopyTo)(THIS_ IStream16* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) PURE; \ | 
 |     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \ | 
 |     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \ | 
 |     STDMETHOD_(HRESULT,UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \ | 
 |     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IStream16** ppstm) PURE; | 
 |  | 
 | HRESULT CALLBACK IStream16_RemoteSeek_Proxy( | 
 |     IStream16* This, | 
 |     LARGE_INTEGER dlibMove, | 
 |     DWORD dwOrigin, | 
 |     ULARGE_INTEGER* plibNewPosition); | 
 | void __RPC_STUB IStream16_RemoteSeek_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_Seek_Proxy( | 
 |     IStream16* This, | 
 |     LARGE_INTEGER dlibMove, | 
 |     DWORD dwOrigin, | 
 |     ULARGE_INTEGER* plibNewPosition); | 
 | HRESULT __RPC_STUB IStream16_Seek_Stub( | 
 |     IStream16* This, | 
 |     LARGE_INTEGER dlibMove, | 
 |     DWORD dwOrigin, | 
 |     ULARGE_INTEGER* plibNewPosition); | 
 | HRESULT CALLBACK IStream16_SetSize_Proxy( | 
 |     IStream16* This, | 
 |     ULARGE_INTEGER libNewSize); | 
 | void __RPC_STUB IStream16_SetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_RemoteCopyTo_Proxy( | 
 |     IStream16* This, | 
 |     IStream16* pstm, | 
 |     ULARGE_INTEGER cb, | 
 |     ULARGE_INTEGER* pcbRead, | 
 |     ULARGE_INTEGER* pcbWritten); | 
 | void __RPC_STUB IStream16_RemoteCopyTo_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_CopyTo_Proxy( | 
 |     IStream16* This, | 
 |     IStream16* pstm, | 
 |     ULARGE_INTEGER cb, | 
 |     ULARGE_INTEGER* pcbRead, | 
 |     ULARGE_INTEGER* pcbWritten); | 
 | HRESULT __RPC_STUB IStream16_CopyTo_Stub( | 
 |     IStream16* This, | 
 |     IStream16* pstm, | 
 |     ULARGE_INTEGER cb, | 
 |     ULARGE_INTEGER* pcbRead, | 
 |     ULARGE_INTEGER* pcbWritten); | 
 | HRESULT CALLBACK IStream16_Commit_Proxy( | 
 |     IStream16* This, | 
 |     DWORD grfCommitFlags); | 
 | void __RPC_STUB IStream16_Commit_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_Revert_Proxy( | 
 |     IStream16* This); | 
 | void __RPC_STUB IStream16_Revert_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_LockRegion_Proxy( | 
 |     IStream16* This, | 
 |     ULARGE_INTEGER libOffset, | 
 |     ULARGE_INTEGER cb, | 
 |     DWORD dwLockType); | 
 | void __RPC_STUB IStream16_LockRegion_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_UnlockRegion_Proxy( | 
 |     IStream16* This, | 
 |     ULARGE_INTEGER libOffset, | 
 |     ULARGE_INTEGER cb, | 
 |     DWORD dwLockType); | 
 | void __RPC_STUB IStream16_UnlockRegion_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_Stat_Proxy( | 
 |     IStream16* This, | 
 |     STATSTG* pstatstg, | 
 |     DWORD grfStatFlag); | 
 | void __RPC_STUB IStream16_Stat_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStream16_Clone_Proxy( | 
 |     IStream16* This, | 
 |     IStream16** ppstm); | 
 | void __RPC_STUB IStream16_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IEnumSTATSTG IEnumSTATSTG; | 
 | typedef IEnumSTATSTG *LPENUMSTATSTG; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumSTATSTG interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumSTATSTG, 0x0000000d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumSTATSTG : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         STATSTG* rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumSTATSTG** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumSTATSTGVtbl IEnumSTATSTGVtbl; | 
 | struct IEnumSTATSTG { | 
 |     const IEnumSTATSTGVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumSTATSTGVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumSTATSTG* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumSTATSTG* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumSTATSTG* This); | 
 |  | 
 |     /*** IEnumSTATSTG methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumSTATSTG* This, | 
 |         ULONG celt, | 
 |         STATSTG* rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumSTATSTG* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumSTATSTG* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumSTATSTG* This, | 
 |         IEnumSTATSTG** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumSTATSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumSTATSTG_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumSTATSTG_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumSTATSTG methods ***/ | 
 | #define IEnumSTATSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumSTATSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumSTATSTG_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumSTATSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumSTATSTG_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumSTATSTG methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATSTG* rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATSTG** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumSTATSTG_RemoteNext_Proxy( | 
 |     IEnumSTATSTG* This, | 
 |     ULONG celt, | 
 |     STATSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumSTATSTG_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATSTG_Next_Proxy( | 
 |     IEnumSTATSTG* This, | 
 |     ULONG celt, | 
 |     STATSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumSTATSTG_Next_Stub( | 
 |     IEnumSTATSTG* This, | 
 |     ULONG celt, | 
 |     STATSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumSTATSTG_Skip_Proxy( | 
 |     IEnumSTATSTG* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumSTATSTG_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATSTG_Reset_Proxy( | 
 |     IEnumSTATSTG* This); | 
 | void __RPC_STUB IEnumSTATSTG_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATSTG_Clone_Proxy( | 
 |     IEnumSTATSTG* This, | 
 |     IEnumSTATSTG** ppenum); | 
 | void __RPC_STUB IEnumSTATSTG_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IStorage IStorage; | 
 | typedef IStorage *LPSTORAGE; | 
 |  | 
 | typedef struct tagRemSNB { | 
 |     unsigned long ulCntStr; | 
 |     unsigned long ulCntChar; | 
 |     OLECHAR rgString[1]; | 
 | } RemSNB; | 
 |  | 
 | typedef RemSNB *wireSNB; | 
 |  | 
 | typedef OLECHAR **SNB; | 
 | unsigned long   __RPC_USER SNB_UserSize     (unsigned long *, unsigned long,   SNB *); | 
 | unsigned char * __RPC_USER SNB_UserMarshal  (unsigned long *, unsigned char *, SNB *); | 
 | unsigned char * __RPC_USER SNB_UserUnmarshal(unsigned long *, unsigned char *, SNB *); | 
 | void            __RPC_USER SNB_UserFree     (unsigned long *, SNB *); | 
 |  | 
 | /***************************************************************************** | 
 |  * IStorage interface | 
 |  */ | 
 | DEFINE_GUID(IID_IStorage, 0x0000000b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IStorage : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE CreateStream( | 
 |         LPCOLESTR pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD reserved1, | 
 |         DWORD reserved2, | 
 |         IStream** ppstm) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE OpenStream( | 
 |         LPCOLESTR pwcsName, | 
 |         void* reserved1, | 
 |         DWORD grfMode, | 
 |         DWORD reserved2, | 
 |         IStream** ppstm) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CreateStorage( | 
 |         LPCOLESTR pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD dwStgFmt, | 
 |         DWORD reserved2, | 
 |         IStorage** ppstg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE OpenStorage( | 
 |         LPCOLESTR pwcsName, | 
 |         IStorage* pstgPriority, | 
 |         DWORD grfMode, | 
 |         SNB snbExclude, | 
 |         DWORD reserved, | 
 |         IStorage** ppstg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CopyTo( | 
 |         DWORD ciidExclude, | 
 |         const IID* rgiidExclude, | 
 |         SNB snbExclude, | 
 |         IStorage* pstgDest) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE MoveElementTo( | 
 |         LPCOLESTR pwcsName, | 
 |         IStorage* pstgDest, | 
 |         LPCOLESTR pwcsNewName, | 
 |         DWORD grfFlags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Commit( | 
 |         DWORD grfCommitFlags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Revert( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EnumElements( | 
 |         DWORD reserved1, | 
 |         void* reserved2, | 
 |         DWORD reserved3, | 
 |         IEnumSTATSTG** ppenum) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DestroyElement( | 
 |         LPCOLESTR pwcsName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RenameElement( | 
 |         LPCOLESTR pwcsOldName, | 
 |         LPCOLESTR pwcsNewName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetElementTimes( | 
 |         LPCOLESTR pwcsName, | 
 |         const FILETIME* pctime, | 
 |         const FILETIME* patime, | 
 |         const FILETIME* pmtime) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetClass( | 
 |         REFCLSID clsid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetStateBits( | 
 |         DWORD grfStateBits, | 
 |         DWORD grfMask) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Stat( | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IStorageVtbl IStorageVtbl; | 
 | struct IStorage { | 
 |     const IStorageVtbl* lpVtbl; | 
 | }; | 
 | struct IStorageVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IStorage* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IStorage* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IStorage* This); | 
 |  | 
 |     /*** IStorage methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *CreateStream)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD reserved1, | 
 |         DWORD reserved2, | 
 |         IStream** ppstm); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *OpenStream)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsName, | 
 |         void* reserved1, | 
 |         DWORD grfMode, | 
 |         DWORD reserved2, | 
 |         IStream** ppstm); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CreateStorage)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD dwStgFmt, | 
 |         DWORD reserved2, | 
 |         IStorage** ppstg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *OpenStorage)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsName, | 
 |         IStorage* pstgPriority, | 
 |         DWORD grfMode, | 
 |         SNB snbExclude, | 
 |         DWORD reserved, | 
 |         IStorage** ppstg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CopyTo)( | 
 |         IStorage* This, | 
 |         DWORD ciidExclude, | 
 |         const IID* rgiidExclude, | 
 |         SNB snbExclude, | 
 |         IStorage* pstgDest); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *MoveElementTo)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsName, | 
 |         IStorage* pstgDest, | 
 |         LPCOLESTR pwcsNewName, | 
 |         DWORD grfFlags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Commit)( | 
 |         IStorage* This, | 
 |         DWORD grfCommitFlags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Revert)( | 
 |         IStorage* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EnumElements)( | 
 |         IStorage* This, | 
 |         DWORD reserved1, | 
 |         void* reserved2, | 
 |         DWORD reserved3, | 
 |         IEnumSTATSTG** ppenum); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DestroyElement)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RenameElement)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsOldName, | 
 |         LPCOLESTR pwcsNewName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetElementTimes)( | 
 |         IStorage* This, | 
 |         LPCOLESTR pwcsName, | 
 |         const FILETIME* pctime, | 
 |         const FILETIME* patime, | 
 |         const FILETIME* pmtime); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetClass)( | 
 |         IStorage* This, | 
 |         REFCLSID clsid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetStateBits)( | 
 |         IStorage* This, | 
 |         DWORD grfStateBits, | 
 |         DWORD grfMask); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Stat)( | 
 |         IStorage* This, | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IStorage_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IStorage_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IStorage methods ***/ | 
 | #define IStorage_CreateStream(p,a,b,c,d,e) (p)->lpVtbl->CreateStream(p,a,b,c,d,e) | 
 | #define IStorage_OpenStream(p,a,b,c,d,e) (p)->lpVtbl->OpenStream(p,a,b,c,d,e) | 
 | #define IStorage_CreateStorage(p,a,b,c,d,e) (p)->lpVtbl->CreateStorage(p,a,b,c,d,e) | 
 | #define IStorage_OpenStorage(p,a,b,c,d,e,f) (p)->lpVtbl->OpenStorage(p,a,b,c,d,e,f) | 
 | #define IStorage_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d) | 
 | #define IStorage_MoveElementTo(p,a,b,c,d) (p)->lpVtbl->MoveElementTo(p,a,b,c,d) | 
 | #define IStorage_Commit(p,a) (p)->lpVtbl->Commit(p,a) | 
 | #define IStorage_Revert(p) (p)->lpVtbl->Revert(p) | 
 | #define IStorage_EnumElements(p,a,b,c,d) (p)->lpVtbl->EnumElements(p,a,b,c,d) | 
 | #define IStorage_DestroyElement(p,a) (p)->lpVtbl->DestroyElement(p,a) | 
 | #define IStorage_RenameElement(p,a,b) (p)->lpVtbl->RenameElement(p,a,b) | 
 | #define IStorage_SetElementTimes(p,a,b,c,d) (p)->lpVtbl->SetElementTimes(p,a,b,c,d) | 
 | #define IStorage_SetClass(p,a) (p)->lpVtbl->SetClass(p,a) | 
 | #define IStorage_SetStateBits(p,a,b) (p)->lpVtbl->SetStateBits(p,a,b) | 
 | #define IStorage_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b) | 
 |  | 
 | #endif | 
 |  | 
 | #define IStorage_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IStorage methods ***/ \ | 
 |     STDMETHOD_(HRESULT,CreateStream)(THIS_ LPCOLESTR pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream** ppstm) PURE; \ | 
 |     STDMETHOD_(HRESULT,OpenStream)(THIS_ LPCOLESTR pwcsName, void* reserved1, DWORD grfMode, DWORD reserved2, IStream** ppstm) PURE; \ | 
 |     STDMETHOD_(HRESULT,CreateStorage)(THIS_ LPCOLESTR pwcsName, DWORD grfMode, DWORD dwStgFmt, DWORD reserved2, IStorage** ppstg) PURE; \ | 
 |     STDMETHOD_(HRESULT,OpenStorage)(THIS_ LPCOLESTR pwcsName, IStorage* pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage** ppstg) PURE; \ | 
 |     STDMETHOD_(HRESULT,CopyTo)(THIS_ DWORD ciidExclude, const IID* rgiidExclude, SNB snbExclude, IStorage* pstgDest) PURE; \ | 
 |     STDMETHOD_(HRESULT,MoveElementTo)(THIS_ LPCOLESTR pwcsName, IStorage* pstgDest, LPCOLESTR pwcsNewName, DWORD grfFlags) PURE; \ | 
 |     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \ | 
 |     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE; \ | 
 |     STDMETHOD_(HRESULT,DestroyElement)(THIS_ LPCOLESTR pwcsName) PURE; \ | 
 |     STDMETHOD_(HRESULT,RenameElement)(THIS_ LPCOLESTR pwcsOldName, LPCOLESTR pwcsNewName) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE; \ | 
 |     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; | 
 |  | 
 | HRESULT CALLBACK IStorage_CreateStream_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     DWORD grfMode, | 
 |     DWORD reserved1, | 
 |     DWORD reserved2, | 
 |     IStream** ppstm); | 
 | void __RPC_STUB IStorage_CreateStream_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_RemoteOpenStream_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     unsigned long cbReserved1, | 
 |     byte* reserved1, | 
 |     DWORD grfMode, | 
 |     DWORD reserved2, | 
 |     IStream** ppstm); | 
 | void __RPC_STUB IStorage_RemoteOpenStream_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_OpenStream_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     void* reserved1, | 
 |     DWORD grfMode, | 
 |     DWORD reserved2, | 
 |     IStream** ppstm); | 
 | HRESULT __RPC_STUB IStorage_OpenStream_Stub( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     unsigned long cbReserved1, | 
 |     byte* reserved1, | 
 |     DWORD grfMode, | 
 |     DWORD reserved2, | 
 |     IStream** ppstm); | 
 | HRESULT CALLBACK IStorage_CreateStorage_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     DWORD grfMode, | 
 |     DWORD dwStgFmt, | 
 |     DWORD reserved2, | 
 |     IStorage** ppstg); | 
 | void __RPC_STUB IStorage_CreateStorage_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_OpenStorage_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     IStorage* pstgPriority, | 
 |     DWORD grfMode, | 
 |     SNB snbExclude, | 
 |     DWORD reserved, | 
 |     IStorage** ppstg); | 
 | void __RPC_STUB IStorage_OpenStorage_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_CopyTo_Proxy( | 
 |     IStorage* This, | 
 |     DWORD ciidExclude, | 
 |     const IID* rgiidExclude, | 
 |     SNB snbExclude, | 
 |     IStorage* pstgDest); | 
 | void __RPC_STUB IStorage_CopyTo_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_MoveElementTo_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     IStorage* pstgDest, | 
 |     LPCOLESTR pwcsNewName, | 
 |     DWORD grfFlags); | 
 | void __RPC_STUB IStorage_MoveElementTo_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_Commit_Proxy( | 
 |     IStorage* This, | 
 |     DWORD grfCommitFlags); | 
 | void __RPC_STUB IStorage_Commit_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_Revert_Proxy( | 
 |     IStorage* This); | 
 | void __RPC_STUB IStorage_Revert_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_RemoteEnumElements_Proxy( | 
 |     IStorage* This, | 
 |     DWORD reserved1, | 
 |     unsigned long cbReserved2, | 
 |     byte* reserved2, | 
 |     DWORD reserved3, | 
 |     IEnumSTATSTG** ppenum); | 
 | void __RPC_STUB IStorage_RemoteEnumElements_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_EnumElements_Proxy( | 
 |     IStorage* This, | 
 |     DWORD reserved1, | 
 |     void* reserved2, | 
 |     DWORD reserved3, | 
 |     IEnumSTATSTG** ppenum); | 
 | HRESULT __RPC_STUB IStorage_EnumElements_Stub( | 
 |     IStorage* This, | 
 |     DWORD reserved1, | 
 |     unsigned long cbReserved2, | 
 |     byte* reserved2, | 
 |     DWORD reserved3, | 
 |     IEnumSTATSTG** ppenum); | 
 | HRESULT CALLBACK IStorage_DestroyElement_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName); | 
 | void __RPC_STUB IStorage_DestroyElement_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_RenameElement_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsOldName, | 
 |     LPCOLESTR pwcsNewName); | 
 | void __RPC_STUB IStorage_RenameElement_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_SetElementTimes_Proxy( | 
 |     IStorage* This, | 
 |     LPCOLESTR pwcsName, | 
 |     const FILETIME* pctime, | 
 |     const FILETIME* patime, | 
 |     const FILETIME* pmtime); | 
 | void __RPC_STUB IStorage_SetElementTimes_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_SetClass_Proxy( | 
 |     IStorage* This, | 
 |     REFCLSID clsid); | 
 | void __RPC_STUB IStorage_SetClass_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_SetStateBits_Proxy( | 
 |     IStorage* This, | 
 |     DWORD grfStateBits, | 
 |     DWORD grfMask); | 
 | void __RPC_STUB IStorage_SetStateBits_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage_Stat_Proxy( | 
 |     IStorage* This, | 
 |     STATSTG* pstatstg, | 
 |     DWORD grfStatFlag); | 
 | void __RPC_STUB IStorage_Stat_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IStorage16 IStorage16; | 
 | typedef IStorage16 *LPSTORAGE16; | 
 |  | 
 | typedef struct tagRemSNB16 { | 
 |     unsigned long ulCntStr; | 
 |     unsigned long ulCntChar; | 
 |     OLECHAR16 rgString[1]; | 
 | } RemSNB16; | 
 |  | 
 | typedef RemSNB16 *wireSNB16; | 
 |  | 
 | typedef OLECHAR16 **SNB16; | 
 | unsigned long   __RPC_USER SNB16_UserSize     (unsigned long *, unsigned long,   SNB16 *); | 
 | unsigned char * __RPC_USER SNB16_UserMarshal  (unsigned long *, unsigned char *, SNB16 *); | 
 | unsigned char * __RPC_USER SNB16_UserUnmarshal(unsigned long *, unsigned char *, SNB16 *); | 
 | void            __RPC_USER SNB16_UserFree     (unsigned long *, SNB16 *); | 
 |  | 
 | /***************************************************************************** | 
 |  * IStorage16 interface | 
 |  */ | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IStorage16 : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE CreateStream( | 
 |         LPCOLESTR16 pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD reserved1, | 
 |         DWORD reserved2, | 
 |         IStream16** ppstm) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE OpenStream( | 
 |         LPCOLESTR16 pwcsName, | 
 |         void* reserved1, | 
 |         DWORD grfMode, | 
 |         DWORD reserved2, | 
 |         IStream16** ppstm) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CreateStorage( | 
 |         LPCOLESTR16 pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD dwStgFmt, | 
 |         DWORD reserved2, | 
 |         IStorage16** ppstg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE OpenStorage( | 
 |         LPCOLESTR16 pwcsName, | 
 |         IStorage16* pstgPriority, | 
 |         DWORD grfMode, | 
 |         SNB16 snbExclude, | 
 |         DWORD reserved, | 
 |         IStorage16** ppstg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CopyTo( | 
 |         DWORD ciidExclude, | 
 |         const IID* rgiidExclude, | 
 |         SNB16 snbExclude, | 
 |         IStorage16* pstgDest) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE MoveElementTo( | 
 |         LPCOLESTR16 pwcsName, | 
 |         IStorage16* pstgDest, | 
 |         LPCOLESTR16 pwcsNewName, | 
 |         DWORD grfFlags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Commit( | 
 |         DWORD grfCommitFlags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Revert( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EnumElements( | 
 |         DWORD reserved1, | 
 |         void* reserved2, | 
 |         DWORD reserved3, | 
 |         IEnumSTATSTG** ppenum) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DestroyElement( | 
 |         LPCOLESTR16 pwcsName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RenameElement( | 
 |         LPCOLESTR16 pwcsOldName, | 
 |         LPCOLESTR16 pwcsNewName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetElementTimes( | 
 |         LPCOLESTR16 pwcsName, | 
 |         const FILETIME* pctime, | 
 |         const FILETIME* patime, | 
 |         const FILETIME* pmtime) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetClass( | 
 |         REFCLSID clsid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetStateBits( | 
 |         DWORD grfStateBits, | 
 |         DWORD grfMask) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Stat( | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IStorage16Vtbl IStorage16Vtbl; | 
 | struct IStorage16 { | 
 |     const IStorage16Vtbl* lpVtbl; | 
 | }; | 
 | struct IStorage16Vtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IStorage16* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IStorage16* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IStorage16* This); | 
 |  | 
 |     /*** IStorage16 methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *CreateStream)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD reserved1, | 
 |         DWORD reserved2, | 
 |         IStream16** ppstm); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *OpenStream)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsName, | 
 |         void* reserved1, | 
 |         DWORD grfMode, | 
 |         DWORD reserved2, | 
 |         IStream16** ppstm); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CreateStorage)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsName, | 
 |         DWORD grfMode, | 
 |         DWORD dwStgFmt, | 
 |         DWORD reserved2, | 
 |         IStorage16** ppstg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *OpenStorage)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsName, | 
 |         IStorage16* pstgPriority, | 
 |         DWORD grfMode, | 
 |         SNB16 snbExclude, | 
 |         DWORD reserved, | 
 |         IStorage16** ppstg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CopyTo)( | 
 |         IStorage16* This, | 
 |         DWORD ciidExclude, | 
 |         const IID* rgiidExclude, | 
 |         SNB16 snbExclude, | 
 |         IStorage16* pstgDest); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *MoveElementTo)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsName, | 
 |         IStorage16* pstgDest, | 
 |         LPCOLESTR16 pwcsNewName, | 
 |         DWORD grfFlags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Commit)( | 
 |         IStorage16* This, | 
 |         DWORD grfCommitFlags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Revert)( | 
 |         IStorage16* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EnumElements)( | 
 |         IStorage16* This, | 
 |         DWORD reserved1, | 
 |         void* reserved2, | 
 |         DWORD reserved3, | 
 |         IEnumSTATSTG** ppenum); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DestroyElement)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RenameElement)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsOldName, | 
 |         LPCOLESTR16 pwcsNewName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetElementTimes)( | 
 |         IStorage16* This, | 
 |         LPCOLESTR16 pwcsName, | 
 |         const FILETIME* pctime, | 
 |         const FILETIME* patime, | 
 |         const FILETIME* pmtime); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetClass)( | 
 |         IStorage16* This, | 
 |         REFCLSID clsid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetStateBits)( | 
 |         IStorage16* This, | 
 |         DWORD grfStateBits, | 
 |         DWORD grfMask); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Stat)( | 
 |         IStorage16* This, | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IStorage16_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IStorage16_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IStorage16_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IStorage16 methods ***/ | 
 | #define IStorage16_CreateStream(p,a,b,c,d,e) (p)->lpVtbl->CreateStream(p,a,b,c,d,e) | 
 | #define IStorage16_OpenStream(p,a,b,c,d,e) (p)->lpVtbl->OpenStream(p,a,b,c,d,e) | 
 | #define IStorage16_CreateStorage(p,a,b,c,d,e) (p)->lpVtbl->CreateStorage(p,a,b,c,d,e) | 
 | #define IStorage16_OpenStorage(p,a,b,c,d,e,f) (p)->lpVtbl->OpenStorage(p,a,b,c,d,e,f) | 
 | #define IStorage16_CopyTo(p,a,b,c,d) (p)->lpVtbl->CopyTo(p,a,b,c,d) | 
 | #define IStorage16_MoveElementTo(p,a,b,c,d) (p)->lpVtbl->MoveElementTo(p,a,b,c,d) | 
 | #define IStorage16_Commit(p,a) (p)->lpVtbl->Commit(p,a) | 
 | #define IStorage16_Revert(p) (p)->lpVtbl->Revert(p) | 
 | #define IStorage16_EnumElements(p,a,b,c,d) (p)->lpVtbl->EnumElements(p,a,b,c,d) | 
 | #define IStorage16_DestroyElement(p,a) (p)->lpVtbl->DestroyElement(p,a) | 
 | #define IStorage16_RenameElement(p,a,b) (p)->lpVtbl->RenameElement(p,a,b) | 
 | #define IStorage16_SetElementTimes(p,a,b,c,d) (p)->lpVtbl->SetElementTimes(p,a,b,c,d) | 
 | #define IStorage16_SetClass(p,a) (p)->lpVtbl->SetClass(p,a) | 
 | #define IStorage16_SetStateBits(p,a,b) (p)->lpVtbl->SetStateBits(p,a,b) | 
 | #define IStorage16_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b) | 
 |  | 
 | #endif | 
 |  | 
 | #define IStorage16_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IStorage16 methods ***/ \ | 
 |     STDMETHOD_(HRESULT,CreateStream)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream16** ppstm) PURE; \ | 
 |     STDMETHOD_(HRESULT,OpenStream)(THIS_ LPCOLESTR16 pwcsName, void* reserved1, DWORD grfMode, DWORD reserved2, IStream16** ppstm) PURE; \ | 
 |     STDMETHOD_(HRESULT,CreateStorage)(THIS_ LPCOLESTR16 pwcsName, DWORD grfMode, DWORD dwStgFmt, DWORD reserved2, IStorage16** ppstg) PURE; \ | 
 |     STDMETHOD_(HRESULT,OpenStorage)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgPriority, DWORD grfMode, SNB16 snbExclude, DWORD reserved, IStorage16** ppstg) PURE; \ | 
 |     STDMETHOD_(HRESULT,CopyTo)(THIS_ DWORD ciidExclude, const IID* rgiidExclude, SNB16 snbExclude, IStorage16* pstgDest) PURE; \ | 
 |     STDMETHOD_(HRESULT,MoveElementTo)(THIS_ LPCOLESTR16 pwcsName, IStorage16* pstgDest, LPCOLESTR16 pwcsNewName, DWORD grfFlags) PURE; \ | 
 |     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \ | 
 |     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,EnumElements)(THIS_ DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum) PURE; \ | 
 |     STDMETHOD_(HRESULT,DestroyElement)(THIS_ LPCOLESTR16 pwcsName) PURE; \ | 
 |     STDMETHOD_(HRESULT,RenameElement)(THIS_ LPCOLESTR16 pwcsOldName, LPCOLESTR16 pwcsNewName) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetElementTimes)(THIS_ LPCOLESTR16 pwcsName, const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetStateBits)(THIS_ DWORD grfStateBits, DWORD grfMask) PURE; \ | 
 |     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; | 
 |  | 
 | HRESULT CALLBACK IStorage16_CreateStream_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     DWORD grfMode, | 
 |     DWORD reserved1, | 
 |     DWORD reserved2, | 
 |     IStream16** ppstm); | 
 | void __RPC_STUB IStorage16_CreateStream_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_RemoteOpenStream_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     unsigned long cbReserved1, | 
 |     byte* reserved1, | 
 |     DWORD grfMode, | 
 |     DWORD reserved2, | 
 |     IStream16** ppstm); | 
 | void __RPC_STUB IStorage16_RemoteOpenStream_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_OpenStream_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     void* reserved1, | 
 |     DWORD grfMode, | 
 |     DWORD reserved2, | 
 |     IStream16** ppstm); | 
 | HRESULT __RPC_STUB IStorage16_OpenStream_Stub( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     unsigned long cbReserved1, | 
 |     byte* reserved1, | 
 |     DWORD grfMode, | 
 |     DWORD reserved2, | 
 |     IStream16** ppstm); | 
 | HRESULT CALLBACK IStorage16_CreateStorage_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     DWORD grfMode, | 
 |     DWORD dwStgFmt, | 
 |     DWORD reserved2, | 
 |     IStorage16** ppstg); | 
 | void __RPC_STUB IStorage16_CreateStorage_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_OpenStorage_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     IStorage16* pstgPriority, | 
 |     DWORD grfMode, | 
 |     SNB16 snbExclude, | 
 |     DWORD reserved, | 
 |     IStorage16** ppstg); | 
 | void __RPC_STUB IStorage16_OpenStorage_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_CopyTo_Proxy( | 
 |     IStorage16* This, | 
 |     DWORD ciidExclude, | 
 |     const IID* rgiidExclude, | 
 |     SNB16 snbExclude, | 
 |     IStorage16* pstgDest); | 
 | void __RPC_STUB IStorage16_CopyTo_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_MoveElementTo_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     IStorage16* pstgDest, | 
 |     LPCOLESTR16 pwcsNewName, | 
 |     DWORD grfFlags); | 
 | void __RPC_STUB IStorage16_MoveElementTo_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_Commit_Proxy( | 
 |     IStorage16* This, | 
 |     DWORD grfCommitFlags); | 
 | void __RPC_STUB IStorage16_Commit_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_Revert_Proxy( | 
 |     IStorage16* This); | 
 | void __RPC_STUB IStorage16_Revert_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_RemoteEnumElements_Proxy( | 
 |     IStorage16* This, | 
 |     DWORD reserved1, | 
 |     unsigned long cbReserved2, | 
 |     byte* reserved2, | 
 |     DWORD reserved3, | 
 |     IEnumSTATSTG** ppenum); | 
 | void __RPC_STUB IStorage16_RemoteEnumElements_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_EnumElements_Proxy( | 
 |     IStorage16* This, | 
 |     DWORD reserved1, | 
 |     void* reserved2, | 
 |     DWORD reserved3, | 
 |     IEnumSTATSTG** ppenum); | 
 | HRESULT __RPC_STUB IStorage16_EnumElements_Stub( | 
 |     IStorage16* This, | 
 |     DWORD reserved1, | 
 |     unsigned long cbReserved2, | 
 |     byte* reserved2, | 
 |     DWORD reserved3, | 
 |     IEnumSTATSTG** ppenum); | 
 | HRESULT CALLBACK IStorage16_DestroyElement_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName); | 
 | void __RPC_STUB IStorage16_DestroyElement_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_RenameElement_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsOldName, | 
 |     LPCOLESTR16 pwcsNewName); | 
 | void __RPC_STUB IStorage16_RenameElement_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_SetElementTimes_Proxy( | 
 |     IStorage16* This, | 
 |     LPCOLESTR16 pwcsName, | 
 |     const FILETIME* pctime, | 
 |     const FILETIME* patime, | 
 |     const FILETIME* pmtime); | 
 | void __RPC_STUB IStorage16_SetElementTimes_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_SetClass_Proxy( | 
 |     IStorage16* This, | 
 |     REFCLSID clsid); | 
 | void __RPC_STUB IStorage16_SetClass_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_SetStateBits_Proxy( | 
 |     IStorage16* This, | 
 |     DWORD grfStateBits, | 
 |     DWORD grfMask); | 
 | void __RPC_STUB IStorage16_SetStateBits_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IStorage16_Stat_Proxy( | 
 |     IStorage16* This, | 
 |     STATSTG* pstatstg, | 
 |     DWORD grfStatFlag); | 
 | void __RPC_STUB IStorage16_Stat_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IPersistFile IPersistFile; | 
 | typedef IPersistFile *LPPERSISTFILE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IPersistFile interface | 
 |  */ | 
 | DEFINE_GUID(IID_IPersistFile, 0x0000010b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IPersistFile : public IPersist | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE IsDirty( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Load( | 
 |         LPCOLESTR pszFileName, | 
 |         DWORD dwMode) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Save( | 
 |         LPCOLESTR pszFileName, | 
 |         BOOL fRemember) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SaveCompleted( | 
 |         LPCOLESTR pszFileName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetCurFile( | 
 |         LPOLESTR* ppszFileName) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IPersistFileVtbl IPersistFileVtbl; | 
 | struct IPersistFile { | 
 |     const IPersistFileVtbl* lpVtbl; | 
 | }; | 
 | struct IPersistFileVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IPersistFile* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IPersistFile* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IPersistFile* This); | 
 |  | 
 |     /*** IPersist methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetClassID)( | 
 |         IPersistFile* This, | 
 |         CLSID* pClassID); | 
 |  | 
 |     /*** IPersistFile methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *IsDirty)( | 
 |         IPersistFile* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Load)( | 
 |         IPersistFile* This, | 
 |         LPCOLESTR pszFileName, | 
 |         DWORD dwMode); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Save)( | 
 |         IPersistFile* This, | 
 |         LPCOLESTR pszFileName, | 
 |         BOOL fRemember); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SaveCompleted)( | 
 |         IPersistFile* This, | 
 |         LPCOLESTR pszFileName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetCurFile)( | 
 |         IPersistFile* This, | 
 |         LPOLESTR* ppszFileName); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IPersistFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IPersistFile_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IPersistFile_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPersist methods ***/ | 
 | #define IPersistFile_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) | 
 | /*** IPersistFile methods ***/ | 
 | #define IPersistFile_IsDirty(p) (p)->lpVtbl->IsDirty(p) | 
 | #define IPersistFile_Load(p,a,b) (p)->lpVtbl->Load(p,a,b) | 
 | #define IPersistFile_Save(p,a,b) (p)->lpVtbl->Save(p,a,b) | 
 | #define IPersistFile_SaveCompleted(p,a) (p)->lpVtbl->SaveCompleted(p,a) | 
 | #define IPersistFile_GetCurFile(p,a) (p)->lpVtbl->GetCurFile(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IPersistFile_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPersist methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ | 
 |     /*** IPersistFile methods ***/ \ | 
 |     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Load)(THIS_ LPCOLESTR pszFileName, DWORD dwMode) PURE; \ | 
 |     STDMETHOD_(HRESULT,Save)(THIS_ LPCOLESTR pszFileName, BOOL fRemember) PURE; \ | 
 |     STDMETHOD_(HRESULT,SaveCompleted)(THIS_ LPCOLESTR pszFileName) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetCurFile)(THIS_ LPOLESTR* ppszFileName) PURE; | 
 |  | 
 | HRESULT CALLBACK IPersistFile_IsDirty_Proxy( | 
 |     IPersistFile* This); | 
 | void __RPC_STUB IPersistFile_IsDirty_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistFile_Load_Proxy( | 
 |     IPersistFile* This, | 
 |     LPCOLESTR pszFileName, | 
 |     DWORD dwMode); | 
 | void __RPC_STUB IPersistFile_Load_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistFile_Save_Proxy( | 
 |     IPersistFile* This, | 
 |     LPCOLESTR pszFileName, | 
 |     BOOL fRemember); | 
 | void __RPC_STUB IPersistFile_Save_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistFile_SaveCompleted_Proxy( | 
 |     IPersistFile* This, | 
 |     LPCOLESTR pszFileName); | 
 | void __RPC_STUB IPersistFile_SaveCompleted_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistFile_GetCurFile_Proxy( | 
 |     IPersistFile* This, | 
 |     LPOLESTR* ppszFileName); | 
 | void __RPC_STUB IPersistFile_GetCurFile_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IPersistStorage IPersistStorage; | 
 | typedef IPersistStorage *LPPERSISTSTORAGE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IPersistStorage interface | 
 |  */ | 
 | DEFINE_GUID(IID_IPersistStorage, 0x0000010a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IPersistStorage : public IPersist | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE IsDirty( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE InitNew( | 
 |         IStorage* pStg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Load( | 
 |         IStorage* pStg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Save( | 
 |         IStorage* pStgSave, | 
 |         BOOL fSameAsLoad) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SaveCompleted( | 
 |         IStorage* pStgNew) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE HandsOffStorage( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IPersistStorageVtbl IPersistStorageVtbl; | 
 | struct IPersistStorage { | 
 |     const IPersistStorageVtbl* lpVtbl; | 
 | }; | 
 | struct IPersistStorageVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IPersistStorage* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IPersistStorage* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IPersistStorage* This); | 
 |  | 
 |     /*** IPersist methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetClassID)( | 
 |         IPersistStorage* This, | 
 |         CLSID* pClassID); | 
 |  | 
 |     /*** IPersistStorage methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *IsDirty)( | 
 |         IPersistStorage* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *InitNew)( | 
 |         IPersistStorage* This, | 
 |         IStorage* pStg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Load)( | 
 |         IPersistStorage* This, | 
 |         IStorage* pStg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Save)( | 
 |         IPersistStorage* This, | 
 |         IStorage* pStgSave, | 
 |         BOOL fSameAsLoad); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SaveCompleted)( | 
 |         IPersistStorage* This, | 
 |         IStorage* pStgNew); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *HandsOffStorage)( | 
 |         IPersistStorage* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IPersistStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IPersistStorage_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IPersistStorage_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPersist methods ***/ | 
 | #define IPersistStorage_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a) | 
 | /*** IPersistStorage methods ***/ | 
 | #define IPersistStorage_IsDirty(p) (p)->lpVtbl->IsDirty(p) | 
 | #define IPersistStorage_InitNew(p,a) (p)->lpVtbl->InitNew(p,a) | 
 | #define IPersistStorage_Load(p,a) (p)->lpVtbl->Load(p,a) | 
 | #define IPersistStorage_Save(p,a,b) (p)->lpVtbl->Save(p,a,b) | 
 | #define IPersistStorage_SaveCompleted(p,a) (p)->lpVtbl->SaveCompleted(p,a) | 
 | #define IPersistStorage_HandsOffStorage(p) (p)->lpVtbl->HandsOffStorage(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define IPersistStorage_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPersist methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \ | 
 |     /*** IPersistStorage methods ***/ \ | 
 |     STDMETHOD_(HRESULT,IsDirty)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,InitNew)(THIS_ IStorage* pStg) PURE; \ | 
 |     STDMETHOD_(HRESULT,Load)(THIS_ IStorage* pStg) PURE; \ | 
 |     STDMETHOD_(HRESULT,Save)(THIS_ IStorage* pStgSave, BOOL fSameAsLoad) PURE; \ | 
 |     STDMETHOD_(HRESULT,SaveCompleted)(THIS_ IStorage* pStgNew) PURE; \ | 
 |     STDMETHOD_(HRESULT,HandsOffStorage)(THIS) PURE; | 
 |  | 
 | HRESULT CALLBACK IPersistStorage_IsDirty_Proxy( | 
 |     IPersistStorage* This); | 
 | void __RPC_STUB IPersistStorage_IsDirty_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStorage_InitNew_Proxy( | 
 |     IPersistStorage* This, | 
 |     IStorage* pStg); | 
 | void __RPC_STUB IPersistStorage_InitNew_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStorage_Load_Proxy( | 
 |     IPersistStorage* This, | 
 |     IStorage* pStg); | 
 | void __RPC_STUB IPersistStorage_Load_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStorage_Save_Proxy( | 
 |     IPersistStorage* This, | 
 |     IStorage* pStgSave, | 
 |     BOOL fSameAsLoad); | 
 | void __RPC_STUB IPersistStorage_Save_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStorage_SaveCompleted_Proxy( | 
 |     IPersistStorage* This, | 
 |     IStorage* pStgNew); | 
 | void __RPC_STUB IPersistStorage_SaveCompleted_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPersistStorage_HandsOffStorage_Proxy( | 
 |     IPersistStorage* This); | 
 | void __RPC_STUB IPersistStorage_HandsOffStorage_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IRootStorage IRootStorage; | 
 | typedef IRootStorage *LPROOTSTORAGE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRootStorage interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRootStorage, 0x00000012, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRootStorage : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE SwitchToFile( | 
 |         LPOLESTR pszFile) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRootStorageVtbl IRootStorageVtbl; | 
 | struct IRootStorage { | 
 |     const IRootStorageVtbl* lpVtbl; | 
 | }; | 
 | struct IRootStorageVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRootStorage* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRootStorage* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRootStorage* This); | 
 |  | 
 |     /*** IRootStorage methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *SwitchToFile)( | 
 |         IRootStorage* This, | 
 |         LPOLESTR pszFile); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRootStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRootStorage_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRootStorage_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRootStorage methods ***/ | 
 | #define IRootStorage_SwitchToFile(p,a) (p)->lpVtbl->SwitchToFile(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRootStorage_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRootStorage methods ***/ \ | 
 |     STDMETHOD_(HRESULT,SwitchToFile)(THIS_ LPOLESTR pszFile) PURE; | 
 |  | 
 | HRESULT CALLBACK IRootStorage_SwitchToFile_Proxy( | 
 |     IRootStorage* This, | 
 |     LPOLESTR pszFile); | 
 | void __RPC_STUB IRootStorage_SwitchToFile_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct ILockBytes ILockBytes; | 
 | typedef ILockBytes *LPLOCKBYTES; | 
 |  | 
 | /***************************************************************************** | 
 |  * ILockBytes interface | 
 |  */ | 
 | DEFINE_GUID(IID_ILockBytes, 0x0000000a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct ILockBytes : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE ReadAt( | 
 |         ULARGE_INTEGER ulOffset, | 
 |         void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbRead) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE WriteAt( | 
 |         ULARGE_INTEGER ulOffset, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Flush( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetSize( | 
 |         ULARGE_INTEGER cb) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE LockRegion( | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE UnlockRegion( | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Stat( | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct ILockBytesVtbl ILockBytesVtbl; | 
 | struct ILockBytes { | 
 |     const ILockBytesVtbl* lpVtbl; | 
 | }; | 
 | struct ILockBytesVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         ILockBytes* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         ILockBytes* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         ILockBytes* This); | 
 |  | 
 |     /*** ILockBytes methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *ReadAt)( | 
 |         ILockBytes* This, | 
 |         ULARGE_INTEGER ulOffset, | 
 |         void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbRead); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *WriteAt)( | 
 |         ILockBytes* This, | 
 |         ULARGE_INTEGER ulOffset, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Flush)( | 
 |         ILockBytes* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetSize)( | 
 |         ILockBytes* This, | 
 |         ULARGE_INTEGER cb); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *LockRegion)( | 
 |         ILockBytes* This, | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *UnlockRegion)( | 
 |         ILockBytes* This, | 
 |         ULARGE_INTEGER libOffset, | 
 |         ULARGE_INTEGER cb, | 
 |         DWORD dwLockType); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Stat)( | 
 |         ILockBytes* This, | 
 |         STATSTG* pstatstg, | 
 |         DWORD grfStatFlag); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define ILockBytes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define ILockBytes_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define ILockBytes_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** ILockBytes methods ***/ | 
 | #define ILockBytes_ReadAt(p,a,b,c,d) (p)->lpVtbl->ReadAt(p,a,b,c,d) | 
 | #define ILockBytes_WriteAt(p,a,b,c,d) (p)->lpVtbl->WriteAt(p,a,b,c,d) | 
 | #define ILockBytes_Flush(p) (p)->lpVtbl->Flush(p) | 
 | #define ILockBytes_SetSize(p,a) (p)->lpVtbl->SetSize(p,a) | 
 | #define ILockBytes_LockRegion(p,a,b,c) (p)->lpVtbl->LockRegion(p,a,b,c) | 
 | #define ILockBytes_UnlockRegion(p,a,b,c) (p)->lpVtbl->UnlockRegion(p,a,b,c) | 
 | #define ILockBytes_Stat(p,a,b) (p)->lpVtbl->Stat(p,a,b) | 
 |  | 
 | #endif | 
 |  | 
 | #define ILockBytes_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** ILockBytes methods ***/ \ | 
 |     STDMETHOD_(HRESULT,ReadAt)(THIS_ ULARGE_INTEGER ulOffset, void* pv, ULONG cb, ULONG* pcbRead) PURE; \ | 
 |     STDMETHOD_(HRESULT,WriteAt)(THIS_ ULARGE_INTEGER ulOffset, const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \ | 
 |     STDMETHOD_(HRESULT,Flush)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetSize)(THIS_ ULARGE_INTEGER cb) PURE; \ | 
 |     STDMETHOD_(HRESULT,LockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \ | 
 |     STDMETHOD_(HRESULT,UnlockRegion)(THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) PURE; \ | 
 |     STDMETHOD_(HRESULT,Stat)(THIS_ STATSTG* pstatstg, DWORD grfStatFlag) PURE; | 
 |  | 
 | HRESULT CALLBACK ILockBytes_RemoteReadAt_Proxy( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbRead); | 
 | void __RPC_STUB ILockBytes_RemoteReadAt_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILockBytes_ReadAt_Proxy( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     void* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbRead); | 
 | HRESULT __RPC_STUB ILockBytes_ReadAt_Stub( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbRead); | 
 | HRESULT CALLBACK ILockBytes_RemoteWriteAt_Proxy( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | void __RPC_STUB ILockBytes_RemoteWriteAt_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILockBytes_WriteAt_Proxy( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     const void* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | HRESULT __RPC_STUB ILockBytes_WriteAt_Stub( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | HRESULT CALLBACK ILockBytes_Flush_Proxy( | 
 |     ILockBytes* This); | 
 | void __RPC_STUB ILockBytes_Flush_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILockBytes_SetSize_Proxy( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER cb); | 
 | void __RPC_STUB ILockBytes_SetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILockBytes_LockRegion_Proxy( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER libOffset, | 
 |     ULARGE_INTEGER cb, | 
 |     DWORD dwLockType); | 
 | void __RPC_STUB ILockBytes_LockRegion_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILockBytes_UnlockRegion_Proxy( | 
 |     ILockBytes* This, | 
 |     ULARGE_INTEGER libOffset, | 
 |     ULARGE_INTEGER cb, | 
 |     DWORD dwLockType); | 
 | void __RPC_STUB ILockBytes_UnlockRegion_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILockBytes_Stat_Proxy( | 
 |     ILockBytes* This, | 
 |     STATSTG* pstatstg, | 
 |     DWORD grfStatFlag); | 
 | void __RPC_STUB ILockBytes_Stat_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IFillLockBytes IFillLockBytes; | 
 | /***************************************************************************** | 
 |  * IFillLockBytes interface | 
 |  */ | 
 | DEFINE_GUID(IID_IFillLockBytes, 0x99caf010, 0x415e, 0x11cf, 0x88,0x14, 0x00,0xaa,0x00,0xb5,0x69,0xf5); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IFillLockBytes : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE FillAppend( | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE FillAt( | 
 |         ULARGE_INTEGER ulOffset, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetFillSize( | 
 |         ULARGE_INTEGER ulSize) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Terminate( | 
 |         BOOL bCanceled) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IFillLockBytesVtbl IFillLockBytesVtbl; | 
 | struct IFillLockBytes { | 
 |     const IFillLockBytesVtbl* lpVtbl; | 
 | }; | 
 | struct IFillLockBytesVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IFillLockBytes* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IFillLockBytes* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IFillLockBytes* This); | 
 |  | 
 |     /*** IFillLockBytes methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *FillAppend)( | 
 |         IFillLockBytes* This, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *FillAt)( | 
 |         IFillLockBytes* This, | 
 |         ULARGE_INTEGER ulOffset, | 
 |         const void* pv, | 
 |         ULONG cb, | 
 |         ULONG* pcbWritten); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetFillSize)( | 
 |         IFillLockBytes* This, | 
 |         ULARGE_INTEGER ulSize); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Terminate)( | 
 |         IFillLockBytes* This, | 
 |         BOOL bCanceled); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IFillLockBytes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IFillLockBytes_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IFillLockBytes_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IFillLockBytes methods ***/ | 
 | #define IFillLockBytes_FillAppend(p,a,b,c) (p)->lpVtbl->FillAppend(p,a,b,c) | 
 | #define IFillLockBytes_FillAt(p,a,b,c,d) (p)->lpVtbl->FillAt(p,a,b,c,d) | 
 | #define IFillLockBytes_SetFillSize(p,a) (p)->lpVtbl->SetFillSize(p,a) | 
 | #define IFillLockBytes_Terminate(p,a) (p)->lpVtbl->Terminate(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IFillLockBytes_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IFillLockBytes methods ***/ \ | 
 |     STDMETHOD_(HRESULT,FillAppend)(THIS_ const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \ | 
 |     STDMETHOD_(HRESULT,FillAt)(THIS_ ULARGE_INTEGER ulOffset, const void* pv, ULONG cb, ULONG* pcbWritten) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetFillSize)(THIS_ ULARGE_INTEGER ulSize) PURE; \ | 
 |     STDMETHOD_(HRESULT,Terminate)(THIS_ BOOL bCanceled) PURE; | 
 |  | 
 | HRESULT CALLBACK IFillLockBytes_RemoteFillAppend_Proxy( | 
 |     IFillLockBytes* This, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | void __RPC_STUB IFillLockBytes_RemoteFillAppend_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IFillLockBytes_FillAppend_Proxy( | 
 |     IFillLockBytes* This, | 
 |     const void* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | HRESULT __RPC_STUB IFillLockBytes_FillAppend_Stub( | 
 |     IFillLockBytes* This, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | HRESULT CALLBACK IFillLockBytes_RemoteFillAt_Proxy( | 
 |     IFillLockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | void __RPC_STUB IFillLockBytes_RemoteFillAt_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IFillLockBytes_FillAt_Proxy( | 
 |     IFillLockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     const void* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | HRESULT __RPC_STUB IFillLockBytes_FillAt_Stub( | 
 |     IFillLockBytes* This, | 
 |     ULARGE_INTEGER ulOffset, | 
 |     const byte* pv, | 
 |     ULONG cb, | 
 |     ULONG* pcbWritten); | 
 | HRESULT CALLBACK IFillLockBytes_SetFillSize_Proxy( | 
 |     IFillLockBytes* This, | 
 |     ULARGE_INTEGER ulSize); | 
 | void __RPC_STUB IFillLockBytes_SetFillSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IFillLockBytes_Terminate_Proxy( | 
 |     IFillLockBytes* This, | 
 |     BOOL bCanceled); | 
 | void __RPC_STUB IFillLockBytes_Terminate_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IProgressNotify IProgressNotify; | 
 | /***************************************************************************** | 
 |  * IProgressNotify interface | 
 |  */ | 
 | DEFINE_GUID(IID_IProgressNotify, 0xa9d758a0, 0x4617, 0x11cf, 0x95,0xfc, 0x00,0xaa,0x00,0x68,0x0d,0xb4); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IProgressNotify : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE OnProgress( | 
 |         DWORD dwProgressCurrent, | 
 |         DWORD dwProgressMaximum, | 
 |         BOOL fAccurate, | 
 |         BOOL fOwner) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IProgressNotifyVtbl IProgressNotifyVtbl; | 
 | struct IProgressNotify { | 
 |     const IProgressNotifyVtbl* lpVtbl; | 
 | }; | 
 | struct IProgressNotifyVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IProgressNotify* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IProgressNotify* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IProgressNotify* This); | 
 |  | 
 |     /*** IProgressNotify methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *OnProgress)( | 
 |         IProgressNotify* This, | 
 |         DWORD dwProgressCurrent, | 
 |         DWORD dwProgressMaximum, | 
 |         BOOL fAccurate, | 
 |         BOOL fOwner); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IProgressNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IProgressNotify_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IProgressNotify_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IProgressNotify methods ***/ | 
 | #define IProgressNotify_OnProgress(p,a,b,c,d) (p)->lpVtbl->OnProgress(p,a,b,c,d) | 
 |  | 
 | #endif | 
 |  | 
 | #define IProgressNotify_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IProgressNotify methods ***/ \ | 
 |     STDMETHOD_(HRESULT,OnProgress)(THIS_ DWORD dwProgressCurrent, DWORD dwProgressMaximum, BOOL fAccurate, BOOL fOwner) PURE; | 
 |  | 
 | HRESULT CALLBACK IProgressNotify_OnProgress_Proxy( | 
 |     IProgressNotify* This, | 
 |     DWORD dwProgressCurrent, | 
 |     DWORD dwProgressMaximum, | 
 |     BOOL fAccurate, | 
 |     BOOL fOwner); | 
 | void __RPC_STUB IProgressNotify_OnProgress_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct ILayoutStorage ILayoutStorage; | 
 | typedef struct tagStorageLayout { | 
 |     DWORD LayoutType; | 
 |     OLECHAR *pwcsElementName; | 
 |     LARGE_INTEGER cOffset; | 
 |     LARGE_INTEGER cBytes; | 
 | } StorageLayout; | 
 |  | 
 | /***************************************************************************** | 
 |  * ILayoutStorage interface | 
 |  */ | 
 | DEFINE_GUID(IID_ILayoutStorage, 0x0e6d4d90, 0x6738, 0x11cf, 0x96,0x08, 0x00,0xaa,0x00,0x68,0x0d,0xb4); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct ILayoutStorage : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE LayoutScript( | 
 |         StorageLayout* pStorageLayout, | 
 |         DWORD nEntries, | 
 |         DWORD glfInterleavedFlag) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE BeginMonitor( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EndMonitor( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ReLayoutDocfile( | 
 |         OLECHAR* pwcsNewDfName) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ReLayoutDocfileOnILockBytes( | 
 |         ILockBytes* pILockBytes) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct ILayoutStorageVtbl ILayoutStorageVtbl; | 
 | struct ILayoutStorage { | 
 |     const ILayoutStorageVtbl* lpVtbl; | 
 | }; | 
 | struct ILayoutStorageVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         ILayoutStorage* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         ILayoutStorage* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         ILayoutStorage* This); | 
 |  | 
 |     /*** ILayoutStorage methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *LayoutScript)( | 
 |         ILayoutStorage* This, | 
 |         StorageLayout* pStorageLayout, | 
 |         DWORD nEntries, | 
 |         DWORD glfInterleavedFlag); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *BeginMonitor)( | 
 |         ILayoutStorage* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EndMonitor)( | 
 |         ILayoutStorage* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ReLayoutDocfile)( | 
 |         ILayoutStorage* This, | 
 |         OLECHAR* pwcsNewDfName); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ReLayoutDocfileOnILockBytes)( | 
 |         ILayoutStorage* This, | 
 |         ILockBytes* pILockBytes); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define ILayoutStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define ILayoutStorage_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define ILayoutStorage_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** ILayoutStorage methods ***/ | 
 | #define ILayoutStorage_LayoutScript(p,a,b,c) (p)->lpVtbl->LayoutScript(p,a,b,c) | 
 | #define ILayoutStorage_BeginMonitor(p) (p)->lpVtbl->BeginMonitor(p) | 
 | #define ILayoutStorage_EndMonitor(p) (p)->lpVtbl->EndMonitor(p) | 
 | #define ILayoutStorage_ReLayoutDocfile(p,a) (p)->lpVtbl->ReLayoutDocfile(p,a) | 
 | #define ILayoutStorage_ReLayoutDocfileOnILockBytes(p,a) (p)->lpVtbl->ReLayoutDocfileOnILockBytes(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define ILayoutStorage_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** ILayoutStorage methods ***/ \ | 
 |     STDMETHOD_(HRESULT,LayoutScript)(THIS_ StorageLayout* pStorageLayout, DWORD nEntries, DWORD glfInterleavedFlag) PURE; \ | 
 |     STDMETHOD_(HRESULT,BeginMonitor)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,EndMonitor)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,ReLayoutDocfile)(THIS_ OLECHAR* pwcsNewDfName) PURE; \ | 
 |     STDMETHOD_(HRESULT,ReLayoutDocfileOnILockBytes)(THIS_ ILockBytes* pILockBytes) PURE; | 
 |  | 
 | HRESULT CALLBACK ILayoutStorage_LayoutScript_Proxy( | 
 |     ILayoutStorage* This, | 
 |     StorageLayout* pStorageLayout, | 
 |     DWORD nEntries, | 
 |     DWORD glfInterleavedFlag); | 
 | void __RPC_STUB ILayoutStorage_LayoutScript_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILayoutStorage_BeginMonitor_Proxy( | 
 |     ILayoutStorage* This); | 
 | void __RPC_STUB ILayoutStorage_BeginMonitor_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILayoutStorage_EndMonitor_Proxy( | 
 |     ILayoutStorage* This); | 
 | void __RPC_STUB ILayoutStorage_EndMonitor_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILayoutStorage_ReLayoutDocfile_Proxy( | 
 |     ILayoutStorage* This, | 
 |     OLECHAR* pwcsNewDfName); | 
 | void __RPC_STUB ILayoutStorage_ReLayoutDocfile_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK ILayoutStorage_ReLayoutDocfileOnILockBytes_Proxy( | 
 |     ILayoutStorage* This, | 
 |     ILockBytes* pILockBytes); | 
 | void __RPC_STUB ILayoutStorage_ReLayoutDocfileOnILockBytes_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IEnumFORMATETC IEnumFORMATETC; | 
 | typedef IEnumFORMATETC *LPENUMFORMATETC; | 
 |  | 
 | typedef struct tagDVTARGETDEVICE { | 
 |     DWORD tdSize; | 
 |     WORD tdDriverNameOffset; | 
 |     WORD tdDeviceNameOffset; | 
 |     WORD tdPortNameOffset; | 
 |     WORD tdExtDevmodeOffset; | 
 |     BYTE tdData[1]; | 
 | } DVTARGETDEVICE; | 
 |  | 
 | typedef CLIPFORMAT *LPCLIPFORMAT; | 
 |  | 
 | typedef struct tagFORMATETC { | 
 |     CLIPFORMAT cfFormat; | 
 |     DVTARGETDEVICE *ptd; | 
 |     DWORD dwAspect; | 
 |     LONG lindex; | 
 |     DWORD tymed; | 
 | } FORMATETC, *LPFORMATETC; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumFORMATETC interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumFORMATETC, 0x00000103, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumFORMATETC : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         FORMATETC* rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumFORMATETC** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumFORMATETCVtbl IEnumFORMATETCVtbl; | 
 | struct IEnumFORMATETC { | 
 |     const IEnumFORMATETCVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumFORMATETCVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumFORMATETC* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumFORMATETC* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumFORMATETC* This); | 
 |  | 
 |     /*** IEnumFORMATETC methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumFORMATETC* This, | 
 |         ULONG celt, | 
 |         FORMATETC* rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumFORMATETC* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumFORMATETC* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumFORMATETC* This, | 
 |         IEnumFORMATETC** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumFORMATETC_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumFORMATETC_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumFORMATETC_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumFORMATETC methods ***/ | 
 | #define IEnumFORMATETC_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumFORMATETC_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumFORMATETC_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumFORMATETC_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumFORMATETC_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumFORMATETC methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, FORMATETC* rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumFORMATETC** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumFORMATETC_RemoteNext_Proxy( | 
 |     IEnumFORMATETC* This, | 
 |     ULONG celt, | 
 |     FORMATETC* rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumFORMATETC_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumFORMATETC_Next_Proxy( | 
 |     IEnumFORMATETC* This, | 
 |     ULONG celt, | 
 |     FORMATETC* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumFORMATETC_Next_Stub( | 
 |     IEnumFORMATETC* This, | 
 |     ULONG celt, | 
 |     FORMATETC* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumFORMATETC_Skip_Proxy( | 
 |     IEnumFORMATETC* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumFORMATETC_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumFORMATETC_Reset_Proxy( | 
 |     IEnumFORMATETC* This); | 
 | void __RPC_STUB IEnumFORMATETC_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumFORMATETC_Clone_Proxy( | 
 |     IEnumFORMATETC* This, | 
 |     IEnumFORMATETC** ppenum); | 
 | void __RPC_STUB IEnumFORMATETC_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IEnumSTATDATA IEnumSTATDATA; | 
 | typedef IEnumSTATDATA *LPENUMSTATDATA; | 
 |  | 
 | typedef enum tagADVF { | 
 |     ADVF_NODATA = 1, | 
 |     ADVF_PRIMEFIRST = 2, | 
 |     ADVF_ONLYONCE = 4, | 
 |     ADVF_DATAONSTOP = 64, | 
 |     ADVFCACHE_NOHANDLER = 8, | 
 |     ADVFCACHE_FORCEBUILTIN = 16, | 
 |     ADVFCACHE_ONSAVE = 32 | 
 | } ADVF; | 
 |  | 
 | typedef struct tagSTATDATA { | 
 |     FORMATETC formatetc; | 
 |     DWORD advf; | 
 |     IAdviseSink *pAdvSink; | 
 |     DWORD dwConnection; | 
 | } STATDATA, *LPSTATDATA; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumSTATDATA interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumSTATDATA, 0x00000105, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumSTATDATA : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         STATDATA* rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumSTATDATA** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumSTATDATAVtbl IEnumSTATDATAVtbl; | 
 | struct IEnumSTATDATA { | 
 |     const IEnumSTATDATAVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumSTATDATAVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumSTATDATA* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumSTATDATA* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumSTATDATA* This); | 
 |  | 
 |     /*** IEnumSTATDATA methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumSTATDATA* This, | 
 |         ULONG celt, | 
 |         STATDATA* rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumSTATDATA* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumSTATDATA* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumSTATDATA* This, | 
 |         IEnumSTATDATA** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumSTATDATA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumSTATDATA_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumSTATDATA_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumSTATDATA methods ***/ | 
 | #define IEnumSTATDATA_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumSTATDATA_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumSTATDATA_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumSTATDATA_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumSTATDATA_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumSTATDATA methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATDATA* rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATDATA** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumSTATDATA_RemoteNext_Proxy( | 
 |     IEnumSTATDATA* This, | 
 |     ULONG celt, | 
 |     STATDATA* rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumSTATDATA_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATDATA_Next_Proxy( | 
 |     IEnumSTATDATA* This, | 
 |     ULONG celt, | 
 |     STATDATA* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumSTATDATA_Next_Stub( | 
 |     IEnumSTATDATA* This, | 
 |     ULONG celt, | 
 |     STATDATA* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumSTATDATA_Skip_Proxy( | 
 |     IEnumSTATDATA* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumSTATDATA_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATDATA_Reset_Proxy( | 
 |     IEnumSTATDATA* This); | 
 | void __RPC_STUB IEnumSTATDATA_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATDATA_Clone_Proxy( | 
 |     IEnumSTATDATA* This, | 
 |     IEnumSTATDATA** ppenum); | 
 | void __RPC_STUB IEnumSTATDATA_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef IAdviseSink *LPADVISESINK; | 
 |  | 
 | typedef enum tagTYMED { | 
 |     TYMED_HGLOBAL = 1, | 
 |     TYMED_FILE = 2, | 
 |     TYMED_ISTREAM = 4, | 
 |     TYMED_ISTORAGE = 8, | 
 |     TYMED_GDI = 16, | 
 |     TYMED_MFPICT = 32, | 
 |     TYMED_ENHMF = 64, | 
 |     TYMED_NULL = 0 | 
 | } TYMED; | 
 |  | 
 | typedef struct tagRemSTGMEDIUM { | 
 |     DWORD tymed; | 
 |     DWORD dwHandleType; | 
 |     unsigned long pData; | 
 |     unsigned long pUnkForRelease; | 
 |     unsigned long cbData; | 
 |     byte data[1]; | 
 | } RemSTGMEDIUM; | 
 |  | 
 | typedef struct tagSTGMEDIUM { | 
 |     DWORD tymed; | 
 |     union { | 
 |         HBITMAP hBitmap; | 
 |         HMETAFILEPICT hMetaFilePict; | 
 |         HENHMETAFILE hEnhMetaFile; | 
 |         HGLOBAL hGlobal; | 
 |         LPOLESTR lpszFileName; | 
 |         IStream *pstm; | 
 |         IStorage *pstg; | 
 |     } DUMMYUNIONNAME; | 
 |     IUnknown *pUnkForRelease; | 
 | } uSTGMEDIUM; | 
 |  | 
 | typedef struct _GDI_OBJECT { | 
 |     DWORD ObjectType; | 
 |     union { | 
 |         wireHBITMAP hBitmap; | 
 |         wireHPALETTE hPalette; | 
 |         wireHGLOBAL hGeneric; | 
 |     } u; | 
 | } GDI_OBJECT; | 
 |  | 
 | typedef struct _userSTGMEDIUM { | 
 |     struct _STGMEDIUM_UNION { | 
 |         DWORD tymed; | 
 |         union { | 
 |             wireHMETAFILEPICT hMetaFilePict; | 
 |             wireHENHMETAFILE hHEnhMetaFile; | 
 |             GDI_OBJECT *hGdiHandle; | 
 |             wireHGLOBAL hGlobal; | 
 |             LPOLESTR lpszFileName; | 
 |             BYTE_BLOB *pstm; | 
 |             BYTE_BLOB *pstg; | 
 |         } u; | 
 |     } DUMMYSTRUCTNAME; | 
 |     IUnknown *pUnkForRelease; | 
 | } userSTGMEDIUM; | 
 |  | 
 | typedef userSTGMEDIUM *wireSTGMEDIUM; | 
 |  | 
 | typedef uSTGMEDIUM STGMEDIUM; | 
 | unsigned long   __RPC_USER STGMEDIUM_UserSize     (unsigned long *, unsigned long,   STGMEDIUM *); | 
 | unsigned char * __RPC_USER STGMEDIUM_UserMarshal  (unsigned long *, unsigned char *, STGMEDIUM *); | 
 | unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, STGMEDIUM *); | 
 | void            __RPC_USER STGMEDIUM_UserFree     (unsigned long *, STGMEDIUM *); | 
 |  | 
 | typedef userSTGMEDIUM *wireASYNC_STGMEDIUM; | 
 |  | 
 | typedef STGMEDIUM ASYNC_STGMEDIUM; | 
 | unsigned long   __RPC_USER ASYNC_STGMEDIUM_UserSize     (unsigned long *, unsigned long,   ASYNC_STGMEDIUM *); | 
 | unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserMarshal  (unsigned long *, unsigned char *, ASYNC_STGMEDIUM *); | 
 | unsigned char * __RPC_USER ASYNC_STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, ASYNC_STGMEDIUM *); | 
 | void            __RPC_USER ASYNC_STGMEDIUM_UserFree     (unsigned long *, ASYNC_STGMEDIUM *); | 
 |  | 
 | typedef STGMEDIUM *LPSTGMEDIUM; | 
 |  | 
 | typedef struct _userFLAG_STGMEDIUM { | 
 |     long ContextFlags; | 
 |     long fPassOwnership; | 
 |     userSTGMEDIUM Stgmed; | 
 | } userFLAG_STGMEDIUM; | 
 |  | 
 | typedef userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM; | 
 |  | 
 | typedef struct _FLAG_STGMEDIUM { | 
 |     long ContextFlags; | 
 |     long fPassOwnership; | 
 |     STGMEDIUM Stgmed; | 
 | } FLAG_STGMEDIUM; | 
 | unsigned long   __RPC_USER FLAG_STGMEDIUM_UserSize     (unsigned long *, unsigned long,   FLAG_STGMEDIUM *); | 
 | unsigned char * __RPC_USER FLAG_STGMEDIUM_UserMarshal  (unsigned long *, unsigned char *, FLAG_STGMEDIUM *); | 
 | unsigned char * __RPC_USER FLAG_STGMEDIUM_UserUnmarshal(unsigned long *, unsigned char *, FLAG_STGMEDIUM *); | 
 | void            __RPC_USER FLAG_STGMEDIUM_UserFree     (unsigned long *, FLAG_STGMEDIUM *); | 
 |  | 
 | /***************************************************************************** | 
 |  * IAdviseSink interface | 
 |  */ | 
 | DEFINE_GUID(IID_IAdviseSink, 0x0000010f, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IAdviseSink : public IUnknown | 
 | { | 
 |     virtual void STDMETHODCALLTYPE OnDataChange( | 
 |         FORMATETC* pFormatetc, | 
 |         STGMEDIUM* pStgmed) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE OnViewChange( | 
 |         DWORD dwAspect, | 
 |         LONG lindex) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE OnRename( | 
 |         IMoniker* pmk) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE OnSave( | 
 |         ) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE OnClose( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IAdviseSinkVtbl IAdviseSinkVtbl; | 
 | struct IAdviseSink { | 
 |     const IAdviseSinkVtbl* lpVtbl; | 
 | }; | 
 | struct IAdviseSinkVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IAdviseSink* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IAdviseSink* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IAdviseSink* This); | 
 |  | 
 |     /*** IAdviseSink methods ***/ | 
 |     void (STDMETHODCALLTYPE *OnDataChange)( | 
 |         IAdviseSink* This, | 
 |         FORMATETC* pFormatetc, | 
 |         STGMEDIUM* pStgmed); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnViewChange)( | 
 |         IAdviseSink* This, | 
 |         DWORD dwAspect, | 
 |         LONG lindex); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnRename)( | 
 |         IAdviseSink* This, | 
 |         IMoniker* pmk); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnSave)( | 
 |         IAdviseSink* This); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnClose)( | 
 |         IAdviseSink* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IAdviseSink_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IAdviseSink_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IAdviseSink methods ***/ | 
 | #define IAdviseSink_OnDataChange(p,a,b) (p)->lpVtbl->OnDataChange(p,a,b) | 
 | #define IAdviseSink_OnViewChange(p,a,b) (p)->lpVtbl->OnViewChange(p,a,b) | 
 | #define IAdviseSink_OnRename(p,a) (p)->lpVtbl->OnRename(p,a) | 
 | #define IAdviseSink_OnSave(p) (p)->lpVtbl->OnSave(p) | 
 | #define IAdviseSink_OnClose(p) (p)->lpVtbl->OnClose(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define IAdviseSink_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IAdviseSink methods ***/ \ | 
 |     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC* pFormatetc, STGMEDIUM* pStgmed) PURE; \ | 
 |     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE; \ | 
 |     STDMETHOD_(void,OnRename)(THIS_ IMoniker* pmk) PURE; \ | 
 |     STDMETHOD_(void,OnSave)(THIS) PURE; \ | 
 |     STDMETHOD_(void,OnClose)(THIS) PURE; | 
 |  | 
 | HRESULT CALLBACK IAdviseSink_RemoteOnDataChange_Proxy( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM, | 
 |     FORMATETC* pFormatetc, | 
 |     ASYNC_STGMEDIUM* pStgmed); | 
 | void __RPC_STUB IAdviseSink_RemoteOnDataChange_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IAdviseSink_OnDataChange_Proxy( | 
 |     IAdviseSink* This, | 
 |     FORMATETC* pFormatetc, | 
 |     STGMEDIUM* pStgmed); | 
 | HRESULT __RPC_STUB IAdviseSink_OnDataChange_Stub( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM, | 
 |     FORMATETC* pFormatetc, | 
 |     ASYNC_STGMEDIUM* pStgmed); | 
 | HRESULT CALLBACK IAdviseSink_RemoteOnViewChange_Proxy( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM, | 
 |     DWORD dwAspect, | 
 |     LONG lindex); | 
 | void __RPC_STUB IAdviseSink_RemoteOnViewChange_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IAdviseSink_OnViewChange_Proxy( | 
 |     IAdviseSink* This, | 
 |     DWORD dwAspect, | 
 |     LONG lindex); | 
 | HRESULT __RPC_STUB IAdviseSink_OnViewChange_Stub( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM, | 
 |     DWORD dwAspect, | 
 |     LONG lindex); | 
 | HRESULT CALLBACK IAdviseSink_RemoteOnRename_Proxy( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM, | 
 |     IMoniker* pmk); | 
 | void __RPC_STUB IAdviseSink_RemoteOnRename_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IAdviseSink_OnRename_Proxy( | 
 |     IAdviseSink* This, | 
 |     IMoniker* pmk); | 
 | HRESULT __RPC_STUB IAdviseSink_OnRename_Stub( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM, | 
 |     IMoniker* pmk); | 
 | HRESULT CALLBACK IAdviseSink_RemoteOnSave_Proxy( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM); | 
 | void __RPC_STUB IAdviseSink_RemoteOnSave_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IAdviseSink_OnSave_Proxy( | 
 |     IAdviseSink* This); | 
 | HRESULT __RPC_STUB IAdviseSink_OnSave_Stub( | 
 |     IAdviseSink* This, | 
 |     IAsyncManager** ppIAM); | 
 | HRESULT CALLBACK IAdviseSink_RemoteOnClose_Proxy( | 
 |     IAdviseSink* This); | 
 | void __RPC_STUB IAdviseSink_RemoteOnClose_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IAdviseSink_OnClose_Proxy( | 
 |     IAdviseSink* This); | 
 | HRESULT __RPC_STUB IAdviseSink_OnClose_Stub( | 
 |     IAdviseSink* This); | 
 |  | 
 | typedef struct IAdviseSink2 IAdviseSink2; | 
 | typedef IAdviseSink2 *LPADVISESINK2; | 
 |  | 
 | /***************************************************************************** | 
 |  * IAdviseSink2 interface | 
 |  */ | 
 | DEFINE_GUID(IID_IAdviseSink2, 0x00000125, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IAdviseSink2 : public IAdviseSink | 
 | { | 
 |     virtual void STDMETHODCALLTYPE OnLinkSrcChange( | 
 |         IMoniker* pmk) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IAdviseSink2Vtbl IAdviseSink2Vtbl; | 
 | struct IAdviseSink2 { | 
 |     const IAdviseSink2Vtbl* lpVtbl; | 
 | }; | 
 | struct IAdviseSink2Vtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IAdviseSink2* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IAdviseSink2* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IAdviseSink2* This); | 
 |  | 
 |     /*** IAdviseSink methods ***/ | 
 |     void (STDMETHODCALLTYPE *OnDataChange)( | 
 |         IAdviseSink2* This, | 
 |         FORMATETC* pFormatetc, | 
 |         STGMEDIUM* pStgmed); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnViewChange)( | 
 |         IAdviseSink2* This, | 
 |         DWORD dwAspect, | 
 |         LONG lindex); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnRename)( | 
 |         IAdviseSink2* This, | 
 |         IMoniker* pmk); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnSave)( | 
 |         IAdviseSink2* This); | 
 |  | 
 |     void (STDMETHODCALLTYPE *OnClose)( | 
 |         IAdviseSink2* This); | 
 |  | 
 |     /*** IAdviseSink2 methods ***/ | 
 |     void (STDMETHODCALLTYPE *OnLinkSrcChange)( | 
 |         IAdviseSink2* This, | 
 |         IMoniker* pmk); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IAdviseSink2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IAdviseSink2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IAdviseSink2_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IAdviseSink methods ***/ | 
 | #define IAdviseSink2_OnDataChange(p,a,b) (p)->lpVtbl->OnDataChange(p,a,b) | 
 | #define IAdviseSink2_OnViewChange(p,a,b) (p)->lpVtbl->OnViewChange(p,a,b) | 
 | #define IAdviseSink2_OnRename(p,a) (p)->lpVtbl->OnRename(p,a) | 
 | #define IAdviseSink2_OnSave(p) (p)->lpVtbl->OnSave(p) | 
 | #define IAdviseSink2_OnClose(p) (p)->lpVtbl->OnClose(p) | 
 | /*** IAdviseSink2 methods ***/ | 
 | #define IAdviseSink2_OnLinkSrcChange(p,a) (p)->lpVtbl->OnLinkSrcChange(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IAdviseSink2_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IAdviseSink methods ***/ \ | 
 |     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC* pFormatetc, STGMEDIUM* pStgmed) PURE; \ | 
 |     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE; \ | 
 |     STDMETHOD_(void,OnRename)(THIS_ IMoniker* pmk) PURE; \ | 
 |     STDMETHOD_(void,OnSave)(THIS) PURE; \ | 
 |     STDMETHOD_(void,OnClose)(THIS) PURE; \ | 
 |     /*** IAdviseSink2 methods ***/ \ | 
 |     STDMETHOD_(void,OnLinkSrcChange)(THIS_ IMoniker* pmk) PURE; | 
 |  | 
 | HRESULT CALLBACK IAdviseSink2_RemoteOnLinkSrcChange_Proxy( | 
 |     IAdviseSink2* This, | 
 |     IAsyncManager** ppIAM, | 
 |     IMoniker* pmk); | 
 | void __RPC_STUB IAdviseSink2_RemoteOnLinkSrcChange_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IAdviseSink2_OnLinkSrcChange_Proxy( | 
 |     IAdviseSink2* This, | 
 |     IMoniker* pmk); | 
 | HRESULT __RPC_STUB IAdviseSink2_OnLinkSrcChange_Stub( | 
 |     IAdviseSink2* This, | 
 |     IAsyncManager** ppIAM, | 
 |     IMoniker* pmk); | 
 |  | 
 | typedef struct IDataObject IDataObject; | 
 | typedef IDataObject *LPDATAOBJECT; | 
 |  | 
 | typedef enum tagDATADIR { | 
 |     DATADIR_GET = 1, | 
 |     DATADIR_SET = 2 | 
 | } DATADIR; | 
 |  | 
 | /***************************************************************************** | 
 |  * IDataObject interface | 
 |  */ | 
 | DEFINE_GUID(IID_IDataObject, 0x0000010e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IDataObject : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetData( | 
 |         FORMATETC* pformatetcIn, | 
 |         STGMEDIUM* pmedium) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetDataHere( | 
 |         FORMATETC* pformatetc, | 
 |         STGMEDIUM* pmedium) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE QueryGetData( | 
 |         FORMATETC* pformatetc) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc( | 
 |         FORMATETC* pformatectIn, | 
 |         FORMATETC* pformatetcOut) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetData( | 
 |         FORMATETC* pformatetc, | 
 |         STGMEDIUM* pmedium, | 
 |         BOOL fRelease) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc( | 
 |         DWORD dwDirection, | 
 |         IEnumFORMATETC** ppenumFormatEtc) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DAdvise( | 
 |         FORMATETC* pformatetc, | 
 |         DWORD advf, | 
 |         IAdviseSink* pAdvSink, | 
 |         DWORD* pdwConnection) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DUnadvise( | 
 |         DWORD dwConnection) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EnumDAdvise( | 
 |         IEnumSTATDATA** ppenumAdvise) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IDataObjectVtbl IDataObjectVtbl; | 
 | struct IDataObject { | 
 |     const IDataObjectVtbl* lpVtbl; | 
 | }; | 
 | struct IDataObjectVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IDataObject* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IDataObject* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IDataObject* This); | 
 |  | 
 |     /*** IDataObject methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetData)( | 
 |         IDataObject* This, | 
 |         FORMATETC* pformatetcIn, | 
 |         STGMEDIUM* pmedium); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetDataHere)( | 
 |         IDataObject* This, | 
 |         FORMATETC* pformatetc, | 
 |         STGMEDIUM* pmedium); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *QueryGetData)( | 
 |         IDataObject* This, | 
 |         FORMATETC* pformatetc); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetCanonicalFormatEtc)( | 
 |         IDataObject* This, | 
 |         FORMATETC* pformatectIn, | 
 |         FORMATETC* pformatetcOut); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetData)( | 
 |         IDataObject* This, | 
 |         FORMATETC* pformatetc, | 
 |         STGMEDIUM* pmedium, | 
 |         BOOL fRelease); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EnumFormatEtc)( | 
 |         IDataObject* This, | 
 |         DWORD dwDirection, | 
 |         IEnumFORMATETC** ppenumFormatEtc); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DAdvise)( | 
 |         IDataObject* This, | 
 |         FORMATETC* pformatetc, | 
 |         DWORD advf, | 
 |         IAdviseSink* pAdvSink, | 
 |         DWORD* pdwConnection); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DUnadvise)( | 
 |         IDataObject* This, | 
 |         DWORD dwConnection); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EnumDAdvise)( | 
 |         IDataObject* This, | 
 |         IEnumSTATDATA** ppenumAdvise); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IDataObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IDataObject_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IDataObject_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IDataObject methods ***/ | 
 | #define IDataObject_GetData(p,a,b) (p)->lpVtbl->GetData(p,a,b) | 
 | #define IDataObject_GetDataHere(p,a,b) (p)->lpVtbl->GetDataHere(p,a,b) | 
 | #define IDataObject_QueryGetData(p,a) (p)->lpVtbl->QueryGetData(p,a) | 
 | #define IDataObject_GetCanonicalFormatEtc(p,a,b) (p)->lpVtbl->GetCanonicalFormatEtc(p,a,b) | 
 | #define IDataObject_SetData(p,a,b,c) (p)->lpVtbl->SetData(p,a,b,c) | 
 | #define IDataObject_EnumFormatEtc(p,a,b) (p)->lpVtbl->EnumFormatEtc(p,a,b) | 
 | #define IDataObject_DAdvise(p,a,b,c,d) (p)->lpVtbl->DAdvise(p,a,b,c,d) | 
 | #define IDataObject_DUnadvise(p,a) (p)->lpVtbl->DUnadvise(p,a) | 
 | #define IDataObject_EnumDAdvise(p,a) (p)->lpVtbl->EnumDAdvise(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IDataObject_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IDataObject methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetData)(THIS_ FORMATETC* pformatetcIn, STGMEDIUM* pmedium) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetDataHere)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium) PURE; \ | 
 |     STDMETHOD_(HRESULT,QueryGetData)(THIS_ FORMATETC* pformatetc) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetCanonicalFormatEtc)(THIS_ FORMATETC* pformatectIn, FORMATETC* pformatetcOut) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetData)(THIS_ FORMATETC* pformatetc, STGMEDIUM* pmedium, BOOL fRelease) PURE; \ | 
 |     STDMETHOD_(HRESULT,EnumFormatEtc)(THIS_ DWORD dwDirection, IEnumFORMATETC** ppenumFormatEtc) PURE; \ | 
 |     STDMETHOD_(HRESULT,DAdvise)(THIS_ FORMATETC* pformatetc, DWORD advf, IAdviseSink* pAdvSink, DWORD* pdwConnection) PURE; \ | 
 |     STDMETHOD_(HRESULT,DUnadvise)(THIS_ DWORD dwConnection) PURE; \ | 
 |     STDMETHOD_(HRESULT,EnumDAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE; | 
 |  | 
 | HRESULT CALLBACK IDataObject_RemoteGetData_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetcIn, | 
 |     STGMEDIUM* pRemoteMedium); | 
 | void __RPC_STUB IDataObject_RemoteGetData_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_GetData_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetcIn, | 
 |     STGMEDIUM* pmedium); | 
 | HRESULT __RPC_STUB IDataObject_GetData_Stub( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetcIn, | 
 |     STGMEDIUM* pRemoteMedium); | 
 | HRESULT CALLBACK IDataObject_RemoteGetDataHere_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc, | 
 |     STGMEDIUM* pRemoteMedium); | 
 | void __RPC_STUB IDataObject_RemoteGetDataHere_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_GetDataHere_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc, | 
 |     STGMEDIUM* pmedium); | 
 | HRESULT __RPC_STUB IDataObject_GetDataHere_Stub( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc, | 
 |     STGMEDIUM* pRemoteMedium); | 
 | HRESULT CALLBACK IDataObject_QueryGetData_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc); | 
 | void __RPC_STUB IDataObject_QueryGetData_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_GetCanonicalFormatEtc_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatectIn, | 
 |     FORMATETC* pformatetcOut); | 
 | void __RPC_STUB IDataObject_GetCanonicalFormatEtc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_RemoteSetData_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc, | 
 |     FLAG_STGMEDIUM* pmedium, | 
 |     BOOL fRelease); | 
 | void __RPC_STUB IDataObject_RemoteSetData_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_SetData_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc, | 
 |     STGMEDIUM* pmedium, | 
 |     BOOL fRelease); | 
 | HRESULT __RPC_STUB IDataObject_SetData_Stub( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc, | 
 |     FLAG_STGMEDIUM* pmedium, | 
 |     BOOL fRelease); | 
 | HRESULT CALLBACK IDataObject_EnumFormatEtc_Proxy( | 
 |     IDataObject* This, | 
 |     DWORD dwDirection, | 
 |     IEnumFORMATETC** ppenumFormatEtc); | 
 | void __RPC_STUB IDataObject_EnumFormatEtc_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_DAdvise_Proxy( | 
 |     IDataObject* This, | 
 |     FORMATETC* pformatetc, | 
 |     DWORD advf, | 
 |     IAdviseSink* pAdvSink, | 
 |     DWORD* pdwConnection); | 
 | void __RPC_STUB IDataObject_DAdvise_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_DUnadvise_Proxy( | 
 |     IDataObject* This, | 
 |     DWORD dwConnection); | 
 | void __RPC_STUB IDataObject_DUnadvise_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataObject_EnumDAdvise_Proxy( | 
 |     IDataObject* This, | 
 |     IEnumSTATDATA** ppenumAdvise); | 
 | void __RPC_STUB IDataObject_EnumDAdvise_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IDataAdviseHolder IDataAdviseHolder; | 
 | typedef IDataAdviseHolder *LPDATAADVISEHOLDER; | 
 |  | 
 | /***************************************************************************** | 
 |  * IDataAdviseHolder interface | 
 |  */ | 
 | DEFINE_GUID(IID_IDataAdviseHolder, 0x00000110, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IDataAdviseHolder : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Advise( | 
 |         IDataObject* pDataObject, | 
 |         FORMATETC* pFetc, | 
 |         DWORD advf, | 
 |         IAdviseSink* pAdvise, | 
 |         DWORD* pdwConnection) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Unadvise( | 
 |         DWORD dwConnection) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE EnumAdvise( | 
 |         IEnumSTATDATA** ppenumAdvise) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SendOnDataChange( | 
 |         IDataObject* pDataObject, | 
 |         DWORD dwReserved, | 
 |         DWORD advf) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IDataAdviseHolderVtbl IDataAdviseHolderVtbl; | 
 | struct IDataAdviseHolder { | 
 |     const IDataAdviseHolderVtbl* lpVtbl; | 
 | }; | 
 | struct IDataAdviseHolderVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IDataAdviseHolder* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IDataAdviseHolder* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IDataAdviseHolder* This); | 
 |  | 
 |     /*** IDataAdviseHolder methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Advise)( | 
 |         IDataAdviseHolder* This, | 
 |         IDataObject* pDataObject, | 
 |         FORMATETC* pFetc, | 
 |         DWORD advf, | 
 |         IAdviseSink* pAdvise, | 
 |         DWORD* pdwConnection); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Unadvise)( | 
 |         IDataAdviseHolder* This, | 
 |         DWORD dwConnection); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *EnumAdvise)( | 
 |         IDataAdviseHolder* This, | 
 |         IEnumSTATDATA** ppenumAdvise); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SendOnDataChange)( | 
 |         IDataAdviseHolder* This, | 
 |         IDataObject* pDataObject, | 
 |         DWORD dwReserved, | 
 |         DWORD advf); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IDataAdviseHolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IDataAdviseHolder_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IDataAdviseHolder_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IDataAdviseHolder methods ***/ | 
 | #define IDataAdviseHolder_Advise(p,a,b,c,d,e) (p)->lpVtbl->Advise(p,a,b,c,d,e) | 
 | #define IDataAdviseHolder_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) | 
 | #define IDataAdviseHolder_EnumAdvise(p,a) (p)->lpVtbl->EnumAdvise(p,a) | 
 | #define IDataAdviseHolder_SendOnDataChange(p,a,b,c) (p)->lpVtbl->SendOnDataChange(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define IDataAdviseHolder_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IDataAdviseHolder methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Advise)(THIS_ IDataObject* pDataObject, FORMATETC* pFetc, DWORD advf, IAdviseSink* pAdvise, DWORD* pdwConnection) PURE; \ | 
 |     STDMETHOD_(HRESULT,Unadvise)(THIS_ DWORD dwConnection) PURE; \ | 
 |     STDMETHOD_(HRESULT,EnumAdvise)(THIS_ IEnumSTATDATA** ppenumAdvise) PURE; \ | 
 |     STDMETHOD_(HRESULT,SendOnDataChange)(THIS_ IDataObject* pDataObject, DWORD dwReserved, DWORD advf) PURE; | 
 |  | 
 | HRESULT CALLBACK IDataAdviseHolder_Advise_Proxy( | 
 |     IDataAdviseHolder* This, | 
 |     IDataObject* pDataObject, | 
 |     FORMATETC* pFetc, | 
 |     DWORD advf, | 
 |     IAdviseSink* pAdvise, | 
 |     DWORD* pdwConnection); | 
 | void __RPC_STUB IDataAdviseHolder_Advise_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataAdviseHolder_Unadvise_Proxy( | 
 |     IDataAdviseHolder* This, | 
 |     DWORD dwConnection); | 
 | void __RPC_STUB IDataAdviseHolder_Unadvise_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataAdviseHolder_EnumAdvise_Proxy( | 
 |     IDataAdviseHolder* This, | 
 |     IEnumSTATDATA** ppenumAdvise); | 
 | void __RPC_STUB IDataAdviseHolder_EnumAdvise_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IDataAdviseHolder_SendOnDataChange_Proxy( | 
 |     IDataAdviseHolder* This, | 
 |     IDataObject* pDataObject, | 
 |     DWORD dwReserved, | 
 |     DWORD advf); | 
 | void __RPC_STUB IDataAdviseHolder_SendOnDataChange_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IMessageFilter IMessageFilter; | 
 | typedef IMessageFilter *LPMESSAGEFILTER; | 
 |  | 
 | typedef enum tagCALLTYPE { | 
 |     CALLTYPE_TOPLEVEL = 1, | 
 |     CALLTYPE_NESTED = 2, | 
 |     CALLTYPE_ASYNC = 3, | 
 |     CALLTYPE_TOPLEVEL_CALLPENDING = 4, | 
 |     CALLTYPE_ASYNC_CALLPENDING = 5 | 
 | } CALLTYPE; | 
 |  | 
 | typedef enum tagSERVERCALL { | 
 |     SERVERCALL_ISHANDLED = 0, | 
 |     SERVERCALL_REJECTED = 1, | 
 |     SERVERCALL_RETRYLATER = 2 | 
 | } SERVERCALL; | 
 |  | 
 | typedef enum tagPENDINGTYPE { | 
 |     PENDINGTYPE_TOPLEVEL = 1, | 
 |     PENDINGTYPE_NESTED = 2 | 
 | } PENDINGTYPE; | 
 |  | 
 | typedef enum tagPENDINGMSG { | 
 |     PENDINGMSG_CANCELCALL = 0, | 
 |     PENDINGMSG_WAITNOPROCESS = 1, | 
 |     PENDINGMSG_WAITDEFPROCESS = 2 | 
 | } PENDINGMSG; | 
 |  | 
 | typedef struct tagINTERFACEINFO { | 
 |     IUnknown *pUnk; | 
 |     IID iid; | 
 |     WORD wMethod; | 
 | } INTERFACEINFO, *LPINTERFACEINFO; | 
 |  | 
 | /***************************************************************************** | 
 |  * IMessageFilter interface | 
 |  */ | 
 | DEFINE_GUID(IID_IMessageFilter, 0x00000016, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IMessageFilter : public IUnknown | 
 | { | 
 |     virtual DWORD STDMETHODCALLTYPE HandleInComingCall( | 
 |         DWORD dwCallType, | 
 |         HTASK htaskCaller, | 
 |         DWORD dwTickCount, | 
 |         LPINTERFACEINFO lpInterfaceInfo) = 0; | 
 |  | 
 |     virtual DWORD STDMETHODCALLTYPE RetryRejectedCall( | 
 |         HTASK htaskCallee, | 
 |         DWORD dwTickCount, | 
 |         DWORD dwRejectType) = 0; | 
 |  | 
 |     virtual DWORD STDMETHODCALLTYPE MessagePending( | 
 |         HTASK htaskCallee, | 
 |         DWORD dwTickCount, | 
 |         DWORD dwPendingType) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IMessageFilterVtbl IMessageFilterVtbl; | 
 | struct IMessageFilter { | 
 |     const IMessageFilterVtbl* lpVtbl; | 
 | }; | 
 | struct IMessageFilterVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IMessageFilter* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IMessageFilter* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IMessageFilter* This); | 
 |  | 
 |     /*** IMessageFilter methods ***/ | 
 |     DWORD (STDMETHODCALLTYPE *HandleInComingCall)( | 
 |         IMessageFilter* This, | 
 |         DWORD dwCallType, | 
 |         HTASK htaskCaller, | 
 |         DWORD dwTickCount, | 
 |         LPINTERFACEINFO lpInterfaceInfo); | 
 |  | 
 |     DWORD (STDMETHODCALLTYPE *RetryRejectedCall)( | 
 |         IMessageFilter* This, | 
 |         HTASK htaskCallee, | 
 |         DWORD dwTickCount, | 
 |         DWORD dwRejectType); | 
 |  | 
 |     DWORD (STDMETHODCALLTYPE *MessagePending)( | 
 |         IMessageFilter* This, | 
 |         HTASK htaskCallee, | 
 |         DWORD dwTickCount, | 
 |         DWORD dwPendingType); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IMessageFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IMessageFilter_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IMessageFilter_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IMessageFilter methods ***/ | 
 | #define IMessageFilter_HandleInComingCall(p,a,b,c,d) (p)->lpVtbl->HandleInComingCall(p,a,b,c,d) | 
 | #define IMessageFilter_RetryRejectedCall(p,a,b,c) (p)->lpVtbl->RetryRejectedCall(p,a,b,c) | 
 | #define IMessageFilter_MessagePending(p,a,b,c) (p)->lpVtbl->MessagePending(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define IMessageFilter_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IMessageFilter methods ***/ \ | 
 |     STDMETHOD_(DWORD,HandleInComingCall)(THIS_ DWORD dwCallType, HTASK htaskCaller, DWORD dwTickCount, LPINTERFACEINFO lpInterfaceInfo) PURE; \ | 
 |     STDMETHOD_(DWORD,RetryRejectedCall)(THIS_ HTASK htaskCallee, DWORD dwTickCount, DWORD dwRejectType) PURE; \ | 
 |     STDMETHOD_(DWORD,MessagePending)(THIS_ HTASK htaskCallee, DWORD dwTickCount, DWORD dwPendingType) PURE; | 
 |  | 
 | DWORD CALLBACK IMessageFilter_HandleInComingCall_Proxy( | 
 |     IMessageFilter* This, | 
 |     DWORD dwCallType, | 
 |     HTASK htaskCaller, | 
 |     DWORD dwTickCount, | 
 |     LPINTERFACEINFO lpInterfaceInfo); | 
 | void __RPC_STUB IMessageFilter_HandleInComingCall_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | DWORD CALLBACK IMessageFilter_RetryRejectedCall_Proxy( | 
 |     IMessageFilter* This, | 
 |     HTASK htaskCallee, | 
 |     DWORD dwTickCount, | 
 |     DWORD dwRejectType); | 
 | void __RPC_STUB IMessageFilter_RetryRejectedCall_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | DWORD CALLBACK IMessageFilter_MessagePending_Proxy( | 
 |     IMessageFilter* This, | 
 |     HTASK htaskCallee, | 
 |     DWORD dwTickCount, | 
 |     DWORD dwPendingType); | 
 | void __RPC_STUB IMessageFilter_MessagePending_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IRpcChannelBuffer IRpcChannelBuffer; | 
 | typedef IRpcChannelBuffer *LPRPCCHANNELBUFFER; | 
 |  | 
 | typedef unsigned long RPCOLEDATAREP; | 
 |  | 
 | typedef struct tagRPCOLEMESSAGE { | 
 |     void *reserved1; | 
 |     RPCOLEDATAREP dataRepresentation; | 
 |     void *Buffer; | 
 |     ULONG cbBuffer; | 
 |     ULONG iMethod; | 
 |     void *reserved2[5]; | 
 |     ULONG rpcFlags; | 
 | } RPCOLEMESSAGE; | 
 |  | 
 | typedef RPCOLEMESSAGE *PRPCOLEMESSAGE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRpcChannelBuffer interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRpcChannelBuffer, 0xd5f56b60, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRpcChannelBuffer : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetBuffer( | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         REFIID riid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SendReceive( | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         ULONG* pStatus) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE FreeBuffer( | 
 |         RPCOLEMESSAGE* pMessage) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetDestCtx( | 
 |         DWORD* pdwDestContext, | 
 |         void** ppvDestContext) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE IsConnected( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRpcChannelBufferVtbl IRpcChannelBufferVtbl; | 
 | struct IRpcChannelBuffer { | 
 |     const IRpcChannelBufferVtbl* lpVtbl; | 
 | }; | 
 | struct IRpcChannelBufferVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRpcChannelBuffer* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRpcChannelBuffer* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRpcChannelBuffer* This); | 
 |  | 
 |     /*** IRpcChannelBuffer methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetBuffer)( | 
 |         IRpcChannelBuffer* This, | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         REFIID riid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SendReceive)( | 
 |         IRpcChannelBuffer* This, | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         ULONG* pStatus); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *FreeBuffer)( | 
 |         IRpcChannelBuffer* This, | 
 |         RPCOLEMESSAGE* pMessage); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetDestCtx)( | 
 |         IRpcChannelBuffer* This, | 
 |         DWORD* pdwDestContext, | 
 |         void** ppvDestContext); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *IsConnected)( | 
 |         IRpcChannelBuffer* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRpcChannelBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRpcChannelBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRpcChannelBuffer_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRpcChannelBuffer methods ***/ | 
 | #define IRpcChannelBuffer_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b) | 
 | #define IRpcChannelBuffer_SendReceive(p,a,b) (p)->lpVtbl->SendReceive(p,a,b) | 
 | #define IRpcChannelBuffer_FreeBuffer(p,a) (p)->lpVtbl->FreeBuffer(p,a) | 
 | #define IRpcChannelBuffer_GetDestCtx(p,a,b) (p)->lpVtbl->GetDestCtx(p,a,b) | 
 | #define IRpcChannelBuffer_IsConnected(p) (p)->lpVtbl->IsConnected(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRpcChannelBuffer_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRpcChannelBuffer methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetBuffer)(THIS_ RPCOLEMESSAGE* pMessage, REFIID riid) PURE; \ | 
 |     STDMETHOD_(HRESULT,SendReceive)(THIS_ RPCOLEMESSAGE* pMessage, ULONG* pStatus) PURE; \ | 
 |     STDMETHOD_(HRESULT,FreeBuffer)(THIS_ RPCOLEMESSAGE* pMessage) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetDestCtx)(THIS_ DWORD* pdwDestContext, void** ppvDestContext) PURE; \ | 
 |     STDMETHOD_(HRESULT,IsConnected)(THIS) PURE; | 
 |  | 
 | HRESULT CALLBACK IRpcChannelBuffer_GetBuffer_Proxy( | 
 |     IRpcChannelBuffer* This, | 
 |     RPCOLEMESSAGE* pMessage, | 
 |     REFIID riid); | 
 | void __RPC_STUB IRpcChannelBuffer_GetBuffer_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer_SendReceive_Proxy( | 
 |     IRpcChannelBuffer* This, | 
 |     RPCOLEMESSAGE* pMessage, | 
 |     ULONG* pStatus); | 
 | void __RPC_STUB IRpcChannelBuffer_SendReceive_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer_FreeBuffer_Proxy( | 
 |     IRpcChannelBuffer* This, | 
 |     RPCOLEMESSAGE* pMessage); | 
 | void __RPC_STUB IRpcChannelBuffer_FreeBuffer_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer_GetDestCtx_Proxy( | 
 |     IRpcChannelBuffer* This, | 
 |     DWORD* pdwDestContext, | 
 |     void** ppvDestContext); | 
 | void __RPC_STUB IRpcChannelBuffer_GetDestCtx_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer_IsConnected_Proxy( | 
 |     IRpcChannelBuffer* This); | 
 | void __RPC_STUB IRpcChannelBuffer_IsConnected_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IRpcChannelBuffer2 IRpcChannelBuffer2; | 
 | typedef IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRpcChannelBuffer2 interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRpcChannelBuffer2, 0x594f31d0, 0x7f19, 0x11d0, 0xb1,0x94, 0x00,0xa0,0xc9,0x0d,0xc8,0xbf); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRpcChannelBuffer2 : public IRpcChannelBuffer | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetProtocolVersion( | 
 |         DWORD* pdwVersion) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRpcChannelBuffer2Vtbl IRpcChannelBuffer2Vtbl; | 
 | struct IRpcChannelBuffer2 { | 
 |     const IRpcChannelBuffer2Vtbl* lpVtbl; | 
 | }; | 
 | struct IRpcChannelBuffer2Vtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRpcChannelBuffer2* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRpcChannelBuffer2* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRpcChannelBuffer2* This); | 
 |  | 
 |     /*** IRpcChannelBuffer methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetBuffer)( | 
 |         IRpcChannelBuffer2* This, | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         REFIID riid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SendReceive)( | 
 |         IRpcChannelBuffer2* This, | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         ULONG* pStatus); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *FreeBuffer)( | 
 |         IRpcChannelBuffer2* This, | 
 |         RPCOLEMESSAGE* pMessage); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetDestCtx)( | 
 |         IRpcChannelBuffer2* This, | 
 |         DWORD* pdwDestContext, | 
 |         void** ppvDestContext); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *IsConnected)( | 
 |         IRpcChannelBuffer2* This); | 
 |  | 
 |     /*** IRpcChannelBuffer2 methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)( | 
 |         IRpcChannelBuffer2* This, | 
 |         DWORD* pdwVersion); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRpcChannelBuffer2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRpcChannelBuffer2_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRpcChannelBuffer2_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRpcChannelBuffer methods ***/ | 
 | #define IRpcChannelBuffer2_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b) | 
 | #define IRpcChannelBuffer2_SendReceive(p,a,b) (p)->lpVtbl->SendReceive(p,a,b) | 
 | #define IRpcChannelBuffer2_FreeBuffer(p,a) (p)->lpVtbl->FreeBuffer(p,a) | 
 | #define IRpcChannelBuffer2_GetDestCtx(p,a,b) (p)->lpVtbl->GetDestCtx(p,a,b) | 
 | #define IRpcChannelBuffer2_IsConnected(p) (p)->lpVtbl->IsConnected(p) | 
 | /*** IRpcChannelBuffer2 methods ***/ | 
 | #define IRpcChannelBuffer2_GetProtocolVersion(p,a) (p)->lpVtbl->GetProtocolVersion(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRpcChannelBuffer2_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRpcChannelBuffer methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetBuffer)(THIS_ RPCOLEMESSAGE* pMessage, REFIID riid) PURE; \ | 
 |     STDMETHOD_(HRESULT,SendReceive)(THIS_ RPCOLEMESSAGE* pMessage, ULONG* pStatus) PURE; \ | 
 |     STDMETHOD_(HRESULT,FreeBuffer)(THIS_ RPCOLEMESSAGE* pMessage) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetDestCtx)(THIS_ DWORD* pdwDestContext, void** ppvDestContext) PURE; \ | 
 |     STDMETHOD_(HRESULT,IsConnected)(THIS) PURE; \ | 
 |     /*** IRpcChannelBuffer2 methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetProtocolVersion)(THIS_ DWORD* pdwVersion) PURE; | 
 |  | 
 | HRESULT CALLBACK IRpcChannelBuffer2_GetProtocolVersion_Proxy( | 
 |     IRpcChannelBuffer2* This, | 
 |     DWORD* pdwVersion); | 
 | void __RPC_STUB IRpcChannelBuffer2_GetProtocolVersion_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IRpcChannelBuffer3 IRpcChannelBuffer3; | 
 | typedef IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRpcChannelBuffer3 interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRpcChannelBuffer3, 0x25b15600, 0x0115, 0x11d0, 0xbf,0x0d, 0x00,0xaa,0x00,0xb8,0xdf,0xd2); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRpcChannelBuffer3 : public IRpcChannelBuffer2 | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Send( | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         ULONG* pulStatus) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Receive( | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         ULONG ulSize, | 
 |         ULONG* pulStatus) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Cancel( | 
 |         RPCOLEMESSAGE* pMsg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetCallContext( | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         REFIID riid, | 
 |         void** pInterface) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetDestCtxEx( | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         DWORD* pdwDestContext, | 
 |         void** ppvDestContext) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetState( | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         DWORD* pState) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RegisterAsync( | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         IAsyncManager* pAsyncMgr) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRpcChannelBuffer3Vtbl IRpcChannelBuffer3Vtbl; | 
 | struct IRpcChannelBuffer3 { | 
 |     const IRpcChannelBuffer3Vtbl* lpVtbl; | 
 | }; | 
 | struct IRpcChannelBuffer3Vtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRpcChannelBuffer3* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRpcChannelBuffer3* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRpcChannelBuffer3* This); | 
 |  | 
 |     /*** IRpcChannelBuffer methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetBuffer)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         REFIID riid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SendReceive)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMessage, | 
 |         ULONG* pStatus); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *FreeBuffer)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMessage); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetDestCtx)( | 
 |         IRpcChannelBuffer3* This, | 
 |         DWORD* pdwDestContext, | 
 |         void** ppvDestContext); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *IsConnected)( | 
 |         IRpcChannelBuffer3* This); | 
 |  | 
 |     /*** IRpcChannelBuffer2 methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetProtocolVersion)( | 
 |         IRpcChannelBuffer3* This, | 
 |         DWORD* pdwVersion); | 
 |  | 
 |     /*** IRpcChannelBuffer3 methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Send)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         ULONG* pulStatus); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Receive)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         ULONG ulSize, | 
 |         ULONG* pulStatus); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Cancel)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMsg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetCallContext)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         REFIID riid, | 
 |         void** pInterface); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetDestCtxEx)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         DWORD* pdwDestContext, | 
 |         void** ppvDestContext); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetState)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         DWORD* pState); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RegisterAsync)( | 
 |         IRpcChannelBuffer3* This, | 
 |         RPCOLEMESSAGE* pMsg, | 
 |         IAsyncManager* pAsyncMgr); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRpcChannelBuffer3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRpcChannelBuffer3_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRpcChannelBuffer3_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRpcChannelBuffer methods ***/ | 
 | #define IRpcChannelBuffer3_GetBuffer(p,a,b) (p)->lpVtbl->GetBuffer(p,a,b) | 
 | #define IRpcChannelBuffer3_SendReceive(p,a,b) (p)->lpVtbl->SendReceive(p,a,b) | 
 | #define IRpcChannelBuffer3_FreeBuffer(p,a) (p)->lpVtbl->FreeBuffer(p,a) | 
 | #define IRpcChannelBuffer3_GetDestCtx(p,a,b) (p)->lpVtbl->GetDestCtx(p,a,b) | 
 | #define IRpcChannelBuffer3_IsConnected(p) (p)->lpVtbl->IsConnected(p) | 
 | /*** IRpcChannelBuffer2 methods ***/ | 
 | #define IRpcChannelBuffer3_GetProtocolVersion(p,a) (p)->lpVtbl->GetProtocolVersion(p,a) | 
 | /*** IRpcChannelBuffer3 methods ***/ | 
 | #define IRpcChannelBuffer3_Send(p,a,b) (p)->lpVtbl->Send(p,a,b) | 
 | #define IRpcChannelBuffer3_Receive(p,a,b,c) (p)->lpVtbl->Receive(p,a,b,c) | 
 | #define IRpcChannelBuffer3_Cancel(p,a) (p)->lpVtbl->Cancel(p,a) | 
 | #define IRpcChannelBuffer3_GetCallContext(p,a,b,c) (p)->lpVtbl->GetCallContext(p,a,b,c) | 
 | #define IRpcChannelBuffer3_GetDestCtxEx(p,a,b,c) (p)->lpVtbl->GetDestCtxEx(p,a,b,c) | 
 | #define IRpcChannelBuffer3_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b) | 
 | #define IRpcChannelBuffer3_RegisterAsync(p,a,b) (p)->lpVtbl->RegisterAsync(p,a,b) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRpcChannelBuffer3_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRpcChannelBuffer methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetBuffer)(THIS_ RPCOLEMESSAGE* pMessage, REFIID riid) PURE; \ | 
 |     STDMETHOD_(HRESULT,SendReceive)(THIS_ RPCOLEMESSAGE* pMessage, ULONG* pStatus) PURE; \ | 
 |     STDMETHOD_(HRESULT,FreeBuffer)(THIS_ RPCOLEMESSAGE* pMessage) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetDestCtx)(THIS_ DWORD* pdwDestContext, void** ppvDestContext) PURE; \ | 
 |     STDMETHOD_(HRESULT,IsConnected)(THIS) PURE; \ | 
 |     /*** IRpcChannelBuffer2 methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetProtocolVersion)(THIS_ DWORD* pdwVersion) PURE; \ | 
 |     /*** IRpcChannelBuffer3 methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Send)(THIS_ RPCOLEMESSAGE* pMsg, ULONG* pulStatus) PURE; \ | 
 |     STDMETHOD_(HRESULT,Receive)(THIS_ RPCOLEMESSAGE* pMsg, ULONG ulSize, ULONG* pulStatus) PURE; \ | 
 |     STDMETHOD_(HRESULT,Cancel)(THIS_ RPCOLEMESSAGE* pMsg) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetCallContext)(THIS_ RPCOLEMESSAGE* pMsg, REFIID riid, void** pInterface) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetDestCtxEx)(THIS_ RPCOLEMESSAGE* pMsg, DWORD* pdwDestContext, void** ppvDestContext) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetState)(THIS_ RPCOLEMESSAGE* pMsg, DWORD* pState) PURE; \ | 
 |     STDMETHOD_(HRESULT,RegisterAsync)(THIS_ RPCOLEMESSAGE* pMsg, IAsyncManager* pAsyncMgr) PURE; | 
 |  | 
 | HRESULT CALLBACK IRpcChannelBuffer3_Send_Proxy( | 
 |     IRpcChannelBuffer3* This, | 
 |     RPCOLEMESSAGE* pMsg, | 
 |     ULONG* pulStatus); | 
 | void __RPC_STUB IRpcChannelBuffer3_Send_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer3_Receive_Proxy( | 
 |     IRpcChannelBuffer3* This, | 
 |     RPCOLEMESSAGE* pMsg, | 
 |     ULONG ulSize, | 
 |     ULONG* pulStatus); | 
 | void __RPC_STUB IRpcChannelBuffer3_Receive_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer3_Cancel_Proxy( | 
 |     IRpcChannelBuffer3* This, | 
 |     RPCOLEMESSAGE* pMsg); | 
 | void __RPC_STUB IRpcChannelBuffer3_Cancel_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer3_GetCallContext_Proxy( | 
 |     IRpcChannelBuffer3* This, | 
 |     RPCOLEMESSAGE* pMsg, | 
 |     REFIID riid, | 
 |     void** pInterface); | 
 | void __RPC_STUB IRpcChannelBuffer3_GetCallContext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer3_GetDestCtxEx_Proxy( | 
 |     IRpcChannelBuffer3* This, | 
 |     RPCOLEMESSAGE* pMsg, | 
 |     DWORD* pdwDestContext, | 
 |     void** ppvDestContext); | 
 | void __RPC_STUB IRpcChannelBuffer3_GetDestCtxEx_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer3_GetState_Proxy( | 
 |     IRpcChannelBuffer3* This, | 
 |     RPCOLEMESSAGE* pMsg, | 
 |     DWORD* pState); | 
 | void __RPC_STUB IRpcChannelBuffer3_GetState_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcChannelBuffer3_RegisterAsync_Proxy( | 
 |     IRpcChannelBuffer3* This, | 
 |     RPCOLEMESSAGE* pMsg, | 
 |     IAsyncManager* pAsyncMgr); | 
 | void __RPC_STUB IRpcChannelBuffer3_RegisterAsync_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IRpcProxyBuffer IRpcProxyBuffer; | 
 | typedef IRpcProxyBuffer *LPRPCPROXYBUFFER; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRpcProxyBuffer interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRpcProxyBuffer, 0xd5f56a34, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRpcProxyBuffer : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Connect( | 
 |         IRpcChannelBuffer* pRpcChannelBuffer) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE Disconnect( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRpcProxyBufferVtbl IRpcProxyBufferVtbl; | 
 | struct IRpcProxyBuffer { | 
 |     const IRpcProxyBufferVtbl* lpVtbl; | 
 | }; | 
 | struct IRpcProxyBufferVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRpcProxyBuffer* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRpcProxyBuffer* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRpcProxyBuffer* This); | 
 |  | 
 |     /*** IRpcProxyBuffer methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Connect)( | 
 |         IRpcProxyBuffer* This, | 
 |         IRpcChannelBuffer* pRpcChannelBuffer); | 
 |  | 
 |     void (STDMETHODCALLTYPE *Disconnect)( | 
 |         IRpcProxyBuffer* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRpcProxyBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRpcProxyBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRpcProxyBuffer_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRpcProxyBuffer methods ***/ | 
 | #define IRpcProxyBuffer_Connect(p,a) (p)->lpVtbl->Connect(p,a) | 
 | #define IRpcProxyBuffer_Disconnect(p) (p)->lpVtbl->Disconnect(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRpcProxyBuffer_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRpcProxyBuffer methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Connect)(THIS_ IRpcChannelBuffer* pRpcChannelBuffer) PURE; \ | 
 |     STDMETHOD_(void,Disconnect)(THIS) PURE; | 
 |  | 
 | HRESULT CALLBACK IRpcProxyBuffer_Connect_Proxy( | 
 |     IRpcProxyBuffer* This, | 
 |     IRpcChannelBuffer* pRpcChannelBuffer); | 
 | void __RPC_STUB IRpcProxyBuffer_Connect_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IRpcProxyBuffer_Disconnect_Proxy( | 
 |     IRpcProxyBuffer* This); | 
 | void __RPC_STUB IRpcProxyBuffer_Disconnect_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IRpcStubBuffer IRpcStubBuffer; | 
 | typedef IRpcStubBuffer *LPRPCSTUBBUFFER; | 
 |  | 
 | /***************************************************************************** | 
 |  * IRpcStubBuffer interface | 
 |  */ | 
 | DEFINE_GUID(IID_IRpcStubBuffer, 0xd5f56afc, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IRpcStubBuffer : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Connect( | 
 |         IUnknown* pUnkServer) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE Disconnect( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Invoke( | 
 |         RPCOLEMESSAGE* _prpcmsg, | 
 |         IRpcChannelBuffer* _pRpcChannelBuffer) = 0; | 
 |  | 
 |     virtual IRpcStubBuffer* STDMETHODCALLTYPE IsIIDSupported( | 
 |         REFIID riid) = 0; | 
 |  | 
 |     virtual ULONG STDMETHODCALLTYPE CountRefs( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DebugServerQueryInterface( | 
 |         void** ppv) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE DebugServerRelease( | 
 |         void* pv) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IRpcStubBufferVtbl IRpcStubBufferVtbl; | 
 | struct IRpcStubBuffer { | 
 |     const IRpcStubBufferVtbl* lpVtbl; | 
 | }; | 
 | struct IRpcStubBufferVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IRpcStubBuffer* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IRpcStubBuffer* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IRpcStubBuffer* This); | 
 |  | 
 |     /*** IRpcStubBuffer methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Connect)( | 
 |         IRpcStubBuffer* This, | 
 |         IUnknown* pUnkServer); | 
 |  | 
 |     void (STDMETHODCALLTYPE *Disconnect)( | 
 |         IRpcStubBuffer* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Invoke)( | 
 |         IRpcStubBuffer* This, | 
 |         RPCOLEMESSAGE* _prpcmsg, | 
 |         IRpcChannelBuffer* _pRpcChannelBuffer); | 
 |  | 
 |     IRpcStubBuffer* (STDMETHODCALLTYPE *IsIIDSupported)( | 
 |         IRpcStubBuffer* This, | 
 |         REFIID riid); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *CountRefs)( | 
 |         IRpcStubBuffer* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DebugServerQueryInterface)( | 
 |         IRpcStubBuffer* This, | 
 |         void** ppv); | 
 |  | 
 |     void (STDMETHODCALLTYPE *DebugServerRelease)( | 
 |         IRpcStubBuffer* This, | 
 |         void* pv); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IRpcStubBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IRpcStubBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IRpcStubBuffer_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IRpcStubBuffer methods ***/ | 
 | #define IRpcStubBuffer_Connect(p,a) (p)->lpVtbl->Connect(p,a) | 
 | #define IRpcStubBuffer_Disconnect(p) (p)->lpVtbl->Disconnect(p) | 
 | #define IRpcStubBuffer_Invoke(p,a,b) (p)->lpVtbl->Invoke(p,a,b) | 
 | #define IRpcStubBuffer_IsIIDSupported(p,a) (p)->lpVtbl->IsIIDSupported(p,a) | 
 | #define IRpcStubBuffer_CountRefs(p) (p)->lpVtbl->CountRefs(p) | 
 | #define IRpcStubBuffer_DebugServerQueryInterface(p,a) (p)->lpVtbl->DebugServerQueryInterface(p,a) | 
 | #define IRpcStubBuffer_DebugServerRelease(p,a) (p)->lpVtbl->DebugServerRelease(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IRpcStubBuffer_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IRpcStubBuffer methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Connect)(THIS_ IUnknown* pUnkServer) PURE; \ | 
 |     STDMETHOD_(void,Disconnect)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Invoke)(THIS_ RPCOLEMESSAGE* _prpcmsg, IRpcChannelBuffer* _pRpcChannelBuffer) PURE; \ | 
 |     STDMETHOD_(IRpcStubBuffer*,IsIIDSupported)(THIS_ REFIID riid) PURE; \ | 
 |     STDMETHOD_(ULONG,CountRefs)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,DebugServerQueryInterface)(THIS_ void** ppv) PURE; \ | 
 |     STDMETHOD_(void,DebugServerRelease)(THIS_ void* pv) PURE; | 
 |  | 
 | HRESULT CALLBACK IRpcStubBuffer_Connect_Proxy( | 
 |     IRpcStubBuffer* This, | 
 |     IUnknown* pUnkServer); | 
 | void __RPC_STUB IRpcStubBuffer_Connect_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IRpcStubBuffer_Disconnect_Proxy( | 
 |     IRpcStubBuffer* This); | 
 | void __RPC_STUB IRpcStubBuffer_Disconnect_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcStubBuffer_Invoke_Proxy( | 
 |     IRpcStubBuffer* This, | 
 |     RPCOLEMESSAGE* _prpcmsg, | 
 |     IRpcChannelBuffer* _pRpcChannelBuffer); | 
 | void __RPC_STUB IRpcStubBuffer_Invoke_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | IRpcStubBuffer* CALLBACK IRpcStubBuffer_IsIIDSupported_Proxy( | 
 |     IRpcStubBuffer* This, | 
 |     REFIID riid); | 
 | void __RPC_STUB IRpcStubBuffer_IsIIDSupported_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | ULONG CALLBACK IRpcStubBuffer_CountRefs_Proxy( | 
 |     IRpcStubBuffer* This); | 
 | void __RPC_STUB IRpcStubBuffer_CountRefs_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IRpcStubBuffer_DebugServerQueryInterface_Proxy( | 
 |     IRpcStubBuffer* This, | 
 |     void** ppv); | 
 | void __RPC_STUB IRpcStubBuffer_DebugServerQueryInterface_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IRpcStubBuffer_DebugServerRelease_Proxy( | 
 |     IRpcStubBuffer* This, | 
 |     void* pv); | 
 | void __RPC_STUB IRpcStubBuffer_DebugServerRelease_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IPSFactoryBuffer IPSFactoryBuffer; | 
 | typedef IPSFactoryBuffer *LPPSFACTORYBUFFER; | 
 |  | 
 | /***************************************************************************** | 
 |  * IPSFactoryBuffer interface | 
 |  */ | 
 | DEFINE_GUID(IID_IPSFactoryBuffer, 0xd5f569d0, 0x593b, 0x101a, 0xb5,0x69, 0x08,0x00,0x2b,0x2d,0xbf,0x7a); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IPSFactoryBuffer : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE CreateProxy( | 
 |         IUnknown* pUnkOuter, | 
 |         REFIID riid, | 
 |         IRpcProxyBuffer** ppProxy, | 
 |         void** ppv) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CreateStub( | 
 |         REFIID riid, | 
 |         IUnknown* pUnkServer, | 
 |         IRpcStubBuffer** ppStub) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IPSFactoryBufferVtbl IPSFactoryBufferVtbl; | 
 | struct IPSFactoryBuffer { | 
 |     const IPSFactoryBufferVtbl* lpVtbl; | 
 | }; | 
 | struct IPSFactoryBufferVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IPSFactoryBuffer* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IPSFactoryBuffer* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IPSFactoryBuffer* This); | 
 |  | 
 |     /*** IPSFactoryBuffer methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *CreateProxy)( | 
 |         IPSFactoryBuffer* This, | 
 |         IUnknown* pUnkOuter, | 
 |         REFIID riid, | 
 |         IRpcProxyBuffer** ppProxy, | 
 |         void** ppv); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CreateStub)( | 
 |         IPSFactoryBuffer* This, | 
 |         REFIID riid, | 
 |         IUnknown* pUnkServer, | 
 |         IRpcStubBuffer** ppStub); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IPSFactoryBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IPSFactoryBuffer_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IPSFactoryBuffer_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPSFactoryBuffer methods ***/ | 
 | #define IPSFactoryBuffer_CreateProxy(p,a,b,c,d) (p)->lpVtbl->CreateProxy(p,a,b,c,d) | 
 | #define IPSFactoryBuffer_CreateStub(p,a,b,c) (p)->lpVtbl->CreateStub(p,a,b,c) | 
 |  | 
 | #endif | 
 |  | 
 | #define IPSFactoryBuffer_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPSFactoryBuffer methods ***/ \ | 
 |     STDMETHOD_(HRESULT,CreateProxy)(THIS_ IUnknown* pUnkOuter, REFIID riid, IRpcProxyBuffer** ppProxy, void** ppv) PURE; \ | 
 |     STDMETHOD_(HRESULT,CreateStub)(THIS_ REFIID riid, IUnknown* pUnkServer, IRpcStubBuffer** ppStub) PURE; | 
 |  | 
 | HRESULT CALLBACK IPSFactoryBuffer_CreateProxy_Proxy( | 
 |     IPSFactoryBuffer* This, | 
 |     IUnknown* pUnkOuter, | 
 |     REFIID riid, | 
 |     IRpcProxyBuffer** ppProxy, | 
 |     void** ppv); | 
 | void __RPC_STUB IPSFactoryBuffer_CreateProxy_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPSFactoryBuffer_CreateStub_Proxy( | 
 |     IPSFactoryBuffer* This, | 
 |     REFIID riid, | 
 |     IUnknown* pUnkServer, | 
 |     IRpcStubBuffer** ppStub); | 
 | void __RPC_STUB IPSFactoryBuffer_CreateStub_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IChannelHook IChannelHook; | 
 | typedef IChannelHook *LPCHANNELHOOK; | 
 |  | 
 | typedef struct SChannelHookCallInfo { | 
 |     IID iid; | 
 |     DWORD cbSize; | 
 |     GUID uCausality; | 
 |     DWORD dwServerPid; | 
 |     DWORD iMethod; | 
 |     void *pObject; | 
 | } SChannelHookCallInfo; | 
 |  | 
 | /***************************************************************************** | 
 |  * IChannelHook interface | 
 |  */ | 
 | DEFINE_GUID(IID_IChannelHook, 0x1008c4a0, 0x7613, 0x11cf, 0x9a,0xf1, 0x00,0x20,0xaf,0x6e,0x72,0xf4); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IChannelHook : public IUnknown | 
 | { | 
 |     virtual void STDMETHODCALLTYPE ClientGetSize( | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG* pDataSize) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE ClientFillBuffer( | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG* pDataSize, | 
 |         void* pDataBuffer) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE ClientNotify( | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG cbDataSize, | 
 |         void* pDataBuffer, | 
 |         DWORD lDataRep, | 
 |         HRESULT hrFault) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE ServerNotify( | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG cbDataSize, | 
 |         void* pDataBuffer, | 
 |         DWORD lDataRep) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE ServerGetSize( | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         HRESULT hrFault, | 
 |         ULONG* pDataSize) = 0; | 
 |  | 
 |     virtual void STDMETHODCALLTYPE ServerFillBuffer( | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG* pDataSize, | 
 |         void* pDataBuffer, | 
 |         HRESULT hrFault) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IChannelHookVtbl IChannelHookVtbl; | 
 | struct IChannelHook { | 
 |     const IChannelHookVtbl* lpVtbl; | 
 | }; | 
 | struct IChannelHookVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IChannelHook* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IChannelHook* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IChannelHook* This); | 
 |  | 
 |     /*** IChannelHook methods ***/ | 
 |     void (STDMETHODCALLTYPE *ClientGetSize)( | 
 |         IChannelHook* This, | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG* pDataSize); | 
 |  | 
 |     void (STDMETHODCALLTYPE *ClientFillBuffer)( | 
 |         IChannelHook* This, | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG* pDataSize, | 
 |         void* pDataBuffer); | 
 |  | 
 |     void (STDMETHODCALLTYPE *ClientNotify)( | 
 |         IChannelHook* This, | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG cbDataSize, | 
 |         void* pDataBuffer, | 
 |         DWORD lDataRep, | 
 |         HRESULT hrFault); | 
 |  | 
 |     void (STDMETHODCALLTYPE *ServerNotify)( | 
 |         IChannelHook* This, | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG cbDataSize, | 
 |         void* pDataBuffer, | 
 |         DWORD lDataRep); | 
 |  | 
 |     void (STDMETHODCALLTYPE *ServerGetSize)( | 
 |         IChannelHook* This, | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         HRESULT hrFault, | 
 |         ULONG* pDataSize); | 
 |  | 
 |     void (STDMETHODCALLTYPE *ServerFillBuffer)( | 
 |         IChannelHook* This, | 
 |         REFGUID uExtent, | 
 |         REFIID riid, | 
 |         ULONG* pDataSize, | 
 |         void* pDataBuffer, | 
 |         HRESULT hrFault); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IChannelHook_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IChannelHook_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IChannelHook_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IChannelHook methods ***/ | 
 | #define IChannelHook_ClientGetSize(p,a,b,c) (p)->lpVtbl->ClientGetSize(p,a,b,c) | 
 | #define IChannelHook_ClientFillBuffer(p,a,b,c,d) (p)->lpVtbl->ClientFillBuffer(p,a,b,c,d) | 
 | #define IChannelHook_ClientNotify(p,a,b,c,d,e,f) (p)->lpVtbl->ClientNotify(p,a,b,c,d,e,f) | 
 | #define IChannelHook_ServerNotify(p,a,b,c,d,e) (p)->lpVtbl->ServerNotify(p,a,b,c,d,e) | 
 | #define IChannelHook_ServerGetSize(p,a,b,c,d) (p)->lpVtbl->ServerGetSize(p,a,b,c,d) | 
 | #define IChannelHook_ServerFillBuffer(p,a,b,c,d,e) (p)->lpVtbl->ServerFillBuffer(p,a,b,c,d,e) | 
 |  | 
 | #endif | 
 |  | 
 | #define IChannelHook_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IChannelHook methods ***/ \ | 
 |     STDMETHOD_(void,ClientGetSize)(THIS_ REFGUID uExtent, REFIID riid, ULONG* pDataSize) PURE; \ | 
 |     STDMETHOD_(void,ClientFillBuffer)(THIS_ REFGUID uExtent, REFIID riid, ULONG* pDataSize, void* pDataBuffer) PURE; \ | 
 |     STDMETHOD_(void,ClientNotify)(THIS_ REFGUID uExtent, REFIID riid, ULONG cbDataSize, void* pDataBuffer, DWORD lDataRep, HRESULT hrFault) PURE; \ | 
 |     STDMETHOD_(void,ServerNotify)(THIS_ REFGUID uExtent, REFIID riid, ULONG cbDataSize, void* pDataBuffer, DWORD lDataRep) PURE; \ | 
 |     STDMETHOD_(void,ServerGetSize)(THIS_ REFGUID uExtent, REFIID riid, HRESULT hrFault, ULONG* pDataSize) PURE; \ | 
 |     STDMETHOD_(void,ServerFillBuffer)(THIS_ REFGUID uExtent, REFIID riid, ULONG* pDataSize, void* pDataBuffer, HRESULT hrFault) PURE; | 
 |  | 
 | void CALLBACK IChannelHook_ClientGetSize_Proxy( | 
 |     IChannelHook* This, | 
 |     REFGUID uExtent, | 
 |     REFIID riid, | 
 |     ULONG* pDataSize); | 
 | void __RPC_STUB IChannelHook_ClientGetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IChannelHook_ClientFillBuffer_Proxy( | 
 |     IChannelHook* This, | 
 |     REFGUID uExtent, | 
 |     REFIID riid, | 
 |     ULONG* pDataSize, | 
 |     void* pDataBuffer); | 
 | void __RPC_STUB IChannelHook_ClientFillBuffer_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IChannelHook_ClientNotify_Proxy( | 
 |     IChannelHook* This, | 
 |     REFGUID uExtent, | 
 |     REFIID riid, | 
 |     ULONG cbDataSize, | 
 |     void* pDataBuffer, | 
 |     DWORD lDataRep, | 
 |     HRESULT hrFault); | 
 | void __RPC_STUB IChannelHook_ClientNotify_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IChannelHook_ServerNotify_Proxy( | 
 |     IChannelHook* This, | 
 |     REFGUID uExtent, | 
 |     REFIID riid, | 
 |     ULONG cbDataSize, | 
 |     void* pDataBuffer, | 
 |     DWORD lDataRep); | 
 | void __RPC_STUB IChannelHook_ServerNotify_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IChannelHook_ServerGetSize_Proxy( | 
 |     IChannelHook* This, | 
 |     REFGUID uExtent, | 
 |     REFIID riid, | 
 |     HRESULT hrFault, | 
 |     ULONG* pDataSize); | 
 | void __RPC_STUB IChannelHook_ServerGetSize_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | void CALLBACK IChannelHook_ServerFillBuffer_Proxy( | 
 |     IChannelHook* This, | 
 |     REFGUID uExtent, | 
 |     REFIID riid, | 
 |     ULONG* pDataSize, | 
 |     void* pDataBuffer, | 
 |     HRESULT hrFault); | 
 | void __RPC_STUB IChannelHook_ServerFillBuffer_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IEnumSTATPROPSTG IEnumSTATPROPSTG; | 
 | typedef struct IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG; | 
 | typedef struct IPropertyStorage IPropertyStorage; | 
 | typedef IPropertyStorage *LPPROPERTYSTORAGE; | 
 |  | 
 | extern const FMTID FMTID_SummaryInformation; | 
 |  | 
 | extern const FMTID FMTID_DocSummaryInformation; | 
 |  | 
 | extern const FMTID FMTID_UserDefinedProperties; | 
 |  | 
 | #define PROPSETFLAG_DEFAULT (0) | 
 |  | 
 | #define PROPSETFLAG_NONSIMPLE (1) | 
 |  | 
 | #define PROPSETFLAG_ANSI (2) | 
 |  | 
 | #define PROPSETFLAG_UNBUFFERED (4) | 
 |  | 
 | typedef struct tagPROPVARIANT PROPVARIANT; | 
 |  | 
 | typedef struct tagCAUB { | 
 |     ULONG cElems; | 
 |     unsigned char *pElems; | 
 | } CAUB; | 
 |  | 
 | typedef struct tagCAI { | 
 |     ULONG cElems; | 
 |     short *pElems; | 
 | } CAI; | 
 |  | 
 | typedef struct tagCAUI { | 
 |     ULONG cElems; | 
 |     USHORT *pElems; | 
 | } CAUI; | 
 |  | 
 | typedef struct tagCAL { | 
 |     ULONG cElems; | 
 |     long *pElems; | 
 | } CAL; | 
 |  | 
 | typedef struct tagCAUL { | 
 |     ULONG cElems; | 
 |     ULONG *pElems; | 
 | } CAUL; | 
 |  | 
 | typedef struct tagCAFLT { | 
 |     ULONG cElems; | 
 |     float *pElems; | 
 | } CAFLT; | 
 |  | 
 | typedef struct tagCADBL { | 
 |     ULONG cElems; | 
 |     double *pElems; | 
 | } CADBL; | 
 |  | 
 | typedef struct tagCACY { | 
 |     ULONG cElems; | 
 |     CY *pElems; | 
 | } CACY; | 
 |  | 
 | typedef struct tagCADATE { | 
 |     ULONG cElems; | 
 |     DATE *pElems; | 
 | } CADATE; | 
 |  | 
 | typedef struct tagCABSTR { | 
 |     ULONG cElems; | 
 |     BSTR *pElems; | 
 | } CABSTR; | 
 |  | 
 | typedef struct tagCABSTRBLOB { | 
 |     ULONG cElems; | 
 |     BSTRBLOB *pElems; | 
 | } CABSTRBLOB; | 
 |  | 
 | typedef struct tagCABOOL { | 
 |     ULONG cElems; | 
 |     VARIANT_BOOL *pElems; | 
 | } CABOOL; | 
 |  | 
 | typedef struct tagCASCODE { | 
 |     ULONG cElems; | 
 |     SCODE *pElems; | 
 | } CASCODE; | 
 |  | 
 | typedef struct tagCAPROPVARIANT { | 
 |     ULONG cElems; | 
 |     PROPVARIANT *pElems; | 
 | } CAPROPVARIANT; | 
 |  | 
 | typedef struct tagCAH { | 
 |     ULONG cElems; | 
 |     LARGE_INTEGER *pElems; | 
 | } CAH; | 
 |  | 
 | typedef struct tagCAUH { | 
 |     ULONG cElems; | 
 |     ULARGE_INTEGER *pElems; | 
 | } CAUH; | 
 |  | 
 | typedef struct tagCALPSTR { | 
 |     ULONG cElems; | 
 |     LPSTR *pElems; | 
 | } CALPSTR; | 
 |  | 
 | typedef struct tagCALPWSTR { | 
 |     ULONG cElems; | 
 |     LPWSTR *pElems; | 
 | } CALPWSTR; | 
 |  | 
 | typedef struct tagCAFILETIME { | 
 |     ULONG cElems; | 
 |     FILETIME *pElems; | 
 | } CAFILETIME; | 
 |  | 
 | typedef struct tagCACLIPDATA { | 
 |     ULONG cElems; | 
 |     CLIPDATA *pElems; | 
 | } CACLIPDATA; | 
 |  | 
 | typedef struct tagCACLSID { | 
 |     ULONG cElems; | 
 |     CLSID *pElems; | 
 | } CACLSID; | 
 |  | 
 | struct tagPROPVARIANT { | 
 |     VARTYPE vt; | 
 |     WORD wReserved1; | 
 |     WORD wReserved2; | 
 |     WORD wReserved3; | 
 |     union { | 
 |         char cVal; | 
 |         UCHAR bVal; | 
 |         short iVal; | 
 |         USHORT uiVal; | 
 |         VARIANT_BOOL boolVal; | 
 |         long lVal; | 
 |         ULONG ulVal; | 
 |         float fltVal; | 
 |         SCODE scode; | 
 |         LARGE_INTEGER hVal; | 
 |         ULARGE_INTEGER uhVal; | 
 |         double dblVal; | 
 |         CY cyVal; | 
 |         DATE date; | 
 |         FILETIME filetime; | 
 |         CLSID *puuid; | 
 |         BLOB blob; | 
 |         CLIPDATA *pclipdata; | 
 |         IStream *pStream; | 
 |         IStorage *pStorage; | 
 |         BSTR bstrVal; | 
 |         BSTRBLOB bstrblobVal; | 
 |         LPSTR pszVal; | 
 |         LPWSTR pwszVal; | 
 |         CAUB caub; | 
 |         CAI cai; | 
 |         CAUI caui; | 
 |         CABOOL cabool; | 
 |         CAL cal; | 
 |         CAUL caul; | 
 |         CAFLT caflt; | 
 |         CASCODE cascode; | 
 |         CAH cah; | 
 |         CAUH cauh; | 
 |         CADBL cadbl; | 
 |         CACY cacy; | 
 |         CADATE cadate; | 
 |         CAFILETIME cafiletime; | 
 |         CACLSID cauuid; | 
 |         CACLIPDATA caclipdata; | 
 |         CABSTR cabstr; | 
 |         CABSTRBLOB cabstrblob; | 
 |         CALPSTR calpstr; | 
 |         CALPWSTR calpwstr; | 
 |         CAPROPVARIANT capropvar; | 
 |     } DUMMYUNIONNAME; | 
 | }; | 
 |  | 
 | typedef struct tagPROPVARIANT *LPPROPVARIANT; | 
 |  | 
 | #define PRSPEC_INVALID (0x7fffffff) | 
 |  | 
 | #define PRSPEC_LPWSTR (0) | 
 |  | 
 | #define PRSPEC_PROPID (1) | 
 |  | 
 | typedef struct tagPROPSPEC { | 
 |     ULONG ulKind; | 
 |     union { | 
 |         PROPID propid; | 
 |         LPOLESTR lpwstr; | 
 |     } DUMMYUNIONNAME; | 
 | } PROPSPEC; | 
 |  | 
 | typedef struct tagSTATPROPSTG { | 
 |     LPOLESTR lpwstrName; | 
 |     PROPID propid; | 
 |     VARTYPE vt; | 
 | } STATPROPSTG; | 
 |  | 
 | typedef struct tagSTATPROPSETSTG { | 
 |     FMTID fmtid; | 
 |     CLSID clsid; | 
 |     DWORD grfFlags; | 
 |     FILETIME mtime; | 
 |     FILETIME ctime; | 
 |     FILETIME atime; | 
 |     DWORD dwOSVersion; | 
 | } STATPROPSETSTG; | 
 |  | 
 | /***************************************************************************** | 
 |  * IPropertyStorage interface | 
 |  */ | 
 | DEFINE_GUID(IID_IPropertyStorage, 0x00000138, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IPropertyStorage : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE ReadMultiple( | 
 |         ULONG cpspec, | 
 |         const PROPSPEC rgpspec[], | 
 |         PROPVARIANT rgpropvar[]) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE WriteMultiple( | 
 |         ULONG cpspec, | 
 |         const PROPSPEC rgpspec[], | 
 |         const PROPVARIANT rgpropvar[], | 
 |         PROPID propidNameFirst) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DeleteMultiple( | 
 |         ULONG cpspec, | 
 |         const PROPSPEC rgpspec[]) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames( | 
 |         ULONG cpropid, | 
 |         const PROPID rgpropid[], | 
 |         LPOLESTR rglpwstrName[]) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE WritePropertyNames( | 
 |         ULONG cpropid, | 
 |         const PROPID rgpropid[], | 
 |         const LPOLESTR rglpwstrName[]) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE DeletePropertyNames( | 
 |         ULONG cpropid, | 
 |         const PROPID rgpropid[]) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Commit( | 
 |         DWORD grfCommitFlags) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Revert( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Enum( | 
 |         IEnumSTATPROPSTG** ppenum) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetTimes( | 
 |         const FILETIME* pctime, | 
 |         const FILETIME* patime, | 
 |         const FILETIME* pmtime) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetClass( | 
 |         REFCLSID clsid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Stat( | 
 |         STATPROPSETSTG* statpsstg) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IPropertyStorageVtbl IPropertyStorageVtbl; | 
 | struct IPropertyStorage { | 
 |     const IPropertyStorageVtbl* lpVtbl; | 
 | }; | 
 | struct IPropertyStorageVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IPropertyStorage* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IPropertyStorage* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IPropertyStorage* This); | 
 |  | 
 |     /*** IPropertyStorage methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *ReadMultiple)( | 
 |         IPropertyStorage* This, | 
 |         ULONG cpspec, | 
 |         const PROPSPEC rgpspec[], | 
 |         PROPVARIANT rgpropvar[]); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *WriteMultiple)( | 
 |         IPropertyStorage* This, | 
 |         ULONG cpspec, | 
 |         const PROPSPEC rgpspec[], | 
 |         const PROPVARIANT rgpropvar[], | 
 |         PROPID propidNameFirst); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DeleteMultiple)( | 
 |         IPropertyStorage* This, | 
 |         ULONG cpspec, | 
 |         const PROPSPEC rgpspec[]); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ReadPropertyNames)( | 
 |         IPropertyStorage* This, | 
 |         ULONG cpropid, | 
 |         const PROPID rgpropid[], | 
 |         LPOLESTR rglpwstrName[]); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *WritePropertyNames)( | 
 |         IPropertyStorage* This, | 
 |         ULONG cpropid, | 
 |         const PROPID rgpropid[], | 
 |         const LPOLESTR rglpwstrName[]); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *DeletePropertyNames)( | 
 |         IPropertyStorage* This, | 
 |         ULONG cpropid, | 
 |         const PROPID rgpropid[]); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Commit)( | 
 |         IPropertyStorage* This, | 
 |         DWORD grfCommitFlags); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Revert)( | 
 |         IPropertyStorage* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Enum)( | 
 |         IPropertyStorage* This, | 
 |         IEnumSTATPROPSTG** ppenum); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetTimes)( | 
 |         IPropertyStorage* This, | 
 |         const FILETIME* pctime, | 
 |         const FILETIME* patime, | 
 |         const FILETIME* pmtime); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetClass)( | 
 |         IPropertyStorage* This, | 
 |         REFCLSID clsid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Stat)( | 
 |         IPropertyStorage* This, | 
 |         STATPROPSETSTG* statpsstg); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IPropertyStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IPropertyStorage_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IPropertyStorage_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPropertyStorage methods ***/ | 
 | #define IPropertyStorage_ReadMultiple(p,a,b,c) (p)->lpVtbl->ReadMultiple(p,a,b,c) | 
 | #define IPropertyStorage_WriteMultiple(p,a,b,c,d) (p)->lpVtbl->WriteMultiple(p,a,b,c,d) | 
 | #define IPropertyStorage_DeleteMultiple(p,a,b) (p)->lpVtbl->DeleteMultiple(p,a,b) | 
 | #define IPropertyStorage_ReadPropertyNames(p,a,b,c) (p)->lpVtbl->ReadPropertyNames(p,a,b,c) | 
 | #define IPropertyStorage_WritePropertyNames(p,a,b,c) (p)->lpVtbl->WritePropertyNames(p,a,b,c) | 
 | #define IPropertyStorage_DeletePropertyNames(p,a,b) (p)->lpVtbl->DeletePropertyNames(p,a,b) | 
 | #define IPropertyStorage_Commit(p,a) (p)->lpVtbl->Commit(p,a) | 
 | #define IPropertyStorage_Revert(p) (p)->lpVtbl->Revert(p) | 
 | #define IPropertyStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) | 
 | #define IPropertyStorage_SetTimes(p,a,b,c) (p)->lpVtbl->SetTimes(p,a,b,c) | 
 | #define IPropertyStorage_SetClass(p,a) (p)->lpVtbl->SetClass(p,a) | 
 | #define IPropertyStorage_Stat(p,a) (p)->lpVtbl->Stat(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IPropertyStorage_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPropertyStorage methods ***/ \ | 
 |     STDMETHOD_(HRESULT,ReadMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], PROPVARIANT rgpropvar[]) PURE; \ | 
 |     STDMETHOD_(HRESULT,WriteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[], const PROPVARIANT rgpropvar[], PROPID propidNameFirst) PURE; \ | 
 |     STDMETHOD_(HRESULT,DeleteMultiple)(THIS_ ULONG cpspec, const PROPSPEC rgpspec[]) PURE; \ | 
 |     STDMETHOD_(HRESULT,ReadPropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], LPOLESTR rglpwstrName[]) PURE; \ | 
 |     STDMETHOD_(HRESULT,WritePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[], const LPOLESTR rglpwstrName[]) PURE; \ | 
 |     STDMETHOD_(HRESULT,DeletePropertyNames)(THIS_ ULONG cpropid, const PROPID rgpropid[]) PURE; \ | 
 |     STDMETHOD_(HRESULT,Commit)(THIS_ DWORD grfCommitFlags) PURE; \ | 
 |     STDMETHOD_(HRESULT,Revert)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSTG** ppenum) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetTimes)(THIS_ const FILETIME* pctime, const FILETIME* patime, const FILETIME* pmtime) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetClass)(THIS_ REFCLSID clsid) PURE; \ | 
 |     STDMETHOD_(HRESULT,Stat)(THIS_ STATPROPSETSTG* statpsstg) PURE; | 
 |  | 
 | HRESULT CALLBACK IPropertyStorage_ReadMultiple_Proxy( | 
 |     IPropertyStorage* This, | 
 |     ULONG cpspec, | 
 |     const PROPSPEC rgpspec[], | 
 |     PROPVARIANT rgpropvar[]); | 
 | void __RPC_STUB IPropertyStorage_ReadMultiple_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_WriteMultiple_Proxy( | 
 |     IPropertyStorage* This, | 
 |     ULONG cpspec, | 
 |     const PROPSPEC rgpspec[], | 
 |     const PROPVARIANT rgpropvar[], | 
 |     PROPID propidNameFirst); | 
 | void __RPC_STUB IPropertyStorage_WriteMultiple_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_DeleteMultiple_Proxy( | 
 |     IPropertyStorage* This, | 
 |     ULONG cpspec, | 
 |     const PROPSPEC rgpspec[]); | 
 | void __RPC_STUB IPropertyStorage_DeleteMultiple_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_ReadPropertyNames_Proxy( | 
 |     IPropertyStorage* This, | 
 |     ULONG cpropid, | 
 |     const PROPID rgpropid[], | 
 |     LPOLESTR rglpwstrName[]); | 
 | void __RPC_STUB IPropertyStorage_ReadPropertyNames_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_WritePropertyNames_Proxy( | 
 |     IPropertyStorage* This, | 
 |     ULONG cpropid, | 
 |     const PROPID rgpropid[], | 
 |     const LPOLESTR rglpwstrName[]); | 
 | void __RPC_STUB IPropertyStorage_WritePropertyNames_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_DeletePropertyNames_Proxy( | 
 |     IPropertyStorage* This, | 
 |     ULONG cpropid, | 
 |     const PROPID rgpropid[]); | 
 | void __RPC_STUB IPropertyStorage_DeletePropertyNames_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_Commit_Proxy( | 
 |     IPropertyStorage* This, | 
 |     DWORD grfCommitFlags); | 
 | void __RPC_STUB IPropertyStorage_Commit_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_Revert_Proxy( | 
 |     IPropertyStorage* This); | 
 | void __RPC_STUB IPropertyStorage_Revert_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_Enum_Proxy( | 
 |     IPropertyStorage* This, | 
 |     IEnumSTATPROPSTG** ppenum); | 
 | void __RPC_STUB IPropertyStorage_Enum_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_SetTimes_Proxy( | 
 |     IPropertyStorage* This, | 
 |     const FILETIME* pctime, | 
 |     const FILETIME* patime, | 
 |     const FILETIME* pmtime); | 
 | void __RPC_STUB IPropertyStorage_SetTimes_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_SetClass_Proxy( | 
 |     IPropertyStorage* This, | 
 |     REFCLSID clsid); | 
 | void __RPC_STUB IPropertyStorage_SetClass_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertyStorage_Stat_Proxy( | 
 |     IPropertyStorage* This, | 
 |     STATPROPSETSTG* statpsstg); | 
 | void __RPC_STUB IPropertyStorage_Stat_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IPropertySetStorage IPropertySetStorage; | 
 | typedef IPropertySetStorage *LPPROPERTYSETSTORAGE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IPropertySetStorage interface | 
 |  */ | 
 | DEFINE_GUID(IID_IPropertySetStorage, 0x0000013a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IPropertySetStorage : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Create( | 
 |         REFFMTID rfmtid, | 
 |         const CLSID* pclsid, | 
 |         DWORD grfFlags, | 
 |         DWORD grfMode, | 
 |         IPropertyStorage** ppprstg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Open( | 
 |         REFFMTID rfmtid, | 
 |         DWORD grfMode, | 
 |         IPropertyStorage** ppprstg) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Delete( | 
 |         REFFMTID rfmtid) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Enum( | 
 |         IEnumSTATPROPSETSTG** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IPropertySetStorageVtbl IPropertySetStorageVtbl; | 
 | struct IPropertySetStorage { | 
 |     const IPropertySetStorageVtbl* lpVtbl; | 
 | }; | 
 | struct IPropertySetStorageVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IPropertySetStorage* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IPropertySetStorage* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IPropertySetStorage* This); | 
 |  | 
 |     /*** IPropertySetStorage methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Create)( | 
 |         IPropertySetStorage* This, | 
 |         REFFMTID rfmtid, | 
 |         const CLSID* pclsid, | 
 |         DWORD grfFlags, | 
 |         DWORD grfMode, | 
 |         IPropertyStorage** ppprstg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Open)( | 
 |         IPropertySetStorage* This, | 
 |         REFFMTID rfmtid, | 
 |         DWORD grfMode, | 
 |         IPropertyStorage** ppprstg); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Delete)( | 
 |         IPropertySetStorage* This, | 
 |         REFFMTID rfmtid); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Enum)( | 
 |         IPropertySetStorage* This, | 
 |         IEnumSTATPROPSETSTG** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IPropertySetStorage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IPropertySetStorage_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IPropertySetStorage_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IPropertySetStorage methods ***/ | 
 | #define IPropertySetStorage_Create(p,a,b,c,d,e) (p)->lpVtbl->Create(p,a,b,c,d,e) | 
 | #define IPropertySetStorage_Open(p,a,b,c) (p)->lpVtbl->Open(p,a,b,c) | 
 | #define IPropertySetStorage_Delete(p,a) (p)->lpVtbl->Delete(p,a) | 
 | #define IPropertySetStorage_Enum(p,a) (p)->lpVtbl->Enum(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IPropertySetStorage_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IPropertySetStorage methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Create)(THIS_ REFFMTID rfmtid, const CLSID* pclsid, DWORD grfFlags, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \ | 
 |     STDMETHOD_(HRESULT,Open)(THIS_ REFFMTID rfmtid, DWORD grfMode, IPropertyStorage** ppprstg) PURE; \ | 
 |     STDMETHOD_(HRESULT,Delete)(THIS_ REFFMTID rfmtid) PURE; \ | 
 |     STDMETHOD_(HRESULT,Enum)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IPropertySetStorage_Create_Proxy( | 
 |     IPropertySetStorage* This, | 
 |     REFFMTID rfmtid, | 
 |     const CLSID* pclsid, | 
 |     DWORD grfFlags, | 
 |     DWORD grfMode, | 
 |     IPropertyStorage** ppprstg); | 
 | void __RPC_STUB IPropertySetStorage_Create_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertySetStorage_Open_Proxy( | 
 |     IPropertySetStorage* This, | 
 |     REFFMTID rfmtid, | 
 |     DWORD grfMode, | 
 |     IPropertyStorage** ppprstg); | 
 | void __RPC_STUB IPropertySetStorage_Open_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertySetStorage_Delete_Proxy( | 
 |     IPropertySetStorage* This, | 
 |     REFFMTID rfmtid); | 
 | void __RPC_STUB IPropertySetStorage_Delete_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IPropertySetStorage_Enum_Proxy( | 
 |     IPropertySetStorage* This, | 
 |     IEnumSTATPROPSETSTG** ppenum); | 
 | void __RPC_STUB IPropertySetStorage_Enum_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef IEnumSTATPROPSTG *LPENUMSTATPROPSTG; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumSTATPROPSTG interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumSTATPROPSTG, 0x00000139, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumSTATPROPSTG : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         STATPROPSTG* rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumSTATPROPSTG** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumSTATPROPSTGVtbl IEnumSTATPROPSTGVtbl; | 
 | struct IEnumSTATPROPSTG { | 
 |     const IEnumSTATPROPSTGVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumSTATPROPSTGVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumSTATPROPSTG* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumSTATPROPSTG* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumSTATPROPSTG* This); | 
 |  | 
 |     /*** IEnumSTATPROPSTG methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumSTATPROPSTG* This, | 
 |         ULONG celt, | 
 |         STATPROPSTG* rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumSTATPROPSTG* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumSTATPROPSTG* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumSTATPROPSTG* This, | 
 |         IEnumSTATPROPSTG** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumSTATPROPSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumSTATPROPSTG_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumSTATPROPSTG_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumSTATPROPSTG methods ***/ | 
 | #define IEnumSTATPROPSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumSTATPROPSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumSTATPROPSTG_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumSTATPROPSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumSTATPROPSTG_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumSTATPROPSTG methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSTG* rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSTG** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumSTATPROPSTG_RemoteNext_Proxy( | 
 |     IEnumSTATPROPSTG* This, | 
 |     ULONG celt, | 
 |     STATPROPSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumSTATPROPSTG_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATPROPSTG_Next_Proxy( | 
 |     IEnumSTATPROPSTG* This, | 
 |     ULONG celt, | 
 |     STATPROPSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumSTATPROPSTG_Next_Stub( | 
 |     IEnumSTATPROPSTG* This, | 
 |     ULONG celt, | 
 |     STATPROPSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumSTATPROPSTG_Skip_Proxy( | 
 |     IEnumSTATPROPSTG* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumSTATPROPSTG_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATPROPSTG_Reset_Proxy( | 
 |     IEnumSTATPROPSTG* This); | 
 | void __RPC_STUB IEnumSTATPROPSTG_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATPROPSTG_Clone_Proxy( | 
 |     IEnumSTATPROPSTG* This, | 
 |     IEnumSTATPROPSTG** ppenum); | 
 | void __RPC_STUB IEnumSTATPROPSTG_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; | 
 |  | 
 | /***************************************************************************** | 
 |  * IEnumSTATPROPSETSTG interface | 
 |  */ | 
 | DEFINE_GUID(IID_IEnumSTATPROPSETSTG, 0x0000013b, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IEnumSTATPROPSETSTG : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE Next( | 
 |         ULONG celt, | 
 |         STATPROPSETSTG* rgelt, | 
 |         ULONG* pceltFetched) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Skip( | 
 |         ULONG celt) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Reset( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE Clone( | 
 |         IEnumSTATPROPSETSTG** ppenum) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IEnumSTATPROPSETSTGVtbl IEnumSTATPROPSETSTGVtbl; | 
 | struct IEnumSTATPROPSETSTG { | 
 |     const IEnumSTATPROPSETSTGVtbl* lpVtbl; | 
 | }; | 
 | struct IEnumSTATPROPSETSTGVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IEnumSTATPROPSETSTG* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IEnumSTATPROPSETSTG* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IEnumSTATPROPSETSTG* This); | 
 |  | 
 |     /*** IEnumSTATPROPSETSTG methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *Next)( | 
 |         IEnumSTATPROPSETSTG* This, | 
 |         ULONG celt, | 
 |         STATPROPSETSTG* rgelt, | 
 |         ULONG* pceltFetched); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Skip)( | 
 |         IEnumSTATPROPSETSTG* This, | 
 |         ULONG celt); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Reset)( | 
 |         IEnumSTATPROPSETSTG* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *Clone)( | 
 |         IEnumSTATPROPSETSTG* This, | 
 |         IEnumSTATPROPSETSTG** ppenum); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IEnumSTATPROPSETSTG_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IEnumSTATPROPSETSTG_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IEnumSTATPROPSETSTG_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IEnumSTATPROPSETSTG methods ***/ | 
 | #define IEnumSTATPROPSETSTG_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) | 
 | #define IEnumSTATPROPSETSTG_Skip(p,a) (p)->lpVtbl->Skip(p,a) | 
 | #define IEnumSTATPROPSETSTG_Reset(p) (p)->lpVtbl->Reset(p) | 
 | #define IEnumSTATPROPSETSTG_Clone(p,a) (p)->lpVtbl->Clone(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IEnumSTATPROPSETSTG_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IEnumSTATPROPSETSTG methods ***/ \ | 
 |     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, STATPROPSETSTG* rgelt, ULONG* pceltFetched) PURE; \ | 
 |     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \ | 
 |     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumSTATPROPSETSTG** ppenum) PURE; | 
 |  | 
 | HRESULT CALLBACK IEnumSTATPROPSETSTG_RemoteNext_Proxy( | 
 |     IEnumSTATPROPSETSTG* This, | 
 |     ULONG celt, | 
 |     STATPROPSETSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | void __RPC_STUB IEnumSTATPROPSETSTG_RemoteNext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATPROPSETSTG_Next_Proxy( | 
 |     IEnumSTATPROPSETSTG* This, | 
 |     ULONG celt, | 
 |     STATPROPSETSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT __RPC_STUB IEnumSTATPROPSETSTG_Next_Stub( | 
 |     IEnumSTATPROPSETSTG* This, | 
 |     ULONG celt, | 
 |     STATPROPSETSTG* rgelt, | 
 |     ULONG* pceltFetched); | 
 | HRESULT CALLBACK IEnumSTATPROPSETSTG_Skip_Proxy( | 
 |     IEnumSTATPROPSETSTG* This, | 
 |     ULONG celt); | 
 | void __RPC_STUB IEnumSTATPROPSETSTG_Skip_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATPROPSETSTG_Reset_Proxy( | 
 |     IEnumSTATPROPSETSTG* This); | 
 | void __RPC_STUB IEnumSTATPROPSETSTG_Reset_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IEnumSTATPROPSETSTG_Clone_Proxy( | 
 |     IEnumSTATPROPSETSTG* This, | 
 |     IEnumSTATPROPSETSTG** ppenum); | 
 | void __RPC_STUB IEnumSTATPROPSETSTG_Clone_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IClientSecurity IClientSecurity; | 
 | typedef struct tagSOLE_AUTHENTICATION_SERVICE { | 
 |     DWORD dwAuthnSvc; | 
 |     DWORD dwAuthzSvc; | 
 |     OLECHAR *pPrincipalName; | 
 |     HRESULT hr; | 
 | } SOLE_AUTHENTICATION_SERVICE; | 
 |  | 
 | typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE; | 
 |  | 
 | typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { | 
 |     EOAC_NONE = 0x0, | 
 |     EOAC_MUTUAL_AUTH = 0x1, | 
 |     EOAC_CLOAKING = 0x10, | 
 |     EOAC_SECURE_REFS = 0x2, | 
 |     EOAC_ACCESS_CONTROL = 0x4, | 
 |     EOAC_APPID = 0x8 | 
 | } EOLE_AUTHENTICATION_CAPABILITIES; | 
 |  | 
 | /***************************************************************************** | 
 |  * IClientSecurity interface | 
 |  */ | 
 | DEFINE_GUID(IID_IClientSecurity, 0x0000013d, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IClientSecurity : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE QueryBlanket( | 
 |         IUnknown* pProxy, | 
 |         DWORD* pAuthnSvc, | 
 |         DWORD* pAuthzSvc, | 
 |         OLECHAR** pServerPrincName, | 
 |         DWORD* pAuthnLevel, | 
 |         DWORD* pImpLevel, | 
 |         void** pAuthInfo, | 
 |         DWORD* pCapabilites) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE SetBlanket( | 
 |         IUnknown* pProxy, | 
 |         DWORD AuthnSvc, | 
 |         DWORD AuthzSvc, | 
 |         OLECHAR* pServerPrincName, | 
 |         DWORD AuthnLevel, | 
 |         DWORD ImpLevel, | 
 |         void* pAuthInfo, | 
 |         DWORD Capabilities) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE CopyProxy( | 
 |         IUnknown* pProxy, | 
 |         IUnknown** ppCopy) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IClientSecurityVtbl IClientSecurityVtbl; | 
 | struct IClientSecurity { | 
 |     const IClientSecurityVtbl* lpVtbl; | 
 | }; | 
 | struct IClientSecurityVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IClientSecurity* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IClientSecurity* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IClientSecurity* This); | 
 |  | 
 |     /*** IClientSecurity methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryBlanket)( | 
 |         IClientSecurity* This, | 
 |         IUnknown* pProxy, | 
 |         DWORD* pAuthnSvc, | 
 |         DWORD* pAuthzSvc, | 
 |         OLECHAR** pServerPrincName, | 
 |         DWORD* pAuthnLevel, | 
 |         DWORD* pImpLevel, | 
 |         void** pAuthInfo, | 
 |         DWORD* pCapabilites); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *SetBlanket)( | 
 |         IClientSecurity* This, | 
 |         IUnknown* pProxy, | 
 |         DWORD AuthnSvc, | 
 |         DWORD AuthzSvc, | 
 |         OLECHAR* pServerPrincName, | 
 |         DWORD AuthnLevel, | 
 |         DWORD ImpLevel, | 
 |         void* pAuthInfo, | 
 |         DWORD Capabilities); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *CopyProxy)( | 
 |         IClientSecurity* This, | 
 |         IUnknown* pProxy, | 
 |         IUnknown** ppCopy); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IClientSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IClientSecurity_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IClientSecurity_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IClientSecurity methods ***/ | 
 | #define IClientSecurity_QueryBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g,h) | 
 | #define IClientSecurity_SetBlanket(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->SetBlanket(p,a,b,c,d,e,f,g,h) | 
 | #define IClientSecurity_CopyProxy(p,a,b) (p)->lpVtbl->CopyProxy(p,a,b) | 
 |  | 
 | #endif | 
 |  | 
 | #define IClientSecurity_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IClientSecurity methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryBlanket)(THIS_ IUnknown* pProxy, DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, void** pAuthInfo, DWORD* pCapabilites) PURE; \ | 
 |     STDMETHOD_(HRESULT,SetBlanket)(THIS_ IUnknown* pProxy, DWORD AuthnSvc, DWORD AuthzSvc, OLECHAR* pServerPrincName, DWORD AuthnLevel, DWORD ImpLevel, void* pAuthInfo, DWORD Capabilities) PURE; \ | 
 |     STDMETHOD_(HRESULT,CopyProxy)(THIS_ IUnknown* pProxy, IUnknown** ppCopy) PURE; | 
 |  | 
 | HRESULT CALLBACK IClientSecurity_QueryBlanket_Proxy( | 
 |     IClientSecurity* This, | 
 |     IUnknown* pProxy, | 
 |     DWORD* pAuthnSvc, | 
 |     DWORD* pAuthzSvc, | 
 |     OLECHAR** pServerPrincName, | 
 |     DWORD* pAuthnLevel, | 
 |     DWORD* pImpLevel, | 
 |     void** pAuthInfo, | 
 |     DWORD* pCapabilites); | 
 | void __RPC_STUB IClientSecurity_QueryBlanket_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IClientSecurity_SetBlanket_Proxy( | 
 |     IClientSecurity* This, | 
 |     IUnknown* pProxy, | 
 |     DWORD AuthnSvc, | 
 |     DWORD AuthzSvc, | 
 |     OLECHAR* pServerPrincName, | 
 |     DWORD AuthnLevel, | 
 |     DWORD ImpLevel, | 
 |     void* pAuthInfo, | 
 |     DWORD Capabilities); | 
 | void __RPC_STUB IClientSecurity_SetBlanket_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IClientSecurity_CopyProxy_Proxy( | 
 |     IClientSecurity* This, | 
 |     IUnknown* pProxy, | 
 |     IUnknown** ppCopy); | 
 | void __RPC_STUB IClientSecurity_CopyProxy_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IServerSecurity IServerSecurity; | 
 | /***************************************************************************** | 
 |  * IServerSecurity interface | 
 |  */ | 
 | DEFINE_GUID(IID_IServerSecurity, 0x0000013e, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IServerSecurity : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE QueryBlanket( | 
 |         DWORD* pAuthnSvc, | 
 |         DWORD* pAuthzSvc, | 
 |         OLECHAR** pServerPrincName, | 
 |         DWORD* pAuthnLevel, | 
 |         DWORD* pImpLevel, | 
 |         void** pPrivs, | 
 |         DWORD* pCapabilities) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE ImpersonateClient( | 
 |         ) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE RevertToSelf( | 
 |         ) = 0; | 
 |  | 
 |     virtual BOOL STDMETHODCALLTYPE IsImpersonating( | 
 |         ) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IServerSecurityVtbl IServerSecurityVtbl; | 
 | struct IServerSecurity { | 
 |     const IServerSecurityVtbl* lpVtbl; | 
 | }; | 
 | struct IServerSecurityVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IServerSecurity* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IServerSecurity* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IServerSecurity* This); | 
 |  | 
 |     /*** IServerSecurity methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryBlanket)( | 
 |         IServerSecurity* This, | 
 |         DWORD* pAuthnSvc, | 
 |         DWORD* pAuthzSvc, | 
 |         OLECHAR** pServerPrincName, | 
 |         DWORD* pAuthnLevel, | 
 |         DWORD* pImpLevel, | 
 |         void** pPrivs, | 
 |         DWORD* pCapabilities); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *ImpersonateClient)( | 
 |         IServerSecurity* This); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *RevertToSelf)( | 
 |         IServerSecurity* This); | 
 |  | 
 |     BOOL (STDMETHODCALLTYPE *IsImpersonating)( | 
 |         IServerSecurity* This); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IServerSecurity_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IServerSecurity_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IServerSecurity_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IServerSecurity methods ***/ | 
 | #define IServerSecurity_QueryBlanket(p,a,b,c,d,e,f,g) (p)->lpVtbl->QueryBlanket(p,a,b,c,d,e,f,g) | 
 | #define IServerSecurity_ImpersonateClient(p) (p)->lpVtbl->ImpersonateClient(p) | 
 | #define IServerSecurity_RevertToSelf(p) (p)->lpVtbl->RevertToSelf(p) | 
 | #define IServerSecurity_IsImpersonating(p) (p)->lpVtbl->IsImpersonating(p) | 
 |  | 
 | #endif | 
 |  | 
 | #define IServerSecurity_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IServerSecurity methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryBlanket)(THIS_ DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, void** pPrivs, DWORD* pCapabilities) PURE; \ | 
 |     STDMETHOD_(HRESULT,ImpersonateClient)(THIS) PURE; \ | 
 |     STDMETHOD_(HRESULT,RevertToSelf)(THIS) PURE; \ | 
 |     STDMETHOD_(BOOL,IsImpersonating)(THIS) PURE; | 
 |  | 
 | HRESULT CALLBACK IServerSecurity_QueryBlanket_Proxy( | 
 |     IServerSecurity* This, | 
 |     DWORD* pAuthnSvc, | 
 |     DWORD* pAuthzSvc, | 
 |     OLECHAR** pServerPrincName, | 
 |     DWORD* pAuthnLevel, | 
 |     DWORD* pImpLevel, | 
 |     void** pPrivs, | 
 |     DWORD* pCapabilities); | 
 | void __RPC_STUB IServerSecurity_QueryBlanket_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IServerSecurity_ImpersonateClient_Proxy( | 
 |     IServerSecurity* This); | 
 | void __RPC_STUB IServerSecurity_ImpersonateClient_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IServerSecurity_RevertToSelf_Proxy( | 
 |     IServerSecurity* This); | 
 | void __RPC_STUB IServerSecurity_RevertToSelf_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | BOOL CALLBACK IServerSecurity_IsImpersonating_Proxy( | 
 |     IServerSecurity* This); | 
 | void __RPC_STUB IServerSecurity_IsImpersonating_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef struct IAsyncSetup IAsyncSetup; | 
 | /***************************************************************************** | 
 |  * IAsyncSetup interface | 
 |  */ | 
 | DEFINE_GUID(IID_IAsyncSetup, 0x00000024, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IAsyncSetup : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE GetAsyncManager( | 
 |         REFIID riid, | 
 |         IUnknown* pOuter, | 
 |         DWORD dwFlags, | 
 |         IUnknown** ppInner, | 
 |         IAsyncManager** ppAsyncMgr) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IAsyncSetupVtbl IAsyncSetupVtbl; | 
 | struct IAsyncSetup { | 
 |     const IAsyncSetupVtbl* lpVtbl; | 
 | }; | 
 | struct IAsyncSetupVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IAsyncSetup* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IAsyncSetup* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IAsyncSetup* This); | 
 |  | 
 |     /*** IAsyncSetup methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *GetAsyncManager)( | 
 |         IAsyncSetup* This, | 
 |         REFIID riid, | 
 |         IUnknown* pOuter, | 
 |         DWORD dwFlags, | 
 |         IUnknown** ppInner, | 
 |         IAsyncManager** ppAsyncMgr); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IAsyncSetup_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IAsyncSetup_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IAsyncSetup_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IAsyncSetup methods ***/ | 
 | #define IAsyncSetup_GetAsyncManager(p,a,b,c,d,e) (p)->lpVtbl->GetAsyncManager(p,a,b,c,d,e) | 
 |  | 
 | #endif | 
 |  | 
 | #define IAsyncSetup_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IAsyncSetup methods ***/ \ | 
 |     STDMETHOD_(HRESULT,GetAsyncManager)(THIS_ REFIID riid, IUnknown* pOuter, DWORD dwFlags, IUnknown** ppInner, IAsyncManager** ppAsyncMgr) PURE; | 
 |  | 
 | HRESULT CALLBACK IAsyncSetup_GetAsyncManager_Proxy( | 
 |     IAsyncSetup* This, | 
 |     REFIID riid, | 
 |     IUnknown* pOuter, | 
 |     DWORD dwFlags, | 
 |     IUnknown** ppInner, | 
 |     IAsyncManager** ppAsyncMgr); | 
 | void __RPC_STUB IAsyncSetup_GetAsyncManager_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | typedef enum tagDCOM_CALL_STATE { | 
 |     DCOM_NONE = 0, | 
 |     DCOM_CALL_COMPLETE = 1, | 
 |     DCOM_CALL_CANCELED = 2 | 
 | } DCOM_CALL_STATE; | 
 |  | 
 | /***************************************************************************** | 
 |  * IAsyncManager interface | 
 |  */ | 
 | DEFINE_GUID(IID_IAsyncManager, 0x0000002a, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46); | 
 | #if defined(__cplusplus) && !defined(CINTERFACE) | 
 | struct IAsyncManager : public IUnknown | 
 | { | 
 |     virtual HRESULT STDMETHODCALLTYPE CompleteCall( | 
 |         HRESULT Result) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetCallContext( | 
 |         REFIID riid, | 
 |         void** pInterface) = 0; | 
 |  | 
 |     virtual HRESULT STDMETHODCALLTYPE GetState( | 
 |         ULONG* pulStateFlags) = 0; | 
 |  | 
 | }; | 
 | #else | 
 | typedef struct IAsyncManagerVtbl IAsyncManagerVtbl; | 
 | struct IAsyncManager { | 
 |     const IAsyncManagerVtbl* lpVtbl; | 
 | }; | 
 | struct IAsyncManagerVtbl { | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS | 
 |  | 
 |     /*** IUnknown methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *QueryInterface)( | 
 |         IAsyncManager* This, | 
 |         REFIID riid, | 
 |         void** ppvObject); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *AddRef)( | 
 |         IAsyncManager* This); | 
 |  | 
 |     ULONG (STDMETHODCALLTYPE *Release)( | 
 |         IAsyncManager* This); | 
 |  | 
 |     /*** IAsyncManager methods ***/ | 
 |     HRESULT (STDMETHODCALLTYPE *CompleteCall)( | 
 |         IAsyncManager* This, | 
 |         HRESULT Result); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetCallContext)( | 
 |         IAsyncManager* This, | 
 |         REFIID riid, | 
 |         void** pInterface); | 
 |  | 
 |     HRESULT (STDMETHODCALLTYPE *GetState)( | 
 |         IAsyncManager* This, | 
 |         ULONG* pulStateFlags); | 
 |  | 
 | }; | 
 |  | 
 | /*** IUnknown methods ***/ | 
 | #define IAsyncManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) | 
 | #define IAsyncManager_AddRef(p) (p)->lpVtbl->AddRef(p) | 
 | #define IAsyncManager_Release(p) (p)->lpVtbl->Release(p) | 
 | /*** IAsyncManager methods ***/ | 
 | #define IAsyncManager_CompleteCall(p,a) (p)->lpVtbl->CompleteCall(p,a) | 
 | #define IAsyncManager_GetCallContext(p,a,b) (p)->lpVtbl->GetCallContext(p,a,b) | 
 | #define IAsyncManager_GetState(p,a) (p)->lpVtbl->GetState(p,a) | 
 |  | 
 | #endif | 
 |  | 
 | #define IAsyncManager_METHODS \ | 
 |     ICOM_MSVTABLE_COMPAT_FIELDS \ | 
 |     /*** IUnknown methods ***/ \ | 
 |     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ | 
 |     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ | 
 |     STDMETHOD_(ULONG,Release)(THIS) PURE; \ | 
 |     /*** IAsyncManager methods ***/ \ | 
 |     STDMETHOD_(HRESULT,CompleteCall)(THIS_ HRESULT Result) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetCallContext)(THIS_ REFIID riid, void** pInterface) PURE; \ | 
 |     STDMETHOD_(HRESULT,GetState)(THIS_ ULONG* pulStateFlags) PURE; | 
 |  | 
 | HRESULT CALLBACK IAsyncManager_CompleteCall_Proxy( | 
 |     IAsyncManager* This, | 
 |     HRESULT Result); | 
 | void __RPC_STUB IAsyncManager_CompleteCall_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IAsyncManager_GetCallContext_Proxy( | 
 |     IAsyncManager* This, | 
 |     REFIID riid, | 
 |     void** pInterface); | 
 | void __RPC_STUB IAsyncManager_GetCallContext_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 | HRESULT CALLBACK IAsyncManager_GetState_Proxy( | 
 |     IAsyncManager* This, | 
 |     ULONG* pulStateFlags); | 
 | void __RPC_STUB IAsyncManager_GetState_Stub( | 
 |     struct IRpcStubBuffer* This, | 
 |     struct IRpcChannelBuffer* pRpcChannelBuffer, | 
 |     PRPC_MESSAGE pRpcMessage, | 
 |     DWORD* pdwStubPhase); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 | #endif /* __WIDL_OBJIDL_H */ |