/*** Autogenerated by WIDL 5.15 from ../../wine/include/cdosys.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __cdosys_h__
#define __cdosys_h__

/* Forward declarations */

#ifndef __IDataSource_FWD_DEFINED__
#define __IDataSource_FWD_DEFINED__
typedef interface IDataSource IDataSource;
#ifdef __cplusplus
interface IDataSource;
#endif /* __cplusplus */
#endif

#ifndef __IBodyParts_FWD_DEFINED__
#define __IBodyParts_FWD_DEFINED__
typedef interface IBodyParts IBodyParts;
#ifdef __cplusplus
interface IBodyParts;
#endif /* __cplusplus */
#endif

#ifndef __IBodyPart_FWD_DEFINED__
#define __IBodyPart_FWD_DEFINED__
typedef interface IBodyPart IBodyPart;
#ifdef __cplusplus
interface IBodyPart;
#endif /* __cplusplus */
#endif

#ifndef __IConfiguration_FWD_DEFINED__
#define __IConfiguration_FWD_DEFINED__
typedef interface IConfiguration IConfiguration;
#ifdef __cplusplus
interface IConfiguration;
#endif /* __cplusplus */
#endif

#ifndef __IMessage_FWD_DEFINED__
#define __IMessage_FWD_DEFINED__
typedef interface IMessage IMessage;
#ifdef __cplusplus
interface IMessage;
#endif /* __cplusplus */
#endif

#ifndef __Message_FWD_DEFINED__
#define __Message_FWD_DEFINED__
#ifdef __cplusplus
typedef class Message Message;
#else
typedef struct Message Message;
#endif /* defined __cplusplus */
#endif /* defined __Message_FWD_DEFINED__ */

/* Headers for imported files */

#include <unknwn.h>
#include <objidl.h>
#include <oaidl.h>
#include <msado15_backcompat.h>

#ifdef __cplusplus
extern "C" {
#endif


DEFINE_GUID(LIBID_CDO, 0xcd000000, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d);

#ifndef __IBodyPart_FWD_DEFINED__
#define __IBodyPart_FWD_DEFINED__
typedef interface IBodyPart IBodyPart;
#ifdef __cplusplus
interface IBodyPart;
#endif /* __cplusplus */
#endif

typedef enum __WIDL_cdosys_generated_name_0000000F {
    cdoDSNDefault = 0,
    cdoDSNNever = 1,
    cdoDSNFailure = 2,
    cdoDSNSuccess = 4,
    cdoDSNDelay = 8,
    cdoDSNSuccessFailOrDelay = 14
} CdoDSNOptions;
typedef enum __WIDL_cdosys_generated_name_00000010 {
    cdoRefTypeId = 0,
    cdoRefTypeLocation = 1
} CdoReferenceType;
typedef enum __WIDL_cdosys_generated_name_00000011 {
    cdoSuppressNone = 0,
    cdoSuppressImages = 1,
    cdoSuppressBGSounds = 2,
    cdoSuppressFrames = 4,
    cdoSuppressObjects = 8,
    cdoSuppressStyleSheets = 16,
    cdoSuppressAll = 31
} CdoMHTMLFlags;
typedef enum __WIDL_cdosys_generated_name_00000012 {
    cdoDefaults = 0xffffffff,
    cdoIIS = 1,
    cdoOutlookExpress = 2
} CdoConfigSource;
/*****************************************************************************
 * IDataSource interface
 */
#ifndef __IDataSource_INTERFACE_DEFINED__
#define __IDataSource_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDataSource, 0xcd000029, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cd000029-8b95-11d1-82db-00c04fb1625d")
IDataSource : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_SourceClass(
        BSTR *source) = 0;

    virtual HRESULT STDMETHODCALLTYPE Source(
        IUnknown **source) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsDirty(
        VARIANT_BOOL *dirty) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_IsDirty(
        VARIANT_BOOL dirty) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SourceURL(
        BSTR *url) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ActiveConnection(
        _Connection **connection) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveToObject(
        IUnknown *source,
        BSTR iname) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenObject(
        IUnknown *source,
        BSTR iname) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveTo(
        BSTR url,
        IDispatch *connection,
        ConnectModeEnum mode,
        RecordCreateOptionsEnum create,
        RecordOpenOptionsEnum options,
        BSTR username,
        BSTR password) = 0;

    virtual HRESULT STDMETHODCALLTYPE Open(
        BSTR url,
        IDispatch *connection,
        ConnectModeEnum mode,
        RecordCreateOptionsEnum create,
        RecordOpenOptionsEnum options,
        BSTR username,
        BSTR password) = 0;

    virtual HRESULT STDMETHODCALLTYPE Save(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveToContainer(
        BSTR url,
        IDispatch *connection,
        ConnectModeEnum mode,
        RecordCreateOptionsEnum create,
        RecordOpenOptionsEnum options,
        BSTR username,
        BSTR password) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDataSource, 0xcd000029, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d)
#endif
#else
typedef struct IDataSourceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IDataSource *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IDataSource *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IDataSource *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IDataSource *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IDataSource methods ***/
    HRESULT (STDMETHODCALLTYPE *get_SourceClass)(
        IDataSource *This,
        BSTR *source);

    HRESULT (STDMETHODCALLTYPE *Source)(
        IDataSource *This,
        IUnknown **source);

    HRESULT (STDMETHODCALLTYPE *get_IsDirty)(
        IDataSource *This,
        VARIANT_BOOL *dirty);

    HRESULT (STDMETHODCALLTYPE *put_IsDirty)(
        IDataSource *This,
        VARIANT_BOOL dirty);

    HRESULT (STDMETHODCALLTYPE *get_SourceURL)(
        IDataSource *This,
        BSTR *url);

    HRESULT (STDMETHODCALLTYPE *get_ActiveConnection)(
        IDataSource *This,
        _Connection **connection);

    HRESULT (STDMETHODCALLTYPE *SaveToObject)(
        IDataSource *This,
        IUnknown *source,
        BSTR iname);

    HRESULT (STDMETHODCALLTYPE *OpenObject)(
        IDataSource *This,
        IUnknown *source,
        BSTR iname);

    HRESULT (STDMETHODCALLTYPE *SaveTo)(
        IDataSource *This,
        BSTR url,
        IDispatch *connection,
        ConnectModeEnum mode,
        RecordCreateOptionsEnum create,
        RecordOpenOptionsEnum options,
        BSTR username,
        BSTR password);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IDataSource *This,
        BSTR url,
        IDispatch *connection,
        ConnectModeEnum mode,
        RecordCreateOptionsEnum create,
        RecordOpenOptionsEnum options,
        BSTR username,
        BSTR password);

    HRESULT (STDMETHODCALLTYPE *Save)(
        IDataSource *This);

    HRESULT (STDMETHODCALLTYPE *SaveToContainer)(
        IDataSource *This,
        BSTR url,
        IDispatch *connection,
        ConnectModeEnum mode,
        RecordCreateOptionsEnum create,
        RecordOpenOptionsEnum options,
        BSTR username,
        BSTR password);

    END_INTERFACE
} IDataSourceVtbl;

