/*** Autogenerated by WIDL 1.3.35 from ../../wine-1.3.35/include/wincodecsdk.idl - Do not edit ***/

#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include <rpc.h>
#include <rpcndr.h>

#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __WIDL_WINCODECSDK_H
#define __WIDL_WINCODECSDK_H

/* Forward declarations */

#ifndef __IWICMetadataHandlerInfo_FWD_DEFINED__
#define __IWICMetadataHandlerInfo_FWD_DEFINED__
typedef interface IWICMetadataHandlerInfo IWICMetadataHandlerInfo;
#endif

#ifndef __IWICMetadataReader_FWD_DEFINED__
#define __IWICMetadataReader_FWD_DEFINED__
typedef interface IWICMetadataReader IWICMetadataReader;
#endif

#ifndef __IWICMetadataWriter_FWD_DEFINED__
#define __IWICMetadataWriter_FWD_DEFINED__
typedef interface IWICMetadataWriter IWICMetadataWriter;
#endif

#ifndef __IWICMetadataBlockReader_FWD_DEFINED__
#define __IWICMetadataBlockReader_FWD_DEFINED__
typedef interface IWICMetadataBlockReader IWICMetadataBlockReader;
#endif

#ifndef __IWICMetadataBlockWriter_FWD_DEFINED__
#define __IWICMetadataBlockWriter_FWD_DEFINED__
typedef interface IWICMetadataBlockWriter IWICMetadataBlockWriter;
#endif

#ifndef __IWICPersistStream_FWD_DEFINED__
#define __IWICPersistStream_FWD_DEFINED__
typedef interface IWICPersistStream IWICPersistStream;
#endif

#ifndef __IWICComponentFactory_FWD_DEFINED__
#define __IWICComponentFactory_FWD_DEFINED__
typedef interface IWICComponentFactory IWICComponentFactory;
#endif

/* Headers for imported files */

#include <wincodec.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum WICPersistOptions {
    WICPersistOptionsDefault = 0x0,
    WICPersistOptionsLittleEndian = 0x1,
    WICPersistOptionsBigEndian = 0x2,
    WICPersistOptionsStrictFormat = 0x4,
    WICPersistOptionsNoCacheStream = 0x8,
    WICPersistOptionsMask = 0xffff
} WICPersistOptions;
typedef enum WICMetadataCreationOptions {
    WICMetadataCreationDefault = 0x0,
    WICMetadataCreationAllowUnknown = WICMetadataCreationDefault,
    WICMetadataCreationFailUnknown = 0x10000,
    WICMetadataCreationMask = 0xffff0000
} WICMetadataCreationOptions;
DEFINE_GUID(GUID_MetadataFormatUnknown, 0xa45e592f,0x9078,0x4a7c,0xad,0xb5,0x4e,0xdc,0x4f,0xd6,0x1b,0x1f);
DEFINE_GUID(GUID_MetadataFormatChunktEXt, 0x568d8936,0xc0a9,0x4923,0x90,0x5d,0xdf,0x2b,0x38,0x23,0x8f,0xbc);
DEFINE_GUID(CLSID_WICUnknownMetadataReader, 0x699745c2,0x5066,0x4b82,0xa8,0xe3,0xd4,0x04,0x78,0xdb,0xec,0x8c);
DEFINE_GUID(CLSID_WICUnknownMetadataWriter, 0xa09cca86,0x27ba,0x4f39,0x90,0x53,0x12,0x1f,0xa4,0xdc,0x08,0xfc);
DEFINE_GUID(CLSID_WICPngTextMetadataReader, 0x4b59afcc,0xb8c3,0x408a,0xb6,0x70,0x89,0xe5,0xfa,0xb6,0xfd,0xa7);
DEFINE_GUID(CLSID_WICPngTextMetadataWriter, 0xb5ebafb9,0x253e,0x4a72,0xa7,0x44,0x07,0x62,0xd2,0x68,0x56,0x83);
/*****************************************************************************
 * IWICMetadataHandlerInfo interface
 */