interface IDataSource {
    CONST_VTBL IDataSourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDataSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDataSource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDataSource_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IDataSource_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IDataSource_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IDataSource_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IDataSource_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IDataSource methods ***/
#define IDataSource_get_SourceClass(This,source) (This)->lpVtbl->get_SourceClass(This,source)
#define IDataSource_Source(This,source) (This)->lpVtbl->Source(This,source)
#define IDataSource_get_IsDirty(This,dirty) (This)->lpVtbl->get_IsDirty(This,dirty)
#define IDataSource_put_IsDirty(This,dirty) (This)->lpVtbl->put_IsDirty(This,dirty)
#define IDataSource_get_SourceURL(This,url) (This)->lpVtbl->get_SourceURL(This,url)
#define IDataSource_get_ActiveConnection(This,connection) (This)->lpVtbl->get_ActiveConnection(This,connection)
#define IDataSource_SaveToObject(This,source,iname) (This)->lpVtbl->SaveToObject(This,source,iname)
#define IDataSource_OpenObject(This,source,iname) (This)->lpVtbl->OpenObject(This,source,iname)
#define IDataSource_SaveTo(This,url,connection,mode,create,options,username,password) (This)->lpVtbl->SaveTo(This,url,connection,mode,create,options,username,password)
#define IDataSource_Open(This,url,connection,mode,create,options,username,password) (This)->lpVtbl->Open(This,url,connection,mode,create,options,username,password)
#define IDataSource_Save(This) (This)->lpVtbl->Save(This)
#define IDataSource_SaveToContainer(This,url,connection,mode,create,options,username,password) (This)->lpVtbl->SaveToContainer(This,url,connection,mode,create,options,username,password)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDataSource_QueryInterface(IDataSource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDataSource_AddRef(IDataSource* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDataSource_Release(IDataSource* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IDataSource_GetTypeInfoCount(IDataSource* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IDataSource_GetTypeInfo(IDataSource* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IDataSource_GetIDsOfNames(IDataSource* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IDataSource_Invoke(IDataSource* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IDataSource methods ***/
static FORCEINLINE HRESULT IDataSource_get_SourceClass(IDataSource* This,BSTR *source) {
    return This->lpVtbl->get_SourceClass(This,source);
}
static FORCEINLINE HRESULT IDataSource_Source(IDataSource* This,IUnknown **source) {
    return This->lpVtbl->Source(This,source);
}
static FORCEINLINE HRESULT IDataSource_get_IsDirty(IDataSource* This,VARIANT_BOOL *dirty) {
    return This->lpVtbl->get_IsDirty(This,dirty);
}
static FORCEINLINE HRESULT IDataSource_put_IsDirty(IDataSource* This,VARIANT_BOOL dirty) {
    return This->lpVtbl->put_IsDirty(This,dirty);
}
static FORCEINLINE HRESULT IDataSource_get_SourceURL(IDataSource* This,BSTR *url) {
    return This->lpVtbl->get_SourceURL(This,url);
}
static FORCEINLINE HRESULT IDataSource_get_ActiveConnection(IDataSource* This,_Connection **connection) {
    return This->lpVtbl->get_ActiveConnection(This,connection);
}
static FORCEINLINE HRESULT IDataSource_SaveToObject(IDataSource* This,IUnknown *source,BSTR iname) {
    return This->lpVtbl->SaveToObject(This,source,iname);
}
static FORCEINLINE HRESULT IDataSource_OpenObject(IDataSource* This,IUnknown *source,BSTR iname) {
    return This->lpVtbl->OpenObject(This,source,iname);
}
static FORCEINLINE HRESULT IDataSource_SaveTo(IDataSource* This,BSTR url,IDispatch *connection,ConnectModeEnum mode,RecordCreateOptionsEnum create,RecordOpenOptionsEnum options,BSTR username,BSTR password) {
    return This->lpVtbl->SaveTo(This,url,connection,mode,create,options,username,password);
}
static FORCEINLINE HRESULT IDataSource_Open(IDataSource* This,BSTR url,IDispatch *connection,ConnectModeEnum mode,RecordCreateOptionsEnum create,RecordOpenOptionsEnum options,BSTR username,BSTR password) {
    return This->lpVtbl->Open(This,url,connection,mode,create,options,username,password);
}
static FORCEINLINE HRESULT IDataSource_Save(IDataSource* This) {
    return This->lpVtbl->Save(This);
}
static FORCEINLINE HRESULT IDataSource_SaveToContainer(IDataSource* This,BSTR url,IDispatch *connection,ConnectModeEnum mode,RecordCreateOptionsEnum create,RecordOpenOptionsEnum options,BSTR username,BSTR password) {
    return This->lpVtbl->SaveToContainer(This,url,connection,mode,create,options,username,password);
}
#endif
#endif

#endif


#endif  /* __IDataSource_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBodyParts interface
 */
#ifndef __IBodyParts_INTERFACE_DEFINED__
#define __IBodyParts_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBodyParts, 0xcd000023, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cd000023-8b95-11d1-82db-00c04fb1625d")
IBodyParts : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Item(
        LONG index,
        IBodyPart **body) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE Delete(
        VARIANT bodypart) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteAll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Add(
        LONG index,
        IBodyPart **bodypart) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBodyParts, 0xcd000023, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d)
#endif
#else
typedef struct IBodyPartsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IBodyParts *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IBodyParts *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IBodyParts *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IBodyParts *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IBodyParts methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IBodyParts *This,
        LONG *count);

    HRESULT (STDMETHODCALLTYPE *get_Item)(
        IBodyParts *This,
        LONG index,
        IBodyPart **body);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IBodyParts *This,
        IUnknown **retval);

    HRESULT (STDMETHODCALLTYPE *Delete)(
        IBodyParts *This,
        VARIANT bodypart);

    HRESULT (STDMETHODCALLTYPE *DeleteAll)(
        IBodyParts *This);

    HRESULT (STDMETHODCALLTYPE *Add)(
        IBodyParts *This,
        LONG index,
        IBodyPart **bodypart);

    END_INTERFACE
} IBodyPartsVtbl;

interface IBodyParts {
    CONST_VTBL IBodyPartsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBodyParts_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBodyParts_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBodyParts_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IBodyParts_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IBodyParts_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IBodyParts_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IBodyParts_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IBodyParts methods ***/
#define IBodyParts_get_Count(This,count) (This)->lpVtbl->get_Count(This,count)
#define IBodyParts_get_Item(This,index,body) (This)->lpVtbl->get_Item(This,index,body)
#define IBodyParts_get__NewEnum(This,retval) (This)->lpVtbl->get__NewEnum(This,retval)
#define IBodyParts_Delete(This,bodypart) (This)->lpVtbl->Delete(This,bodypart)
#define IBodyParts_DeleteAll(This) (This)->lpVtbl->DeleteAll(This)
#define IBodyParts_Add(This,index,bodypart) (This)->lpVtbl->Add(This,index,bodypart)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBodyParts_QueryInterface(IBodyParts* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBodyParts_AddRef(IBodyParts* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBodyParts_Release(IBodyParts* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IBodyParts_GetTypeInfoCount(IBodyParts* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IBodyParts_GetTypeInfo(IBodyParts* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IBodyParts_GetIDsOfNames(IBodyParts* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IBodyParts_Invoke(IBodyParts* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IBodyParts methods ***/
static FORCEINLINE HRESULT IBodyParts_get_Count(IBodyParts* This,LONG *count) {
    return This->lpVtbl->get_Count(This,count);
}
static FORCEINLINE HRESULT IBodyParts_get_Item(IBodyParts* This,LONG index,IBodyPart **body) {
    return This->lpVtbl->get_Item(This,index,body);
}
static FORCEINLINE HRESULT IBodyParts_get__NewEnum(IBodyParts* This,IUnknown **retval) {
    return This->lpVtbl->get__NewEnum(This,retval);
}
static FORCEINLINE HRESULT IBodyParts_Delete(IBodyParts* This,VARIANT bodypart) {
    return This->lpVtbl->Delete(This,bodypart);
}
static FORCEINLINE HRESULT IBodyParts_DeleteAll(IBodyParts* This) {
    return This->lpVtbl->DeleteAll(This);
}
static FORCEINLINE HRESULT IBodyParts_Add(IBodyParts* This,LONG index,IBodyPart **bodypart) {
    return This->lpVtbl->Add(This,index,bodypart);
}
#endif
#endif

#endif


#endif  /* __IBodyParts_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBodyPart interface
 */
#ifndef __IBodyPart_INTERFACE_DEFINED__
#define __IBodyPart_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBodyPart, 0xcd000021, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cd000021-8b95-11d1-82db-00c04fb1625d")
IBodyPart : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_BodyParts(
        IBodyParts **bodypart) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ContentTransferEncoding(
        BSTR *encoding) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ContentTransferEncoding(
        BSTR encoding) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ContentMediaType(
        BSTR *mediatype) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ContentMediaType(
        BSTR mediatype) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Fields(
        Fields *fields) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Charset(
        BSTR *charset) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Charset(
        BSTR charset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FileName(
        BSTR *filename) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DataSource(
        IDataSource *datasource) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ContentClass(
        BSTR *content) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ContentClass(
        BSTR content) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ContentClassName(
        BSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ContentClassName(
        BSTR name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IBodyPart **parent) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddBodyPart(
        LONG index,
        IBodyPart **bodypart) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveToFile(
        BSTR filename) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEncodedContentStream(
        _Stream **stream) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDecodedContentStream(
        _Stream **stream) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStream(
        _Stream **stream) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFieldParameter(
        BSTR fieldname,
        BSTR parameter,
        BSTR *streamalue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInterface(
        BSTR iface,
        IDispatch **unk) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBodyPart, 0xcd000021, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d)
#endif
#else
typedef struct IBodyPartVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IBodyPart *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IBodyPart *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IBodyPart *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IBodyPart *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IBodyPart methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BodyParts)(
        IBodyPart *This,
        IBodyParts **bodypart);

    HRESULT (STDMETHODCALLTYPE *get_ContentTransferEncoding)(
        IBodyPart *This,
        BSTR *encoding);

    HRESULT (STDMETHODCALLTYPE *put_ContentTransferEncoding)(
        IBodyPart *This,
        BSTR encoding);

    HRESULT (STDMETHODCALLTYPE *get_ContentMediaType)(
        IBodyPart *This,
        BSTR *mediatype);

    HRESULT (STDMETHODCALLTYPE *put_ContentMediaType)(
        IBodyPart *This,
        BSTR mediatype);

    HRESULT (STDMETHODCALLTYPE *get_Fields)(
        IBodyPart *This,
        Fields *fields);

    HRESULT (STDMETHODCALLTYPE *get_Charset)(
        IBodyPart *This,
        BSTR *charset);

    HRESULT (STDMETHODCALLTYPE *put_Charset)(
        IBodyPart *This,
        BSTR charset);

    HRESULT (STDMETHODCALLTYPE *get_FileName)(
        IBodyPart *This,
        BSTR *filename);

    HRESULT (STDMETHODCALLTYPE *get_DataSource)(
        IBodyPart *This,
        IDataSource *datasource);

    HRESULT (STDMETHODCALLTYPE *get_ContentClass)(
        IBodyPart *This,
        BSTR *content);

    HRESULT (STDMETHODCALLTYPE *put_ContentClass)(
        IBodyPart *This,
        BSTR content);

    HRESULT (STDMETHODCALLTYPE *get_ContentClassName)(
        IBodyPart *This,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *put_ContentClassName)(
        IBodyPart *This,
        BSTR name);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IBodyPart *This,
        IBodyPart **parent);

    HRESULT (STDMETHODCALLTYPE *AddBodyPart)(
        IBodyPart *This,
        LONG index,
        IBodyPart **bodypart);

    HRESULT (STDMETHODCALLTYPE *SaveToFile)(
        IBodyPart *This,
        BSTR filename);

    HRESULT (STDMETHODCALLTYPE *GetEncodedContentStream)(
        IBodyPart *This,
        _Stream **stream);

    HRESULT (STDMETHODCALLTYPE *GetDecodedContentStream)(
        IBodyPart *This,
        _Stream **stream);

    HRESULT (STDMETHODCALLTYPE *GetStream)(
        IBodyPart *This,
        _Stream **stream);

    HRESULT (STDMETHODCALLTYPE *GetFieldParameter)(
        IBodyPart *This,
        BSTR fieldname,
        BSTR parameter,
        BSTR *streamalue);

    HRESULT (STDMETHODCALLTYPE *GetInterface)(
        IBodyPart *This,
        BSTR iface,
        IDispatch **unk);

    END_INTERFACE
} IBodyPartVtbl;