#ifndef __IWICMetadataHandlerInfo_INTERFACE_DEFINED__
#define __IWICMetadataHandlerInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICMetadataHandlerInfo, 0xaba958bf, 0xc672, 0x44d1, 0x8d,0x61, 0xce,0x6d,0xf2,0xe6,0x82,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("aba958bf-c672-44d1-8d61-ce6df2e682c2")
IWICMetadataHandlerInfo : public IWICComponentInfo
{
    virtual HRESULT STDMETHODCALLTYPE GetMetadataFormat(
        GUID *pguidMetadataFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetContainerFormats(
        UINT cContainerFormats,
        GUID *pguidContainerFormats,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeviceManufacturer(
        UINT cchDeviceManufacturer,
        WCHAR *wzDeviceManufacturer,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeviceModels(
        UINT cchDeviceModels,
        WCHAR *wzDeviceModels,
        UINT *pcchActual) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesRequireFullStream(
        BOOL *pfRequiresFullStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesSupportPadding(
        BOOL *pfSupportsPadding) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesRequireFixedSize(
        BOOL *pfFixedSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWICMetadataHandlerInfo, 0xaba958bf, 0xc672, 0x44d1, 0x8d,0x61, 0xce,0x6d,0xf2,0xe6,0x82,0xc2)
#endif
#else
typedef struct IWICMetadataHandlerInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICMetadataHandlerInfo* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICMetadataHandlerInfo* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICMetadataHandlerInfo* This);

    /*** IWICComponentInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetComponentType)(
        IWICMetadataHandlerInfo* This,
        WICComponentType *pType);

    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
        IWICMetadataHandlerInfo* This,
        CLSID *pclsid);

    HRESULT (STDMETHODCALLTYPE *GetSigningStatus)(
        IWICMetadataHandlerInfo* This,
        DWORD *pStatus);

    HRESULT (STDMETHODCALLTYPE *GetAuthor)(
        IWICMetadataHandlerInfo* This,
        UINT cchAuthor,
        WCHAR *wzAuthor,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetVendorGUID)(
        IWICMetadataHandlerInfo* This,
        GUID *pguidVendor);

    HRESULT (STDMETHODCALLTYPE *GetVersion)(
        IWICMetadataHandlerInfo* This,
        UINT cchVersion,
        WCHAR *wzVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetSpecVersion)(
        IWICMetadataHandlerInfo* This,
        UINT cchSpecVersion,
        WCHAR *wzSpecVersion,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetFriendlyName)(
        IWICMetadataHandlerInfo* This,
        UINT cchFriendlyName,
        WCHAR *wzFriendlyName,
        UINT *pcchActual);

    /*** IWICMetadataHandlerInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMetadataFormat)(
        IWICMetadataHandlerInfo* This,
        GUID *pguidMetadataFormat);

    HRESULT (STDMETHODCALLTYPE *GetContainerFormats)(
        IWICMetadataHandlerInfo* This,
        UINT cContainerFormats,
        GUID *pguidContainerFormats,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceManufacturer)(
        IWICMetadataHandlerInfo* This,
        UINT cchDeviceManufacturer,
        WCHAR *wzDeviceManufacturer,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *GetDeviceModels)(
        IWICMetadataHandlerInfo* This,
        UINT cchDeviceModels,
        WCHAR *wzDeviceModels,
        UINT *pcchActual);

    HRESULT (STDMETHODCALLTYPE *DoesRequireFullStream)(
        IWICMetadataHandlerInfo* This,
        BOOL *pfRequiresFullStream);

    HRESULT (STDMETHODCALLTYPE *DoesSupportPadding)(
        IWICMetadataHandlerInfo* This,
        BOOL *pfSupportsPadding);

    HRESULT (STDMETHODCALLTYPE *DoesRequireFixedSize)(
        IWICMetadataHandlerInfo* This,
        BOOL *pfFixedSize);

    END_INTERFACE
} IWICMetadataHandlerInfoVtbl;
interface IWICMetadataHandlerInfo {
    CONST_VTBL IWICMetadataHandlerInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICMetadataHandlerInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICMetadataHandlerInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICMetadataHandlerInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IWICComponentInfo methods ***/
#define IWICMetadataHandlerInfo_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
#define IWICMetadataHandlerInfo_GetCLSID(This,pclsid) (This)->lpVtbl->GetCLSID(This,pclsid)
#define IWICMetadataHandlerInfo_GetSigningStatus(This,pStatus) (This)->lpVtbl->GetSigningStatus(This,pStatus)
#define IWICMetadataHandlerInfo_GetAuthor(This,cchAuthor,wzAuthor,pcchActual) (This)->lpVtbl->GetAuthor(This,cchAuthor,wzAuthor,pcchActual)
#define IWICMetadataHandlerInfo_GetVendorGUID(This,pguidVendor) (This)->lpVtbl->GetVendorGUID(This,pguidVendor)
#define IWICMetadataHandlerInfo_GetVersion(This,cchVersion,wzVersion,pcchActual) (This)->lpVtbl->GetVersion(This,cchVersion,wzVersion,pcchActual)
#define IWICMetadataHandlerInfo_GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual) (This)->lpVtbl->GetSpecVersion(This,cchSpecVersion,wzSpecVersion,pcchActual)
#define IWICMetadataHandlerInfo_GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual) (This)->lpVtbl->GetFriendlyName(This,cchFriendlyName,wzFriendlyName,pcchActual)
/*** IWICMetadataHandlerInfo methods ***/
#define IWICMetadataHandlerInfo_GetMetadataFormat(This,pguidMetadataFormat) (This)->lpVtbl->GetMetadataFormat(This,pguidMetadataFormat)
#define IWICMetadataHandlerInfo_GetContainerFormats(This,cContainerFormats,pguidContainerFormats,pcchActual) (This)->lpVtbl->GetContainerFormats(This,cContainerFormats,pguidContainerFormats,pcchActual)
#define IWICMetadataHandlerInfo_GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual) (This)->lpVtbl->GetDeviceManufacturer(This,cchDeviceManufacturer,wzDeviceManufacturer,pcchActual)
#define IWICMetadataHandlerInfo_GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual) (This)->lpVtbl->GetDeviceModels(This,cchDeviceModels,wzDeviceModels,pcchActual)
#define IWICMetadataHandlerInfo_DoesRequireFullStream(This,pfRequiresFullStream) (This)->lpVtbl->DoesRequireFullStream(This,pfRequiresFullStream)
#define IWICMetadataHandlerInfo_DoesSupportPadding(This,pfSupportsPadding) (This)->lpVtbl->DoesSupportPadding(This,pfSupportsPadding)
#define IWICMetadataHandlerInfo_DoesRequireFixedSize(This,pfFixedSize) (This)->lpVtbl->DoesRequireFixedSize(This,pfFixedSize)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICMetadataHandlerInfo_GetMetadataFormat_Proxy(
    IWICMetadataHandlerInfo* This,
    GUID *pguidMetadataFormat);
void __RPC_STUB IWICMetadataHandlerInfo_GetMetadataFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataHandlerInfo_GetContainerFormats_Proxy(
    IWICMetadataHandlerInfo* This,
    UINT cContainerFormats,
    GUID *pguidContainerFormats,
    UINT *pcchActual);
void __RPC_STUB IWICMetadataHandlerInfo_GetContainerFormats_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataHandlerInfo_GetDeviceManufacturer_Proxy(
    IWICMetadataHandlerInfo* This,
    UINT cchDeviceManufacturer,
    WCHAR *wzDeviceManufacturer,
    UINT *pcchActual);
void __RPC_STUB IWICMetadataHandlerInfo_GetDeviceManufacturer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataHandlerInfo_GetDeviceModels_Proxy(
    IWICMetadataHandlerInfo* This,
    UINT cchDeviceModels,
    WCHAR *wzDeviceModels,
    UINT *pcchActual);
void __RPC_STUB IWICMetadataHandlerInfo_GetDeviceModels_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataHandlerInfo_DoesRequireFullStream_Proxy(
    IWICMetadataHandlerInfo* This,
    BOOL *pfRequiresFullStream);
void __RPC_STUB IWICMetadataHandlerInfo_DoesRequireFullStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataHandlerInfo_DoesSupportPadding_Proxy(
    IWICMetadataHandlerInfo* This,
    BOOL *pfSupportsPadding);
void __RPC_STUB IWICMetadataHandlerInfo_DoesSupportPadding_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataHandlerInfo_DoesRequireFixedSize_Proxy(
    IWICMetadataHandlerInfo* This,
    BOOL *pfFixedSize);
void __RPC_STUB IWICMetadataHandlerInfo_DoesRequireFixedSize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICMetadataHandlerInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICMetadataReader interface
 */
#ifndef __IWICMetadataReader_INTERFACE_DEFINED__
#define __IWICMetadataReader_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICMetadataReader, 0x9204fe99, 0xd8fc, 0x4fd5, 0xa0,0x01, 0x95,0x36,0xb0,0x67,0xa8,0x99);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9204fe99-d8fc-4fd5-a001-9536b067a899")
IWICMetadataReader : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetMetadataFormat(
        GUID *pguidMetadataFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMetadataHandlerInfo(
        IWICMetadataHandlerInfo **ppIHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCount(
        UINT *pcCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetValueByIndex(
        UINT nIndex,
        PROPVARIANT *pvarSchema,
        PROPVARIANT *pvarId,
        PROPVARIANT *pvarValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetValue(
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId,
        const PROPVARIANT *pvarValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnumerator(
        IWICEnumMetadataItem **ppIEnumMetadata) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWICMetadataReader, 0x9204fe99, 0xd8fc, 0x4fd5, 0xa0,0x01, 0x95,0x36,0xb0,0x67,0xa8,0x99)
#endif
#else
typedef struct IWICMetadataReaderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICMetadataReader* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICMetadataReader* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICMetadataReader* This);

    /*** IWICMetadataReader methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMetadataFormat)(
        IWICMetadataReader* This,
        GUID *pguidMetadataFormat);

    HRESULT (STDMETHODCALLTYPE *GetMetadataHandlerInfo)(
        IWICMetadataReader* This,
        IWICMetadataHandlerInfo **ppIHandler);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IWICMetadataReader* This,
        UINT *pcCount);

    HRESULT (STDMETHODCALLTYPE *GetValueByIndex)(
        IWICMetadataReader* This,
        UINT nIndex,
        PROPVARIANT *pvarSchema,
        PROPVARIANT *pvarId,
        PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IWICMetadataReader* This,
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId,
        const PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *GetEnumerator)(
        IWICMetadataReader* This,
        IWICEnumMetadataItem **ppIEnumMetadata);

    END_INTERFACE
} IWICMetadataReaderVtbl;
interface IWICMetadataReader {
    CONST_VTBL IWICMetadataReaderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICMetadataReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICMetadataReader_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICMetadataReader_Release(This) (This)->lpVtbl->Release(This)
/*** IWICMetadataReader methods ***/
#define IWICMetadataReader_GetMetadataFormat(This,pguidMetadataFormat) (This)->lpVtbl->GetMetadataFormat(This,pguidMetadataFormat)
#define IWICMetadataReader_GetMetadataHandlerInfo(This,ppIHandler) (This)->lpVtbl->GetMetadataHandlerInfo(This,ppIHandler)
#define IWICMetadataReader_GetCount(This,pcCount) (This)->lpVtbl->GetCount(This,pcCount)
#define IWICMetadataReader_GetValueByIndex(This,nIndex,pvarSchema,pvarId,pvarValue) (This)->lpVtbl->GetValueByIndex(This,nIndex,pvarSchema,pvarId,pvarValue)
#define IWICMetadataReader_GetValue(This,pvarSchema,pvarId,pvarValue) (This)->lpVtbl->GetValue(This,pvarSchema,pvarId,pvarValue)
#define IWICMetadataReader_GetEnumerator(This,ppIEnumMetadata) (This)->lpVtbl->GetEnumerator(This,ppIEnumMetadata)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICMetadataReader_GetMetadataFormat_Proxy(
    IWICMetadataReader* This,
    GUID *pguidMetadataFormat);
void __RPC_STUB IWICMetadataReader_GetMetadataFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataReader_GetMetadataHandlerInfo_Proxy(
    IWICMetadataReader* This,
    IWICMetadataHandlerInfo **ppIHandler);
void __RPC_STUB IWICMetadataReader_GetMetadataHandlerInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataReader_GetCount_Proxy(
    IWICMetadataReader* This,
    UINT *pcCount);
void __RPC_STUB IWICMetadataReader_GetCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataReader_GetValueByIndex_Proxy(
    IWICMetadataReader* This,
    UINT nIndex,
    PROPVARIANT *pvarSchema,
    PROPVARIANT *pvarId,
    PROPVARIANT *pvarValue);
void __RPC_STUB IWICMetadataReader_GetValueByIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataReader_GetValue_Proxy(
    IWICMetadataReader* This,
    const PROPVARIANT *pvarSchema,
    const PROPVARIANT *pvarId,
    const PROPVARIANT *pvarValue);
void __RPC_STUB IWICMetadataReader_GetValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataReader_GetEnumerator_Proxy(
    IWICMetadataReader* This,
    IWICEnumMetadataItem **ppIEnumMetadata);
void __RPC_STUB IWICMetadataReader_GetEnumerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICMetadataReader_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICMetadataWriter interface
 */
#ifndef __IWICMetadataWriter_INTERFACE_DEFINED__
#define __IWICMetadataWriter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICMetadataWriter, 0xf7836e16, 0x3be0, 0x470b, 0x86,0xbb, 0x16,0x0d,0x0a,0xec,0xd7,0xde);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f7836e16-3be0-470b-86bb-160d0aecd7de")
IWICMetadataWriter : public IWICMetadataReader
{
    virtual HRESULT STDMETHODCALLTYPE SetValue(
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId,
        const PROPVARIANT *pvarValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetValueByIndex(
        UINT nIndex,
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId,
        const PROPVARIANT *pvarValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveValue(
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveValueByIndex(
        UINT nIndex) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWICMetadataWriter, 0xf7836e16, 0x3be0, 0x470b, 0x86,0xbb, 0x16,0x0d,0x0a,0xec,0xd7,0xde)
#endif
#else
typedef struct IWICMetadataWriterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICMetadataWriter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICMetadataWriter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICMetadataWriter* This);

    /*** IWICMetadataReader methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMetadataFormat)(
        IWICMetadataWriter* This,
        GUID *pguidMetadataFormat);

    HRESULT (STDMETHODCALLTYPE *GetMetadataHandlerInfo)(
        IWICMetadataWriter* This,
        IWICMetadataHandlerInfo **ppIHandler);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IWICMetadataWriter* This,
        UINT *pcCount);

    HRESULT (STDMETHODCALLTYPE *GetValueByIndex)(
        IWICMetadataWriter* This,
        UINT nIndex,
        PROPVARIANT *pvarSchema,
        PROPVARIANT *pvarId,
        PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IWICMetadataWriter* This,
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId,
        const PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *GetEnumerator)(
        IWICMetadataWriter* This,
        IWICEnumMetadataItem **ppIEnumMetadata);

    /*** IWICMetadataWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IWICMetadataWriter* This,
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId,
        const PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *SetValueByIndex)(
        IWICMetadataWriter* This,
        UINT nIndex,
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId,
        const PROPVARIANT *pvarValue);

    HRESULT (STDMETHODCALLTYPE *RemoveValue)(
        IWICMetadataWriter* This,
        const PROPVARIANT *pvarSchema,
        const PROPVARIANT *pvarId);

    HRESULT (STDMETHODCALLTYPE *RemoveValueByIndex)(
        IWICMetadataWriter* This,
        UINT nIndex);

    END_INTERFACE
} IWICMetadataWriterVtbl;
interface IWICMetadataWriter {
    CONST_VTBL IWICMetadataWriterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICMetadataWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICMetadataWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICMetadataWriter_Release(This) (This)->lpVtbl->Release(This)
/*** IWICMetadataReader methods ***/
#define IWICMetadataWriter_GetMetadataFormat(This,pguidMetadataFormat) (This)->lpVtbl->GetMetadataFormat(This,pguidMetadataFormat)
#define IWICMetadataWriter_GetMetadataHandlerInfo(This,ppIHandler) (This)->lpVtbl->GetMetadataHandlerInfo(This,ppIHandler)
#define IWICMetadataWriter_GetCount(This,pcCount) (This)->lpVtbl->GetCount(This,pcCount)
#define IWICMetadataWriter_GetValueByIndex(This,nIndex,pvarSchema,pvarId,pvarValue) (This)->lpVtbl->GetValueByIndex(This,nIndex,pvarSchema,pvarId,pvarValue)
#define IWICMetadataWriter_GetValue(This,pvarSchema,pvarId,pvarValue) (This)->lpVtbl->GetValue(This,pvarSchema,pvarId,pvarValue)
#define IWICMetadataWriter_GetEnumerator(This,ppIEnumMetadata) (This)->lpVtbl->GetEnumerator(This,ppIEnumMetadata)
/*** IWICMetadataWriter methods ***/
#define IWICMetadataWriter_SetValue(This,pvarSchema,pvarId,pvarValue) (This)->lpVtbl->SetValue(This,pvarSchema,pvarId,pvarValue)
#define IWICMetadataWriter_SetValueByIndex(This,nIndex,pvarSchema,pvarId,pvarValue) (This)->lpVtbl->SetValueByIndex(This,nIndex,pvarSchema,pvarId,pvarValue)
#define IWICMetadataWriter_RemoveValue(This,pvarSchema,pvarId) (This)->lpVtbl->RemoveValue(This,pvarSchema,pvarId)
#define IWICMetadataWriter_RemoveValueByIndex(This,nIndex) (This)->lpVtbl->RemoveValueByIndex(This,nIndex)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICMetadataWriter_SetValue_Proxy(
    IWICMetadataWriter* This,
    const PROPVARIANT *pvarSchema,
    const PROPVARIANT *pvarId,
    const PROPVARIANT *pvarValue);
void __RPC_STUB IWICMetadataWriter_SetValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataWriter_SetValueByIndex_Proxy(
    IWICMetadataWriter* This,
    UINT nIndex,
    const PROPVARIANT *pvarSchema,
    const PROPVARIANT *pvarId,
    const PROPVARIANT *pvarValue);
void __RPC_STUB IWICMetadataWriter_SetValueByIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataWriter_RemoveValue_Proxy(
    IWICMetadataWriter* This,
    const PROPVARIANT *pvarSchema,
    const PROPVARIANT *pvarId);
void __RPC_STUB IWICMetadataWriter_RemoveValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataWriter_RemoveValueByIndex_Proxy(
    IWICMetadataWriter* This,
    UINT nIndex);
void __RPC_STUB IWICMetadataWriter_RemoveValueByIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICMetadataWriter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICMetadataBlockReader interface
 */
#ifndef __IWICMetadataBlockReader_INTERFACE_DEFINED__
#define __IWICMetadataBlockReader_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICMetadataBlockReader, 0xfeaa2a8d, 0xb3f3, 0x43e4, 0xb2,0x5c, 0xd1,0xde,0x99,0x0a,0x1a,0xe1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("feaa2a8d-b3f3-43e4-b25c-d1de990a1ae1")
IWICMetadataBlockReader : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetContainerFormat(
        GUID *pguidContainerFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCount(
        UINT *pcCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReaderByIndex(
        UINT nIndex,
        IWICMetadataReader **ppIMetadataReader) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnumerator(
        IEnumUnknown **ppIEnumMetadata) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWICMetadataBlockReader, 0xfeaa2a8d, 0xb3f3, 0x43e4, 0xb2,0x5c, 0xd1,0xde,0x99,0x0a,0x1a,0xe1)
#endif
#else
typedef struct IWICMetadataBlockReaderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICMetadataBlockReader* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICMetadataBlockReader* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICMetadataBlockReader* This);

    /*** IWICMetadataBlockReader methods ***/
    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICMetadataBlockReader* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IWICMetadataBlockReader* This,
        UINT *pcCount);

    HRESULT (STDMETHODCALLTYPE *GetReaderByIndex)(
        IWICMetadataBlockReader* This,
        UINT nIndex,
        IWICMetadataReader **ppIMetadataReader);

    HRESULT (STDMETHODCALLTYPE *GetEnumerator)(
        IWICMetadataBlockReader* This,
        IEnumUnknown **ppIEnumMetadata);

    END_INTERFACE
} IWICMetadataBlockReaderVtbl;
interface IWICMetadataBlockReader {
    CONST_VTBL IWICMetadataBlockReaderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICMetadataBlockReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICMetadataBlockReader_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICMetadataBlockReader_Release(This) (This)->lpVtbl->Release(This)
/*** IWICMetadataBlockReader methods ***/
#define IWICMetadataBlockReader_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICMetadataBlockReader_GetCount(This,pcCount) (This)->lpVtbl->GetCount(This,pcCount)
#define IWICMetadataBlockReader_GetReaderByIndex(This,nIndex,ppIMetadataReader) (This)->lpVtbl->GetReaderByIndex(This,nIndex,ppIMetadataReader)
#define IWICMetadataBlockReader_GetEnumerator(This,ppIEnumMetadata) (This)->lpVtbl->GetEnumerator(This,ppIEnumMetadata)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICMetadataBlockReader_GetContainerFormat_Proxy(
    IWICMetadataBlockReader* This,
    GUID *pguidContainerFormat);
void __RPC_STUB IWICMetadataBlockReader_GetContainerFormat_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataBlockReader_GetCount_Proxy(
    IWICMetadataBlockReader* This,
    UINT *pcCount);
void __RPC_STUB IWICMetadataBlockReader_GetCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataBlockReader_GetReaderByIndex_Proxy(
    IWICMetadataBlockReader* This,
    UINT nIndex,
    IWICMetadataReader **ppIMetadataReader);
void __RPC_STUB IWICMetadataBlockReader_GetReaderByIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataBlockReader_GetEnumerator_Proxy(
    IWICMetadataBlockReader* This,
    IEnumUnknown **ppIEnumMetadata);
void __RPC_STUB IWICMetadataBlockReader_GetEnumerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICMetadataBlockReader_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICMetadataBlockWriter interface
 */
#ifndef __IWICMetadataBlockWriter_INTERFACE_DEFINED__
#define __IWICMetadataBlockWriter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICMetadataBlockWriter, 0x08fb9676, 0xb444, 0x41e8, 0x8d,0xbe, 0x6a,0x53,0xa5,0x42,0xbf,0xf1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("08fb9676-b444-41e8-8dbe-6a53a542bff1")
IWICMetadataBlockWriter : public IWICMetadataBlockReader
{
    virtual HRESULT STDMETHODCALLTYPE InitializeFromBlockReader(
        IWICMetadataBlockReader *pIMDBlockReader) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWriterByIndex(
        UINT nIndex,
        IWICMetadataWriter **ppIMetadataWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddWriter(
        IWICMetadataWriter *pIMetadataWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWriterByIndex(
        UINT nIndex,
        IWICMetadataWriter *pIMetadataWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveWriterByIndex(
        UINT nIndex) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWICMetadataBlockWriter, 0x08fb9676, 0xb444, 0x41e8, 0x8d,0xbe, 0x6a,0x53,0xa5,0x42,0xbf,0xf1)
#endif
#else
typedef struct IWICMetadataBlockWriterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICMetadataBlockWriter* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICMetadataBlockWriter* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICMetadataBlockWriter* This);

    /*** IWICMetadataBlockReader methods ***/
    HRESULT (STDMETHODCALLTYPE *GetContainerFormat)(
        IWICMetadataBlockWriter* This,
        GUID *pguidContainerFormat);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IWICMetadataBlockWriter* This,
        UINT *pcCount);

    HRESULT (STDMETHODCALLTYPE *GetReaderByIndex)(
        IWICMetadataBlockWriter* This,
        UINT nIndex,
        IWICMetadataReader **ppIMetadataReader);

    HRESULT (STDMETHODCALLTYPE *GetEnumerator)(
        IWICMetadataBlockWriter* This,
        IEnumUnknown **ppIEnumMetadata);

    /*** IWICMetadataBlockWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeFromBlockReader)(
        IWICMetadataBlockWriter* This,
        IWICMetadataBlockReader *pIMDBlockReader);

    HRESULT (STDMETHODCALLTYPE *GetWriterByIndex)(
        IWICMetadataBlockWriter* This,
        UINT nIndex,
        IWICMetadataWriter **ppIMetadataWriter);

    HRESULT (STDMETHODCALLTYPE *AddWriter)(
        IWICMetadataBlockWriter* This,
        IWICMetadataWriter *pIMetadataWriter);

    HRESULT (STDMETHODCALLTYPE *SetWriterByIndex)(
        IWICMetadataBlockWriter* This,
        UINT nIndex,
        IWICMetadataWriter *pIMetadataWriter);

    HRESULT (STDMETHODCALLTYPE *RemoveWriterByIndex)(
        IWICMetadataBlockWriter* This,
        UINT nIndex);

    END_INTERFACE
} IWICMetadataBlockWriterVtbl;
interface IWICMetadataBlockWriter {
    CONST_VTBL IWICMetadataBlockWriterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICMetadataBlockWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICMetadataBlockWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICMetadataBlockWriter_Release(This) (This)->lpVtbl->Release(This)
/*** IWICMetadataBlockReader methods ***/
#define IWICMetadataBlockWriter_GetContainerFormat(This,pguidContainerFormat) (This)->lpVtbl->GetContainerFormat(This,pguidContainerFormat)
#define IWICMetadataBlockWriter_GetCount(This,pcCount) (This)->lpVtbl->GetCount(This,pcCount)
#define IWICMetadataBlockWriter_GetReaderByIndex(This,nIndex,ppIMetadataReader) (This)->lpVtbl->GetReaderByIndex(This,nIndex,ppIMetadataReader)
#define IWICMetadataBlockWriter_GetEnumerator(This,ppIEnumMetadata) (This)->lpVtbl->GetEnumerator(This,ppIEnumMetadata)
/*** IWICMetadataBlockWriter methods ***/
#define IWICMetadataBlockWriter_InitializeFromBlockReader(This,pIMDBlockReader) (This)->lpVtbl->InitializeFromBlockReader(This,pIMDBlockReader)
#define IWICMetadataBlockWriter_GetWriterByIndex(This,nIndex,ppIMetadataWriter) (This)->lpVtbl->GetWriterByIndex(This,nIndex,ppIMetadataWriter)
#define IWICMetadataBlockWriter_AddWriter(This,pIMetadataWriter) (This)->lpVtbl->AddWriter(This,pIMetadataWriter)
#define IWICMetadataBlockWriter_SetWriterByIndex(This,nIndex,pIMetadataWriter) (This)->lpVtbl->SetWriterByIndex(This,nIndex,pIMetadataWriter)
#define IWICMetadataBlockWriter_RemoveWriterByIndex(This,nIndex) (This)->lpVtbl->RemoveWriterByIndex(This,nIndex)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICMetadataBlockWriter_InitializeFromBlockReader_Proxy(
    IWICMetadataBlockWriter* This,
    IWICMetadataBlockReader *pIMDBlockReader);
void __RPC_STUB IWICMetadataBlockWriter_InitializeFromBlockReader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataBlockWriter_GetWriterByIndex_Proxy(
    IWICMetadataBlockWriter* This,
    UINT nIndex,
    IWICMetadataWriter **ppIMetadataWriter);
void __RPC_STUB IWICMetadataBlockWriter_GetWriterByIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataBlockWriter_AddWriter_Proxy(
    IWICMetadataBlockWriter* This,
    IWICMetadataWriter *pIMetadataWriter);
void __RPC_STUB IWICMetadataBlockWriter_AddWriter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataBlockWriter_SetWriterByIndex_Proxy(
    IWICMetadataBlockWriter* This,
    UINT nIndex,
    IWICMetadataWriter *pIMetadataWriter);
void __RPC_STUB IWICMetadataBlockWriter_SetWriterByIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICMetadataBlockWriter_RemoveWriterByIndex_Proxy(
    IWICMetadataBlockWriter* This,
    UINT nIndex);
void __RPC_STUB IWICMetadataBlockWriter_RemoveWriterByIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICMetadataBlockWriter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICPersistStream interface
 */
#ifndef __IWICPersistStream_INTERFACE_DEFINED__
#define __IWICPersistStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICPersistStream, 0x00675040, 0x6908, 0x45f8, 0x86,0xa3, 0x49,0xc7,0xdf,0xd6,0xd9,0xad);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("00675040-6908-45f8-86a3-49c7dfd6d9ad")
IWICPersistStream : public IPersistStream
{
    virtual HRESULT STDMETHODCALLTYPE LoadEx(
        IStream *pIStream,
        const GUID *pguidPreferredVendor,
        DWORD dwPersistOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveEx(
        IStream *pIStream,
        DWORD dwPersistOptions,
        BOOL fClearDirty) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWICPersistStream, 0x00675040, 0x6908, 0x45f8, 0x86,0xa3, 0x49,0xc7,0xdf,0xd6,0xd9,0xad)
#endif
#else
typedef struct IWICPersistStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICPersistStream* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICPersistStream* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICPersistStream* This);

    /*** IPersist methods ***/
    HRESULT (STDMETHODCALLTYPE *GetClassID)(
        IWICPersistStream* This,
        CLSID *pClassID);

    /*** IPersistStream methods ***/
    HRESULT (STDMETHODCALLTYPE *IsDirty)(
        IWICPersistStream* This);

    HRESULT (STDMETHODCALLTYPE *Load)(
        IWICPersistStream* This,
        IStream *pStm);

    HRESULT (STDMETHODCALLTYPE *Save)(
        IWICPersistStream* This,
        IStream *pStm,
        BOOL fClearDirty);

    HRESULT (STDMETHODCALLTYPE *GetSizeMax)(
        IWICPersistStream* This,
        ULARGE_INTEGER *pcbSize);

    /*** IWICPersistStream methods ***/
    HRESULT (STDMETHODCALLTYPE *LoadEx)(
        IWICPersistStream* This,
        IStream *pIStream,
        const GUID *pguidPreferredVendor,
        DWORD dwPersistOptions);

    HRESULT (STDMETHODCALLTYPE *SaveEx)(
        IWICPersistStream* This,
        IStream *pIStream,
        DWORD dwPersistOptions,
        BOOL fClearDirty);

    END_INTERFACE
} IWICPersistStreamVtbl;
interface IWICPersistStream {
    CONST_VTBL IWICPersistStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICPersistStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICPersistStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICPersistStream_Release(This) (This)->lpVtbl->Release(This)
/*** IPersist methods ***/
#define IWICPersistStream_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
/*** IPersistStream methods ***/
#define IWICPersistStream_IsDirty(This) (This)->lpVtbl->IsDirty(This)
#define IWICPersistStream_Load(This,pStm) (This)->lpVtbl->Load(This,pStm)
#define IWICPersistStream_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty)
#define IWICPersistStream_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize)
/*** IWICPersistStream methods ***/
#define IWICPersistStream_LoadEx(This,pIStream,pguidPreferredVendor,dwPersistOptions) (This)->lpVtbl->LoadEx(This,pIStream,pguidPreferredVendor,dwPersistOptions)
#define IWICPersistStream_SaveEx(This,pIStream,dwPersistOptions,fClearDirty) (This)->lpVtbl->SaveEx(This,pIStream,dwPersistOptions,fClearDirty)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICPersistStream_LoadEx_Proxy(
    IWICPersistStream* This,
    IStream *pIStream,
    const GUID *pguidPreferredVendor,
    DWORD dwPersistOptions);
void __RPC_STUB IWICPersistStream_LoadEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICPersistStream_SaveEx_Proxy(
    IWICPersistStream* This,
    IStream *pIStream,
    DWORD dwPersistOptions,
    BOOL fClearDirty);
void __RPC_STUB IWICPersistStream_SaveEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICPersistStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWICComponentFactory interface
 */
#ifndef __IWICComponentFactory_INTERFACE_DEFINED__
#define __IWICComponentFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWICComponentFactory, 0x412d0c3a, 0x9650, 0x44fa, 0xaf,0x5b, 0xdd,0x2a,0x06,0xc8,0xe8,0xfb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("412d0c3a-9650-44fa-af5b-dd2a06c8e8fb")
IWICComponentFactory : public IWICImagingFactory
{
    virtual HRESULT STDMETHODCALLTYPE CreateMetadataReader(
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        DWORD dwOptions,
        IStream *pIStream,
        IWICMetadataReader **ppIReader) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMetadataReaderFromContainer(
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        DWORD dwOptions,
        IStream *pIStream,
        IWICMetadataReader **ppIReader) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMetadataWriter(
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        DWORD dwMetadataOptions,
        IWICMetadataWriter **ppIWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMetadataWriterFromReader(
        IWICMetadataReader *pIReader,
        const GUID *pguidVendor,
        IWICMetadataWriter **ppIWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateQueryReaderFromBlockReader(
        IWICMetadataBlockReader *pIBlockReader,
        IWICMetadataQueryReader **ppIQueryReader) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateQueryWriterFromBlockWriter(
        IWICMetadataBlockWriter *pIBlockWriter,
        IWICMetadataQueryWriter **ppIQueryWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateEncoderPropertyBag(
        PROPBAG2 *ppropOptions,
        UINT cCount,
        IPropertyBag2 **ppIPropertyBag) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWICComponentFactory, 0x412d0c3a, 0x9650, 0x44fa, 0xaf,0x5b, 0xdd,0x2a,0x06,0xc8,0xe8,0xfb)
#endif
#else
typedef struct IWICComponentFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWICComponentFactory* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWICComponentFactory* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWICComponentFactory* This);

    /*** IWICImagingFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateDecoderFromFilename)(
        IWICComponentFactory* This,
        LPCWSTR wzFilename,
        const GUID *pguidVendor,
        DWORD dwDesiredAccess,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateDecoderFromStream)(
        IWICComponentFactory* This,
        IStream *pIStream,
        const GUID *pguidVendor,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateDecoderFromFileHandle)(
        IWICComponentFactory* This,
        ULONG_PTR hFile,
        const GUID *pguidVendor,
        WICDecodeOptions metadataOptions,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateComponentInfo)(
        IWICComponentFactory* This,
        REFCLSID clsidComponent,
        IWICComponentInfo **ppIInfo);

    HRESULT (STDMETHODCALLTYPE *CreateDecoder)(
        IWICComponentFactory* This,
        REFGUID guidContainerFormat,
        const GUID *pguidVendor,
        IWICBitmapDecoder **ppIDecoder);

    HRESULT (STDMETHODCALLTYPE *CreateEncoder)(
        IWICComponentFactory* This,
        REFGUID guidContainerFormat,
        const GUID *pguidVendor,
        IWICBitmapEncoder **ppIEncoder);

    HRESULT (STDMETHODCALLTYPE *CreatePalette)(
        IWICComponentFactory* This,
        IWICPalette **ppIPalette);

    HRESULT (STDMETHODCALLTYPE *CreateFormatConverter)(
        IWICComponentFactory* This,
        IWICFormatConverter **ppIFormatConverter);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapScaler)(
        IWICComponentFactory* This,
        IWICBitmapScaler **ppIBitmapScaler);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapClipper)(
        IWICComponentFactory* This,
        IWICBitmapClipper **ppIBitmapClipper);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFlipRotator)(
        IWICComponentFactory* This,
        IWICBitmapFlipRotator **ppIBitmapFlipRotator);

    HRESULT (STDMETHODCALLTYPE *CreateStream)(
        IWICComponentFactory* This,
        IWICStream **ppIWICStream);

    HRESULT (STDMETHODCALLTYPE *CreateColorContext)(
        IWICComponentFactory* This,
        IWICColorContext **ppIWICColorContext);

    HRESULT (STDMETHODCALLTYPE *CreateColorTransformer)(
        IWICComponentFactory* This,
        IWICColorTransform **ppIWICColorTransform);

    HRESULT (STDMETHODCALLTYPE *CreateBitmap)(
        IWICComponentFactory* This,
        UINT uiWidth,
        UINT uiHeight,
        REFWICPixelFormatGUID pixelFormat,
        WICBitmapCreateCacheOption option,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromSource)(
        IWICComponentFactory* This,
        IWICBitmapSource *piBitmapSource,
        WICBitmapCreateCacheOption option,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromSourceRect)(
        IWICComponentFactory* This,
        IWICBitmapSource *piBitmapSource,
        UINT x,
        UINT y,
        UINT width,
        UINT height,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromMemory)(
        IWICComponentFactory* This,
        UINT uiWidth,
        UINT uiHeight,
        REFWICPixelFormatGUID pixelFormat,
        UINT cbStride,
        UINT cbBufferSize,
        BYTE *pbBuffer,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromHBITMAP)(
        IWICComponentFactory* This,
        HBITMAP hBitmap,
        HPALETTE hPalette,
        WICBitmapAlphaChannelOption options,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateBitmapFromHICON)(
        IWICComponentFactory* This,
        HICON hIcon,
        IWICBitmap **ppIBitmap);

    HRESULT (STDMETHODCALLTYPE *CreateComponentEnumerator)(
        IWICComponentFactory* This,
        DWORD componentTypes,
        DWORD options,
        IEnumUnknown **ppIEnumUnknown);

    HRESULT (STDMETHODCALLTYPE *CreateFastMetadataEncoderFromDecoder)(
        IWICComponentFactory* This,
        IWICBitmapDecoder *pIDecoder,
        IWICFastMetadataEncoder **ppIFastEncoder);

    HRESULT (STDMETHODCALLTYPE *CreateFastMetadataEncoderFromFrameDecode)(
        IWICComponentFactory* This,
        IWICBitmapFrameDecode *pIFrameDecoder,
        IWICFastMetadataEncoder **ppIFastEncoder);

    HRESULT (STDMETHODCALLTYPE *CreateQueryWriter)(
        IWICComponentFactory* This,
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        IWICMetadataQueryWriter **ppIQueryWriter);

    HRESULT (STDMETHODCALLTYPE *CreateQueryWriterFromReader)(
        IWICComponentFactory* This,
        IWICMetadataQueryReader *pIQueryReader,
        const GUID *pguidVendor,
        IWICMetadataQueryWriter **ppIQueryWriter);

    /*** IWICComponentFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateMetadataReader)(
        IWICComponentFactory* This,
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        DWORD dwOptions,
        IStream *pIStream,
        IWICMetadataReader **ppIReader);

    HRESULT (STDMETHODCALLTYPE *CreateMetadataReaderFromContainer)(
        IWICComponentFactory* This,
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        DWORD dwOptions,
        IStream *pIStream,
        IWICMetadataReader **ppIReader);

    HRESULT (STDMETHODCALLTYPE *CreateMetadataWriter)(
        IWICComponentFactory* This,
        REFGUID guidMetadataFormat,
        const GUID *pguidVendor,
        DWORD dwMetadataOptions,
        IWICMetadataWriter **ppIWriter);

    HRESULT (STDMETHODCALLTYPE *CreateMetadataWriterFromReader)(
        IWICComponentFactory* This,
        IWICMetadataReader *pIReader,
        const GUID *pguidVendor,
        IWICMetadataWriter **ppIWriter);

    HRESULT (STDMETHODCALLTYPE *CreateQueryReaderFromBlockReader)(
        IWICComponentFactory* This,
        IWICMetadataBlockReader *pIBlockReader,
        IWICMetadataQueryReader **ppIQueryReader);

    HRESULT (STDMETHODCALLTYPE *CreateQueryWriterFromBlockWriter)(
        IWICComponentFactory* This,
        IWICMetadataBlockWriter *pIBlockWriter,
        IWICMetadataQueryWriter **ppIQueryWriter);

    HRESULT (STDMETHODCALLTYPE *CreateEncoderPropertyBag)(
        IWICComponentFactory* This,
        PROPBAG2 *ppropOptions,
        UINT cCount,
        IPropertyBag2 **ppIPropertyBag);

    END_INTERFACE
} IWICComponentFactoryVtbl;
interface IWICComponentFactory {
    CONST_VTBL IWICComponentFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWICComponentFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWICComponentFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWICComponentFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IWICImagingFactory methods ***/
#define IWICComponentFactory_CreateDecoderFromFilename(This,wzFilename,pguidVendor,dwDesiredAccess,metadataOptions,ppIDecoder) (This)->lpVtbl->CreateDecoderFromFilename(This,wzFilename,pguidVendor,dwDesiredAccess,metadataOptions,ppIDecoder)
#define IWICComponentFactory_CreateDecoderFromStream(This,pIStream,pguidVendor,metadataOptions,ppIDecoder) (This)->lpVtbl->CreateDecoderFromStream(This,pIStream,pguidVendor,metadataOptions,ppIDecoder)
#define IWICComponentFactory_CreateDecoderFromFileHandle(This,hFile,pguidVendor,metadataOptions,ppIDecoder) (This)->lpVtbl->CreateDecoderFromFileHandle(This,hFile,pguidVendor,metadataOptions,ppIDecoder)
#define IWICComponentFactory_CreateComponentInfo(This,clsidComponent,ppIInfo) (This)->lpVtbl->CreateComponentInfo(This,clsidComponent,ppIInfo)
#define IWICComponentFactory_CreateDecoder(This,guidContainerFormat,pguidVendor,ppIDecoder) (This)->lpVtbl->CreateDecoder(This,guidContainerFormat,pguidVendor,ppIDecoder)
#define IWICComponentFactory_CreateEncoder(This,guidContainerFormat,pguidVendor,ppIEncoder) (This)->lpVtbl->CreateEncoder(This,guidContainerFormat,pguidVendor,ppIEncoder)
#define IWICComponentFactory_CreatePalette(This,ppIPalette) (This)->lpVtbl->CreatePalette(This,ppIPalette)
#define IWICComponentFactory_CreateFormatConverter(This,ppIFormatConverter) (This)->lpVtbl->CreateFormatConverter(This,ppIFormatConverter)
#define IWICComponentFactory_CreateBitmapScaler(This,ppIBitmapScaler) (This)->lpVtbl->CreateBitmapScaler(This,ppIBitmapScaler)
#define IWICComponentFactory_CreateBitmapClipper(This,ppIBitmapClipper) (This)->lpVtbl->CreateBitmapClipper(This,ppIBitmapClipper)
#define IWICComponentFactory_CreateBitmapFlipRotator(This,ppIBitmapFlipRotator) (This)->lpVtbl->CreateBitmapFlipRotator(This,ppIBitmapFlipRotator)
#define IWICComponentFactory_CreateStream(This,ppIWICStream) (This)->lpVtbl->CreateStream(This,ppIWICStream)
#define IWICComponentFactory_CreateColorContext(This,ppIWICColorContext) (This)->lpVtbl->CreateColorContext(This,ppIWICColorContext)
#define IWICComponentFactory_CreateColorTransformer(This,ppIWICColorTransform) (This)->lpVtbl->CreateColorTransformer(This,ppIWICColorTransform)
#define IWICComponentFactory_CreateBitmap(This,uiWidth,uiHeight,pixelFormat,option,ppIBitmap) (This)->lpVtbl->CreateBitmap(This,uiWidth,uiHeight,pixelFormat,option,ppIBitmap)
#define IWICComponentFactory_CreateBitmapFromSource(This,piBitmapSource,option,ppIBitmap) (This)->lpVtbl->CreateBitmapFromSource(This,piBitmapSource,option,ppIBitmap)
#define IWICComponentFactory_CreateBitmapFromSourceRect(This,piBitmapSource,x,y,width,height,ppIBitmap) (This)->lpVtbl->CreateBitmapFromSourceRect(This,piBitmapSource,x,y,width,height,ppIBitmap)
#define IWICComponentFactory_CreateBitmapFromMemory(This,uiWidth,uiHeight,pixelFormat,cbStride,cbBufferSize,pbBuffer,ppIBitmap) (This)->lpVtbl->CreateBitmapFromMemory(This,uiWidth,uiHeight,pixelFormat,cbStride,cbBufferSize,pbBuffer,ppIBitmap)
#define IWICComponentFactory_CreateBitmapFromHBITMAP(This,hBitmap,hPalette,options,ppIBitmap) (This)->lpVtbl->CreateBitmapFromHBITMAP(This,hBitmap,hPalette,options,ppIBitmap)
#define IWICComponentFactory_CreateBitmapFromHICON(This,hIcon,ppIBitmap) (This)->lpVtbl->CreateBitmapFromHICON(This,hIcon,ppIBitmap)
#define IWICComponentFactory_CreateComponentEnumerator(This,componentTypes,options,ppIEnumUnknown) (This)->lpVtbl->CreateComponentEnumerator(This,componentTypes,options,ppIEnumUnknown)
#define IWICComponentFactory_CreateFastMetadataEncoderFromDecoder(This,pIDecoder,ppIFastEncoder) (This)->lpVtbl->CreateFastMetadataEncoderFromDecoder(This,pIDecoder,ppIFastEncoder)
#define IWICComponentFactory_CreateFastMetadataEncoderFromFrameDecode(This,pIFrameDecoder,ppIFastEncoder) (This)->lpVtbl->CreateFastMetadataEncoderFromFrameDecode(This,pIFrameDecoder,ppIFastEncoder)
#define IWICComponentFactory_CreateQueryWriter(This,guidMetadataFormat,pguidVendor,ppIQueryWriter) (This)->lpVtbl->CreateQueryWriter(This,guidMetadataFormat,pguidVendor,ppIQueryWriter)
#define IWICComponentFactory_CreateQueryWriterFromReader(This,pIQueryReader,pguidVendor,ppIQueryWriter) (This)->lpVtbl->CreateQueryWriterFromReader(This,pIQueryReader,pguidVendor,ppIQueryWriter)
/*** IWICComponentFactory methods ***/
#define IWICComponentFactory_CreateMetadataReader(This,guidMetadataFormat,pguidVendor,dwOptions,pIStream,ppIReader) (This)->lpVtbl->CreateMetadataReader(This,guidMetadataFormat,pguidVendor,dwOptions,pIStream,ppIReader)
#define IWICComponentFactory_CreateMetadataReaderFromContainer(This,guidMetadataFormat,pguidVendor,dwOptions,pIStream,ppIReader) (This)->lpVtbl->CreateMetadataReaderFromContainer(This,guidMetadataFormat,pguidVendor,dwOptions,pIStream,ppIReader)
#define IWICComponentFactory_CreateMetadataWriter(This,guidMetadataFormat,pguidVendor,dwMetadataOptions,ppIWriter) (This)->lpVtbl->CreateMetadataWriter(This,guidMetadataFormat,pguidVendor,dwMetadataOptions,ppIWriter)
#define IWICComponentFactory_CreateMetadataWriterFromReader(This,pIReader,pguidVendor,ppIWriter) (This)->lpVtbl->CreateMetadataWriterFromReader(This,pIReader,pguidVendor,ppIWriter)
#define IWICComponentFactory_CreateQueryReaderFromBlockReader(This,pIBlockReader,ppIQueryReader) (This)->lpVtbl->CreateQueryReaderFromBlockReader(This,pIBlockReader,ppIQueryReader)
#define IWICComponentFactory_CreateQueryWriterFromBlockWriter(This,pIBlockWriter,ppIQueryWriter) (This)->lpVtbl->CreateQueryWriterFromBlockWriter(This,pIBlockWriter,ppIQueryWriter)
#define IWICComponentFactory_CreateEncoderPropertyBag(This,ppropOptions,cCount,ppIPropertyBag) (This)->lpVtbl->CreateEncoderPropertyBag(This,ppropOptions,cCount,ppIPropertyBag)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWICComponentFactory_CreateMetadataReader_Proxy(
    IWICComponentFactory* This,
    REFGUID guidMetadataFormat,
    const GUID *pguidVendor,
    DWORD dwOptions,
    IStream *pIStream,
    IWICMetadataReader **ppIReader);
void __RPC_STUB IWICComponentFactory_CreateMetadataReader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentFactory_CreateMetadataReaderFromContainer_Proxy(
    IWICComponentFactory* This,
    REFGUID guidMetadataFormat,
    const GUID *pguidVendor,
    DWORD dwOptions,
    IStream *pIStream,
    IWICMetadataReader **ppIReader);
void __RPC_STUB IWICComponentFactory_CreateMetadataReaderFromContainer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentFactory_CreateMetadataWriter_Proxy(
    IWICComponentFactory* This,
    REFGUID guidMetadataFormat,
    const GUID *pguidVendor,
    DWORD dwMetadataOptions,
    IWICMetadataWriter **ppIWriter);
void __RPC_STUB IWICComponentFactory_CreateMetadataWriter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentFactory_CreateMetadataWriterFromReader_Proxy(
    IWICComponentFactory* This,
    IWICMetadataReader *pIReader,
    const GUID *pguidVendor,
    IWICMetadataWriter **ppIWriter);
void __RPC_STUB IWICComponentFactory_CreateMetadataWriterFromReader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentFactory_CreateQueryReaderFromBlockReader_Proxy(
    IWICComponentFactory* This,
    IWICMetadataBlockReader *pIBlockReader,
    IWICMetadataQueryReader **ppIQueryReader);
void __RPC_STUB IWICComponentFactory_CreateQueryReaderFromBlockReader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentFactory_CreateQueryWriterFromBlockWriter_Proxy(
    IWICComponentFactory* This,
    IWICMetadataBlockWriter *pIBlockWriter,
    IWICMetadataQueryWriter **ppIQueryWriter);
void __RPC_STUB IWICComponentFactory_CreateQueryWriterFromBlockWriter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWICComponentFactory_CreateEncoderPropertyBag_Proxy(
    IWICComponentFactory* This,
    PROPBAG2 *ppropOptions,
    UINT cCount,
    IPropertyBag2 **ppIPropertyBag);
void __RPC_STUB IWICComponentFactory_CreateEncoderPropertyBag_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWICComponentFactory_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
ULONG           __RPC_USER CLIPFORMAT_UserSize     (ULONG *, ULONG, CLIPFORMAT *);
unsigned char * __RPC_USER CLIPFORMAT_UserMarshal  (ULONG *, unsigned char *, CLIPFORMAT *);
unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
void            __RPC_USER CLIPFORMAT_UserFree     (ULONG *, CLIPFORMAT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_WINCODECSDK_H */