interface IBodyPart {
    CONST_VTBL IBodyPartVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBodyPart_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBodyPart_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBodyPart_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IBodyPart_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IBodyPart_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IBodyPart_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IBodyPart_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IBodyPart methods ***/
#define IBodyPart_get_BodyParts(This,bodypart) (This)->lpVtbl->get_BodyParts(This,bodypart)
#define IBodyPart_get_ContentTransferEncoding(This,encoding) (This)->lpVtbl->get_ContentTransferEncoding(This,encoding)
#define IBodyPart_put_ContentTransferEncoding(This,encoding) (This)->lpVtbl->put_ContentTransferEncoding(This,encoding)
#define IBodyPart_get_ContentMediaType(This,mediatype) (This)->lpVtbl->get_ContentMediaType(This,mediatype)
#define IBodyPart_put_ContentMediaType(This,mediatype) (This)->lpVtbl->put_ContentMediaType(This,mediatype)
#define IBodyPart_get_Fields(This,fields) (This)->lpVtbl->get_Fields(This,fields)
#define IBodyPart_get_Charset(This,charset) (This)->lpVtbl->get_Charset(This,charset)
#define IBodyPart_put_Charset(This,charset) (This)->lpVtbl->put_Charset(This,charset)
#define IBodyPart_get_FileName(This,filename) (This)->lpVtbl->get_FileName(This,filename)
#define IBodyPart_get_DataSource(This,datasource) (This)->lpVtbl->get_DataSource(This,datasource)
#define IBodyPart_get_ContentClass(This,content) (This)->lpVtbl->get_ContentClass(This,content)
#define IBodyPart_put_ContentClass(This,content) (This)->lpVtbl->put_ContentClass(This,content)
#define IBodyPart_get_ContentClassName(This,name) (This)->lpVtbl->get_ContentClassName(This,name)
#define IBodyPart_put_ContentClassName(This,name) (This)->lpVtbl->put_ContentClassName(This,name)
#define IBodyPart_get_Parent(This,parent) (This)->lpVtbl->get_Parent(This,parent)
#define IBodyPart_AddBodyPart(This,index,bodypart) (This)->lpVtbl->AddBodyPart(This,index,bodypart)
#define IBodyPart_SaveToFile(This,filename) (This)->lpVtbl->SaveToFile(This,filename)
#define IBodyPart_GetEncodedContentStream(This,stream) (This)->lpVtbl->GetEncodedContentStream(This,stream)
#define IBodyPart_GetDecodedContentStream(This,stream) (This)->lpVtbl->GetDecodedContentStream(This,stream)
#define IBodyPart_GetStream(This,stream) (This)->lpVtbl->GetStream(This,stream)
#define IBodyPart_GetFieldParameter(This,fieldname,parameter,streamalue) (This)->lpVtbl->GetFieldParameter(This,fieldname,parameter,streamalue)
#define IBodyPart_GetInterface(This,iface,unk) (This)->lpVtbl->GetInterface(This,iface,unk)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBodyPart_QueryInterface(IBodyPart* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBodyPart_AddRef(IBodyPart* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBodyPart_Release(IBodyPart* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IBodyPart_GetTypeInfoCount(IBodyPart* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IBodyPart_GetTypeInfo(IBodyPart* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IBodyPart_GetIDsOfNames(IBodyPart* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IBodyPart_Invoke(IBodyPart* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IBodyPart methods ***/
static FORCEINLINE HRESULT IBodyPart_get_BodyParts(IBodyPart* This,IBodyParts **bodypart) {
    return This->lpVtbl->get_BodyParts(This,bodypart);
}
static FORCEINLINE HRESULT IBodyPart_get_ContentTransferEncoding(IBodyPart* This,BSTR *encoding) {
    return This->lpVtbl->get_ContentTransferEncoding(This,encoding);
}
static FORCEINLINE HRESULT IBodyPart_put_ContentTransferEncoding(IBodyPart* This,BSTR encoding) {
    return This->lpVtbl->put_ContentTransferEncoding(This,encoding);
}
static FORCEINLINE HRESULT IBodyPart_get_ContentMediaType(IBodyPart* This,BSTR *mediatype) {
    return This->lpVtbl->get_ContentMediaType(This,mediatype);
}
static FORCEINLINE HRESULT IBodyPart_put_ContentMediaType(IBodyPart* This,BSTR mediatype) {
    return This->lpVtbl->put_ContentMediaType(This,mediatype);
}
static FORCEINLINE HRESULT IBodyPart_get_Fields(IBodyPart* This,Fields *fields) {
    return This->lpVtbl->get_Fields(This,fields);
}
static FORCEINLINE HRESULT IBodyPart_get_Charset(IBodyPart* This,BSTR *charset) {
    return This->lpVtbl->get_Charset(This,charset);
}
static FORCEINLINE HRESULT IBodyPart_put_Charset(IBodyPart* This,BSTR charset) {
    return This->lpVtbl->put_Charset(This,charset);
}
static FORCEINLINE HRESULT IBodyPart_get_FileName(IBodyPart* This,BSTR *filename) {
    return This->lpVtbl->get_FileName(This,filename);
}
static FORCEINLINE HRESULT IBodyPart_get_DataSource(IBodyPart* This,IDataSource *datasource) {
    return This->lpVtbl->get_DataSource(This,datasource);
}
static FORCEINLINE HRESULT IBodyPart_get_ContentClass(IBodyPart* This,BSTR *content) {
    return This->lpVtbl->get_ContentClass(This,content);
}
static FORCEINLINE HRESULT IBodyPart_put_ContentClass(IBodyPart* This,BSTR content) {
    return This->lpVtbl->put_ContentClass(This,content);
}
static FORCEINLINE HRESULT IBodyPart_get_ContentClassName(IBodyPart* This,BSTR *name) {
    return This->lpVtbl->get_ContentClassName(This,name);
}
static FORCEINLINE HRESULT IBodyPart_put_ContentClassName(IBodyPart* This,BSTR name) {
    return This->lpVtbl->put_ContentClassName(This,name);
}
static FORCEINLINE HRESULT IBodyPart_get_Parent(IBodyPart* This,IBodyPart **parent) {
    return This->lpVtbl->get_Parent(This,parent);
}
static FORCEINLINE HRESULT IBodyPart_AddBodyPart(IBodyPart* This,LONG index,IBodyPart **bodypart) {
    return This->lpVtbl->AddBodyPart(This,index,bodypart);
}
static FORCEINLINE HRESULT IBodyPart_SaveToFile(IBodyPart* This,BSTR filename) {
    return This->lpVtbl->SaveToFile(This,filename);
}
static FORCEINLINE HRESULT IBodyPart_GetEncodedContentStream(IBodyPart* This,_Stream **stream) {
    return This->lpVtbl->GetEncodedContentStream(This,stream);
}
static FORCEINLINE HRESULT IBodyPart_GetDecodedContentStream(IBodyPart* This,_Stream **stream) {
    return This->lpVtbl->GetDecodedContentStream(This,stream);
}
static FORCEINLINE HRESULT IBodyPart_GetStream(IBodyPart* This,_Stream **stream) {
    return This->lpVtbl->GetStream(This,stream);
}
static FORCEINLINE HRESULT IBodyPart_GetFieldParameter(IBodyPart* This,BSTR fieldname,BSTR parameter,BSTR *streamalue) {
    return This->lpVtbl->GetFieldParameter(This,fieldname,parameter,streamalue);
}
static FORCEINLINE HRESULT IBodyPart_GetInterface(IBodyPart* This,BSTR iface,IDispatch **unk) {
    return This->lpVtbl->GetInterface(This,iface,unk);
}
#endif
#endif

#endif


#endif  /* __IBodyPart_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IConfiguration interface
 */
#ifndef __IConfiguration_INTERFACE_DEFINED__
#define __IConfiguration_INTERFACE_DEFINED__

DEFINE_GUID(IID_IConfiguration, 0xcd000022, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cd000022-8b95-11d1-82db-00c04fb1625d")
IConfiguration : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Fields(
        Fields **fields) = 0;

    virtual HRESULT STDMETHODCALLTYPE Load(
        CdoConfigSource source,
        BSTR url) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInterface(
        BSTR iname,
        IDispatch **unk) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IConfiguration, 0xcd000022, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d)
#endif
#else
typedef struct IConfigurationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IConfiguration *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IConfiguration *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IConfiguration *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IConfiguration *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IConfiguration methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Fields)(
        IConfiguration *This,
        Fields **fields);

    HRESULT (STDMETHODCALLTYPE *Load)(
        IConfiguration *This,
        CdoConfigSource source,
        BSTR url);

    HRESULT (STDMETHODCALLTYPE *GetInterface)(
        IConfiguration *This,
        BSTR iname,
        IDispatch **unk);

    END_INTERFACE
} IConfigurationVtbl;

interface IConfiguration {
    CONST_VTBL IConfigurationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IConfiguration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IConfiguration_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IConfiguration_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IConfiguration_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IConfiguration_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IConfiguration_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IConfiguration_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IConfiguration methods ***/
#define IConfiguration_get_Fields(This,fields) (This)->lpVtbl->get_Fields(This,fields)
#define IConfiguration_Load(This,source,url) (This)->lpVtbl->Load(This,source,url)
#define IConfiguration_GetInterface(This,iname,unk) (This)->lpVtbl->GetInterface(This,iname,unk)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IConfiguration_QueryInterface(IConfiguration* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IConfiguration_AddRef(IConfiguration* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IConfiguration_Release(IConfiguration* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IConfiguration_GetTypeInfoCount(IConfiguration* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IConfiguration_GetTypeInfo(IConfiguration* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IConfiguration_GetIDsOfNames(IConfiguration* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IConfiguration_Invoke(IConfiguration* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IConfiguration methods ***/
static FORCEINLINE HRESULT IConfiguration_get_Fields(IConfiguration* This,Fields **fields) {
    return This->lpVtbl->get_Fields(This,fields);
}
static FORCEINLINE HRESULT IConfiguration_Load(IConfiguration* This,CdoConfigSource source,BSTR url) {
    return This->lpVtbl->Load(This,source,url);
}
static FORCEINLINE HRESULT IConfiguration_GetInterface(IConfiguration* This,BSTR iname,IDispatch **unk) {
    return This->lpVtbl->GetInterface(This,iname,unk);
}
#endif
#endif

#endif


#endif  /* __IConfiguration_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMessage interface
 */
#ifndef __IMessage_INTERFACE_DEFINED__
#define __IMessage_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMessage, 0xcd000020, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cd000020-8b95-11d1-82db-00c04fb1625d")
IMessage : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_BCC(
        BSTR *bcc) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BCC(
        BSTR bcc) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CC(
        BSTR *cc) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CC(
        BSTR cc) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FollowUpTo(
        BSTR *follow) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FollowUpTo(
        BSTR follow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_From(
        BSTR *from) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_From(
        BSTR from) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Keywords(
        BSTR *keywords) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Keywords(
        BSTR keywords) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MimeFormatted(
        VARIANT_BOOL *formatted) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MimeFormatted(
        VARIANT_BOOL formatted) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Newsgroups(
        BSTR *newsgroups) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Newsgroups(
        BSTR newsgroups) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Organization(
        BSTR *organization) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Organization(
        BSTR organization) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ReceivedTime(
        DATE *received) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ReplyTo(
        BSTR *reply) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ReplyTo(
        BSTR reply) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DSNOptions(
        CdoDSNOptions *options) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DSNOptions(
        CdoDSNOptions options) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SentOn(
        DATE *sent) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Subject(
        BSTR *subject) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Subject(
        BSTR subject) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_To(
        BSTR *to) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_To(
        BSTR to) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TextBody(
        BSTR *body) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TextBody(
        BSTR body) = 0;

    virtual HRESULT STDMETHODCALLTYPE HTMLBody(
        BSTR *body) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_HTMLBody(
        BSTR body) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Attachments(
        IBodyParts **attachments) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Sender(
        BSTR *sender) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Sender(
        BSTR sender) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Configuration(
        IConfiguration **config) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Configuration(
        IConfiguration *config) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_Configuration(
        IConfiguration *config) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AutoGenerateTextBody(
        VARIANT_BOOL *body) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AutoGenerateTextBody(
        VARIANT_BOOL body) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EnvelopeFields(
        Fields **fields) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TextBodyPart(
        IBodyPart **body) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HTMLBodyPart(
        IBodyPart **body) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BodyPart(
        IBodyPart **part) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DataSource(
        IDataSource **datasource) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Fields(
        Fields **fields) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MDNRequested(
        VARIANT_BOOL *requested) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MDNRequested(
        VARIANT_BOOL requested) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddRelatedBodyPart(
        BSTR url,
        BSTR Reference,
        CdoReferenceType ReferenceType,
        BSTR username,
        BSTR password,
        IBodyPart **body) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddAttachment(
        BSTR url,
        BSTR username,
        BSTR password,
        IBodyPart **body) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMHTMLBody(
        BSTR url,
        CdoMHTMLFlags flags,
        BSTR username,
        BSTR password) = 0;

    virtual HRESULT STDMETHODCALLTYPE Forward(
        IMessage **msg) = 0;

    virtual HRESULT STDMETHODCALLTYPE Post(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PostReply(
        IMessage **msg) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reply(
        IMessage **msg) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReplyAll(
        IMessage **msg) = 0;

    virtual HRESULT STDMETHODCALLTYPE Send(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStream(
        _Stream **stream) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInterface(
        BSTR name,
        IDispatch **unknown) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMessage, 0xcd000020, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d)
#endif
#else
typedef struct IMessageVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IMessage *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IMessage *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IMessage *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IMessage *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IMessage methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BCC)(
        IMessage *This,
        BSTR *bcc);

    HRESULT (STDMETHODCALLTYPE *put_BCC)(
        IMessage *This,
        BSTR bcc);

    HRESULT (STDMETHODCALLTYPE *get_CC)(
        IMessage *This,
        BSTR *cc);

    HRESULT (STDMETHODCALLTYPE *put_CC)(
        IMessage *This,
        BSTR cc);

    HRESULT (STDMETHODCALLTYPE *get_FollowUpTo)(
        IMessage *This,
        BSTR *follow);

    HRESULT (STDMETHODCALLTYPE *put_FollowUpTo)(
        IMessage *This,
        BSTR follow);

    HRESULT (STDMETHODCALLTYPE *get_From)(
        IMessage *This,
        BSTR *from);

    HRESULT (STDMETHODCALLTYPE *put_From)(
        IMessage *This,
        BSTR from);

    HRESULT (STDMETHODCALLTYPE *get_Keywords)(
        IMessage *This,
        BSTR *keywords);

    HRESULT (STDMETHODCALLTYPE *put_Keywords)(
        IMessage *This,
        BSTR keywords);

    HRESULT (STDMETHODCALLTYPE *get_MimeFormatted)(
        IMessage *This,
        VARIANT_BOOL *formatted);

    HRESULT (STDMETHODCALLTYPE *put_MimeFormatted)(
        IMessage *This,
        VARIANT_BOOL formatted);

    HRESULT (STDMETHODCALLTYPE *get_Newsgroups)(
        IMessage *This,
        BSTR *newsgroups);

    HRESULT (STDMETHODCALLTYPE *put_Newsgroups)(
        IMessage *This,
        BSTR newsgroups);

    HRESULT (STDMETHODCALLTYPE *get_Organization)(
        IMessage *This,
        BSTR *organization);

    HRESULT (STDMETHODCALLTYPE *put_Organization)(
        IMessage *This,
        BSTR organization);

    HRESULT (STDMETHODCALLTYPE *get_ReceivedTime)(
        IMessage *This,
        DATE *received);

    HRESULT (STDMETHODCALLTYPE *get_ReplyTo)(
        IMessage *This,
        BSTR *reply);

    HRESULT (STDMETHODCALLTYPE *put_ReplyTo)(
        IMessage *This,
        BSTR reply);

    HRESULT (STDMETHODCALLTYPE *get_DSNOptions)(
        IMessage *This,
        CdoDSNOptions *options);

    HRESULT (STDMETHODCALLTYPE *put_DSNOptions)(
        IMessage *This,
        CdoDSNOptions options);

    HRESULT (STDMETHODCALLTYPE *get_SentOn)(
        IMessage *This,
        DATE *sent);

    HRESULT (STDMETHODCALLTYPE *get_Subject)(
        IMessage *This,
        BSTR *subject);

    HRESULT (STDMETHODCALLTYPE *put_Subject)(
        IMessage *This,
        BSTR subject);

    HRESULT (STDMETHODCALLTYPE *get_To)(
        IMessage *This,
        BSTR *to);

    HRESULT (STDMETHODCALLTYPE *put_To)(
        IMessage *This,
        BSTR to);

    HRESULT (STDMETHODCALLTYPE *get_TextBody)(
        IMessage *This,
        BSTR *body);

    HRESULT (STDMETHODCALLTYPE *put_TextBody)(
        IMessage *This,
        BSTR body);

    HRESULT (STDMETHODCALLTYPE *HTMLBody)(
        IMessage *This,
        BSTR *body);

    HRESULT (STDMETHODCALLTYPE *put_HTMLBody)(
        IMessage *This,
        BSTR body);

    HRESULT (STDMETHODCALLTYPE *get_Attachments)(
        IMessage *This,
        IBodyParts **attachments);

    HRESULT (STDMETHODCALLTYPE *get_Sender)(
        IMessage *This,
        BSTR *sender);

    HRESULT (STDMETHODCALLTYPE *put_Sender)(
        IMessage *This,
        BSTR sender);

    HRESULT (STDMETHODCALLTYPE *get_Configuration)(
        IMessage *This,
        IConfiguration **config);

    HRESULT (STDMETHODCALLTYPE *put_Configuration)(
        IMessage *This,
        IConfiguration *config);

    HRESULT (STDMETHODCALLTYPE *putref_Configuration)(
        IMessage *This,
        IConfiguration *config);

    HRESULT (STDMETHODCALLTYPE *get_AutoGenerateTextBody)(
        IMessage *This,
        VARIANT_BOOL *body);

    HRESULT (STDMETHODCALLTYPE *put_AutoGenerateTextBody)(
        IMessage *This,
        VARIANT_BOOL body);

    HRESULT (STDMETHODCALLTYPE *get_EnvelopeFields)(
        IMessage *This,
        Fields **fields);

    HRESULT (STDMETHODCALLTYPE *get_TextBodyPart)(
        IMessage *This,
        IBodyPart **body);

    HRESULT (STDMETHODCALLTYPE *get_HTMLBodyPart)(
        IMessage *This,
        IBodyPart **body);

    HRESULT (STDMETHODCALLTYPE *get_BodyPart)(
        IMessage *This,
        IBodyPart **part);

    HRESULT (STDMETHODCALLTYPE *get_DataSource)(
        IMessage *This,
        IDataSource **datasource);

    HRESULT (STDMETHODCALLTYPE *get_Fields)(
        IMessage *This,
        Fields **fields);

    HRESULT (STDMETHODCALLTYPE *get_MDNRequested)(
        IMessage *This,
        VARIANT_BOOL *requested);

    HRESULT (STDMETHODCALLTYPE *put_MDNRequested)(
        IMessage *This,
        VARIANT_BOOL requested);

    HRESULT (STDMETHODCALLTYPE *AddRelatedBodyPart)(
        IMessage *This,
        BSTR url,
        BSTR Reference,
        CdoReferenceType ReferenceType,
        BSTR username,
        BSTR password,
        IBodyPart **body);

    HRESULT (STDMETHODCALLTYPE *AddAttachment)(
        IMessage *This,
        BSTR url,
        BSTR username,
        BSTR password,
        IBodyPart **body);

    HRESULT (STDMETHODCALLTYPE *CreateMHTMLBody)(
        IMessage *This,
        BSTR url,
        CdoMHTMLFlags flags,
        BSTR username,
        BSTR password);

    HRESULT (STDMETHODCALLTYPE *Forward)(
        IMessage *This,
        IMessage **msg);

    HRESULT (STDMETHODCALLTYPE *Post)(
        IMessage *This);

    HRESULT (STDMETHODCALLTYPE *PostReply)(
        IMessage *This,
        IMessage **msg);

    HRESULT (STDMETHODCALLTYPE *Reply)(
        IMessage *This,
        IMessage **msg);

    HRESULT (STDMETHODCALLTYPE *ReplyAll)(
        IMessage *This,
        IMessage **msg);

    HRESULT (STDMETHODCALLTYPE *Send)(
        IMessage *This);

    HRESULT (STDMETHODCALLTYPE *GetStream)(
        IMessage *This,
        _Stream **stream);

    HRESULT (STDMETHODCALLTYPE *GetInterface)(
        IMessage *This,
        BSTR name,
        IDispatch **unknown);

    END_INTERFACE
} IMessageVtbl;

interface IMessage {
    CONST_VTBL IMessageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMessage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMessage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMessage_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IMessage_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IMessage_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IMessage_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IMessage_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IMessage methods ***/
#define IMessage_get_BCC(This,bcc) (This)->lpVtbl->get_BCC(This,bcc)
#define IMessage_put_BCC(This,bcc) (This)->lpVtbl->put_BCC(This,bcc)
#define IMessage_get_CC(This,cc) (This)->lpVtbl->get_CC(This,cc)
#define IMessage_put_CC(This,cc) (This)->lpVtbl->put_CC(This,cc)
#define IMessage_get_FollowUpTo(This,follow) (This)->lpVtbl->get_FollowUpTo(This,follow)
#define IMessage_put_FollowUpTo(This,follow) (This)->lpVtbl->put_FollowUpTo(This,follow)
#define IMessage_get_From(This,from) (This)->lpVtbl->get_From(This,from)
#define IMessage_put_From(This,from) (This)->lpVtbl->put_From(This,from)
#define IMessage_get_Keywords(This,keywords) (This)->lpVtbl->get_Keywords(This,keywords)
#define IMessage_put_Keywords(This,keywords) (This)->lpVtbl->put_Keywords(This,keywords)
#define IMessage_get_MimeFormatted(This,formatted) (This)->lpVtbl->get_MimeFormatted(This,formatted)
#define IMessage_put_MimeFormatted(This,formatted) (This)->lpVtbl->put_MimeFormatted(This,formatted)
#define IMessage_get_Newsgroups(This,newsgroups) (This)->lpVtbl->get_Newsgroups(This,newsgroups)
#define IMessage_put_Newsgroups(This,newsgroups) (This)->lpVtbl->put_Newsgroups(This,newsgroups)
#define IMessage_get_Organization(This,organization) (This)->lpVtbl->get_Organization(This,organization)
#define IMessage_put_Organization(This,organization) (This)->lpVtbl->put_Organization(This,organization)
#define IMessage_get_ReceivedTime(This,received) (This)->lpVtbl->get_ReceivedTime(This,received)
#define IMessage_get_ReplyTo(This,reply) (This)->lpVtbl->get_ReplyTo(This,reply)
#define IMessage_put_ReplyTo(This,reply) (This)->lpVtbl->put_ReplyTo(This,reply)
#define IMessage_get_DSNOptions(This,options) (This)->lpVtbl->get_DSNOptions(This,options)
#define IMessage_put_DSNOptions(This,options) (This)->lpVtbl->put_DSNOptions(This,options)
#define IMessage_get_SentOn(This,sent) (This)->lpVtbl->get_SentOn(This,sent)
#define IMessage_get_Subject(This,subject) (This)->lpVtbl->get_Subject(This,subject)
#define IMessage_put_Subject(This,subject) (This)->lpVtbl->put_Subject(This,subject)
#define IMessage_get_To(This,to) (This)->lpVtbl->get_To(This,to)
#define IMessage_put_To(This,to) (This)->lpVtbl->put_To(This,to)
#define IMessage_get_TextBody(This,body) (This)->lpVtbl->get_TextBody(This,body)
#define IMessage_put_TextBody(This,body) (This)->lpVtbl->put_TextBody(This,body)
#define IMessage_HTMLBody(This,body) (This)->lpVtbl->HTMLBody(This,body)
#define IMessage_put_HTMLBody(This,body) (This)->lpVtbl->put_HTMLBody(This,body)
#define IMessage_get_Attachments(This,attachments) (This)->lpVtbl->get_Attachments(This,attachments)
#define IMessage_get_Sender(This,sender) (This)->lpVtbl->get_Sender(This,sender)
#define IMessage_put_Sender(This,sender) (This)->lpVtbl->put_Sender(This,sender)
#define IMessage_get_Configuration(This,config) (This)->lpVtbl->get_Configuration(This,config)
#define IMessage_put_Configuration(This,config) (This)->lpVtbl->put_Configuration(This,config)
#define IMessage_putref_Configuration(This,config) (This)->lpVtbl->putref_Configuration(This,config)
#define IMessage_get_AutoGenerateTextBody(This,body) (This)->lpVtbl->get_AutoGenerateTextBody(This,body)
#define IMessage_put_AutoGenerateTextBody(This,body) (This)->lpVtbl->put_AutoGenerateTextBody(This,body)
#define IMessage_get_EnvelopeFields(This,fields) (This)->lpVtbl->get_EnvelopeFields(This,fields)
#define IMessage_get_TextBodyPart(This,body) (This)->lpVtbl->get_TextBodyPart(This,body)
#define IMessage_get_HTMLBodyPart(This,body) (This)->lpVtbl->get_HTMLBodyPart(This,body)
#define IMessage_get_BodyPart(This,part) (This)->lpVtbl->get_BodyPart(This,part)
#define IMessage_get_DataSource(This,datasource) (This)->lpVtbl->get_DataSource(This,datasource)
#define IMessage_get_Fields(This,fields) (This)->lpVtbl->get_Fields(This,fields)
#define IMessage_get_MDNRequested(This,requested) (This)->lpVtbl->get_MDNRequested(This,requested)
#define IMessage_put_MDNRequested(This,requested) (This)->lpVtbl->put_MDNRequested(This,requested)
#define IMessage_AddRelatedBodyPart(This,url,Reference,ReferenceType,username,password,body) (This)->lpVtbl->AddRelatedBodyPart(This,url,Reference,ReferenceType,username,password,body)
#define IMessage_AddAttachment(This,url,username,password,body) (This)->lpVtbl->AddAttachment(This,url,username,password,body)
#define IMessage_CreateMHTMLBody(This,url,flags,username,password) (This)->lpVtbl->CreateMHTMLBody(This,url,flags,username,password)
#define IMessage_Forward(This,msg) (This)->lpVtbl->Forward(This,msg)
#define IMessage_Post(This) (This)->lpVtbl->Post(This)
#define IMessage_PostReply(This,msg) (This)->lpVtbl->PostReply(This,msg)
#define IMessage_Reply(This,msg) (This)->lpVtbl->Reply(This,msg)
#define IMessage_ReplyAll(This,msg) (This)->lpVtbl->ReplyAll(This,msg)
#define IMessage_Send(This) (This)->lpVtbl->Send(This)
#define IMessage_GetStream(This,stream) (This)->lpVtbl->GetStream(This,stream)
#define IMessage_GetInterface(This,name,unknown) (This)->lpVtbl->GetInterface(This,name,unknown)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IMessage_QueryInterface(IMessage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IMessage_AddRef(IMessage* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IMessage_Release(IMessage* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IMessage_GetTypeInfoCount(IMessage* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IMessage_GetTypeInfo(IMessage* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IMessage_GetIDsOfNames(IMessage* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IMessage_Invoke(IMessage* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IMessage methods ***/
static FORCEINLINE HRESULT IMessage_get_BCC(IMessage* This,BSTR *bcc) {
    return This->lpVtbl->get_BCC(This,bcc);
}
static FORCEINLINE HRESULT IMessage_put_BCC(IMessage* This,BSTR bcc) {
    return This->lpVtbl->put_BCC(This,bcc);
}
static FORCEINLINE HRESULT IMessage_get_CC(IMessage* This,BSTR *cc) {
    return This->lpVtbl->get_CC(This,cc);
}
static FORCEINLINE HRESULT IMessage_put_CC(IMessage* This,BSTR cc) {
    return This->lpVtbl->put_CC(This,cc);
}
static FORCEINLINE HRESULT IMessage_get_FollowUpTo(IMessage* This,BSTR *follow) {
    return This->lpVtbl->get_FollowUpTo(This,follow);
}
static FORCEINLINE HRESULT IMessage_put_FollowUpTo(IMessage* This,BSTR follow) {
    return This->lpVtbl->put_FollowUpTo(This,follow);
}
static FORCEINLINE HRESULT IMessage_get_From(IMessage* This,BSTR *from) {
    return This->lpVtbl->get_From(This,from);
}
static FORCEINLINE HRESULT IMessage_put_From(IMessage* This,BSTR from) {
    return This->lpVtbl->put_From(This,from);
}
static FORCEINLINE HRESULT IMessage_get_Keywords(IMessage* This,BSTR *keywords) {
    return This->lpVtbl->get_Keywords(This,keywords);
}
static FORCEINLINE HRESULT IMessage_put_Keywords(IMessage* This,BSTR keywords) {
    return This->lpVtbl->put_Keywords(This,keywords);
}
static FORCEINLINE HRESULT IMessage_get_MimeFormatted(IMessage* This,VARIANT_BOOL *formatted) {
    return This->lpVtbl->get_MimeFormatted(This,formatted);
}
static FORCEINLINE HRESULT IMessage_put_MimeFormatted(IMessage* This,VARIANT_BOOL formatted) {
    return This->lpVtbl->put_MimeFormatted(This,formatted);
}
static FORCEINLINE HRESULT IMessage_get_Newsgroups(IMessage* This,BSTR *newsgroups) {
    return This->lpVtbl->get_Newsgroups(This,newsgroups);
}
static FORCEINLINE HRESULT IMessage_put_Newsgroups(IMessage* This,BSTR newsgroups) {
    return This->lpVtbl->put_Newsgroups(This,newsgroups);
}
static FORCEINLINE HRESULT IMessage_get_Organization(IMessage* This,BSTR *organization) {
    return This->lpVtbl->get_Organization(This,organization);
}
static FORCEINLINE HRESULT IMessage_put_Organization(IMessage* This,BSTR organization) {
    return This->lpVtbl->put_Organization(This,organization);
}
static FORCEINLINE HRESULT IMessage_get_ReceivedTime(IMessage* This,DATE *received) {
    return This->lpVtbl->get_ReceivedTime(This,received);
}
static FORCEINLINE HRESULT IMessage_get_ReplyTo(IMessage* This,BSTR *reply) {
    return This->lpVtbl->get_ReplyTo(This,reply);
}
static FORCEINLINE HRESULT IMessage_put_ReplyTo(IMessage* This,BSTR reply) {
    return This->lpVtbl->put_ReplyTo(This,reply);
}
static FORCEINLINE HRESULT IMessage_get_DSNOptions(IMessage* This,CdoDSNOptions *options) {
    return This->lpVtbl->get_DSNOptions(This,options);
}
static FORCEINLINE HRESULT IMessage_put_DSNOptions(IMessage* This,CdoDSNOptions options) {
    return This->lpVtbl->put_DSNOptions(This,options);
}
static FORCEINLINE HRESULT IMessage_get_SentOn(IMessage* This,DATE *sent) {
    return This->lpVtbl->get_SentOn(This,sent);
}
static FORCEINLINE HRESULT IMessage_get_Subject(IMessage* This,BSTR *subject) {
    return This->lpVtbl->get_Subject(This,subject);
}
static FORCEINLINE HRESULT IMessage_put_Subject(IMessage* This,BSTR subject) {
    return This->lpVtbl->put_Subject(This,subject);
}
static FORCEINLINE HRESULT IMessage_get_To(IMessage* This,BSTR *to) {
    return This->lpVtbl->get_To(This,to);
}
static FORCEINLINE HRESULT IMessage_put_To(IMessage* This,BSTR to) {
    return This->lpVtbl->put_To(This,to);
}
static FORCEINLINE HRESULT IMessage_get_TextBody(IMessage* This,BSTR *body) {
    return This->lpVtbl->get_TextBody(This,body);
}
static FORCEINLINE HRESULT IMessage_put_TextBody(IMessage* This,BSTR body) {
    return This->lpVtbl->put_TextBody(This,body);
}
static FORCEINLINE HRESULT IMessage_HTMLBody(IMessage* This,BSTR *body) {
    return This->lpVtbl->HTMLBody(This,body);
}
static FORCEINLINE HRESULT IMessage_put_HTMLBody(IMessage* This,BSTR body) {
    return This->lpVtbl->put_HTMLBody(This,body);
}
static FORCEINLINE HRESULT IMessage_get_Attachments(IMessage* This,IBodyParts **attachments) {
    return This->lpVtbl->get_Attachments(This,attachments);
}
static FORCEINLINE HRESULT IMessage_get_Sender(IMessage* This,BSTR *sender) {
    return This->lpVtbl->get_Sender(This,sender);
}
static FORCEINLINE HRESULT IMessage_put_Sender(IMessage* This,BSTR sender) {
    return This->lpVtbl->put_Sender(This,sender);
}
static FORCEINLINE HRESULT IMessage_get_Configuration(IMessage* This,IConfiguration **config) {
    return This->lpVtbl->get_Configuration(This,config);
}
static FORCEINLINE HRESULT IMessage_put_Configuration(IMessage* This,IConfiguration *config) {
    return This->lpVtbl->put_Configuration(This,config);
}
static FORCEINLINE HRESULT IMessage_putref_Configuration(IMessage* This,IConfiguration *config) {
    return This->lpVtbl->putref_Configuration(This,config);
}
static FORCEINLINE HRESULT IMessage_get_AutoGenerateTextBody(IMessage* This,VARIANT_BOOL *body) {
    return This->lpVtbl->get_AutoGenerateTextBody(This,body);
}
static FORCEINLINE HRESULT IMessage_put_AutoGenerateTextBody(IMessage* This,VARIANT_BOOL body) {
    return This->lpVtbl->put_AutoGenerateTextBody(This,body);
}
static FORCEINLINE HRESULT IMessage_get_EnvelopeFields(IMessage* This,Fields **fields) {
    return This->lpVtbl->get_EnvelopeFields(This,fields);
}
static FORCEINLINE HRESULT IMessage_get_TextBodyPart(IMessage* This,IBodyPart **body) {
    return This->lpVtbl->get_TextBodyPart(This,body);
}
static FORCEINLINE HRESULT IMessage_get_HTMLBodyPart(IMessage* This,IBodyPart **body) {
    return This->lpVtbl->get_HTMLBodyPart(This,body);
}
static FORCEINLINE HRESULT IMessage_get_BodyPart(IMessage* This,IBodyPart **part) {
    return This->lpVtbl->get_BodyPart(This,part);
}
static FORCEINLINE HRESULT IMessage_get_DataSource(IMessage* This,IDataSource **datasource) {
    return This->lpVtbl->get_DataSource(This,datasource);
}
static FORCEINLINE HRESULT IMessage_get_Fields(IMessage* This,Fields **fields) {
    return This->lpVtbl->get_Fields(This,fields);
}
static FORCEINLINE HRESULT IMessage_get_MDNRequested(IMessage* This,VARIANT_BOOL *requested) {
    return This->lpVtbl->get_MDNRequested(This,requested);
}
static FORCEINLINE HRESULT IMessage_put_MDNRequested(IMessage* This,VARIANT_BOOL requested) {
    return This->lpVtbl->put_MDNRequested(This,requested);
}
static FORCEINLINE HRESULT IMessage_AddRelatedBodyPart(IMessage* This,BSTR url,BSTR Reference,CdoReferenceType ReferenceType,BSTR username,BSTR password,IBodyPart **body) {
    return This->lpVtbl->AddRelatedBodyPart(This,url,Reference,ReferenceType,username,password,body);
}
static FORCEINLINE HRESULT IMessage_AddAttachment(IMessage* This,BSTR url,BSTR username,BSTR password,IBodyPart **body) {
    return This->lpVtbl->AddAttachment(This,url,username,password,body);
}
static FORCEINLINE HRESULT IMessage_CreateMHTMLBody(IMessage* This,BSTR url,CdoMHTMLFlags flags,BSTR username,BSTR password) {
    return This->lpVtbl->CreateMHTMLBody(This,url,flags,username,password);
}
static FORCEINLINE HRESULT IMessage_Forward(IMessage* This,IMessage **msg) {
    return This->lpVtbl->Forward(This,msg);
}
static FORCEINLINE HRESULT IMessage_Post(IMessage* This) {
    return This->lpVtbl->Post(This);
}
static FORCEINLINE HRESULT IMessage_PostReply(IMessage* This,IMessage **msg) {
    return This->lpVtbl->PostReply(This,msg);
}
static FORCEINLINE HRESULT IMessage_Reply(IMessage* This,IMessage **msg) {
    return This->lpVtbl->Reply(This,msg);
}
static FORCEINLINE HRESULT IMessage_ReplyAll(IMessage* This,IMessage **msg) {
    return This->lpVtbl->ReplyAll(This,msg);
}
static FORCEINLINE HRESULT IMessage_Send(IMessage* This) {
    return This->lpVtbl->Send(This);
}
static FORCEINLINE HRESULT IMessage_GetStream(IMessage* This,_Stream **stream) {
    return This->lpVtbl->GetStream(This,stream);
}
static FORCEINLINE HRESULT IMessage_GetInterface(IMessage* This,BSTR name,IDispatch **unknown) {
    return This->lpVtbl->GetInterface(This,name,unknown);
}
#endif
#endif

#endif


#endif  /* __IMessage_INTERFACE_DEFINED__ */

/*****************************************************************************
 * Message coclass
 */

DEFINE_GUID(CLSID_Message, 0xcd000001, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d);

#ifdef __cplusplus
class DECLSPEC_UUID("cd000001-8b95-11d1-82db-00c04fb1625d") Message;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(Message, 0xcd000001, 0x8b95, 0x11d1, 0x82,0xdb, 0x00,0xc0,0x4f,0xb1,0x62,0x5d)
#endif
#endif

/* 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 VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __cdosys_h__ */
