/*** Autogenerated by WIDL 1.3.20 from msdadc.idl - Do not edit ***/

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

#ifndef __WIDL_MSDADC_H
#define __WIDL_MSDADC_H

/* Forward declarations */

#ifndef __IDataConvert_FWD_DEFINED__
#define __IDataConvert_FWD_DEFINED__
typedef interface IDataConvert IDataConvert;
#endif

#ifndef __IDCInfo_FWD_DEFINED__
#define __IDCInfo_FWD_DEFINED__
typedef interface IDCInfo IDCInfo;
#endif

/* Headers for imported files */

#include <oaidl.h>
#include <ocidl.h>
#include <oledb.h>

#ifdef __cplusplus
extern "C" {
#endif

/*****************************************************************************
 * IDataConvert interface
 */
#ifndef __IDataConvert_INTERFACE_DEFINED__
#define __IDataConvert_INTERFACE_DEFINED__

typedef DWORD DBDATACONVERT;
enum DBDATACONVERTENUM {
    DBDATACONVERT_DEFAULT = 0,
    DBDATACONVERT_SETDATABEHAVIOR = 1,
    DBDATACONVERT_LENGTHFROMNTS = 2,
    DBDATACONVERT_DSTISFIXEDLENGTH = 4,
    DBDATACONVERT_DECIMALSCALE = 8
};

DEFINE_GUID(IID_IDataConvert, 0x0c733a8d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDataConvert : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DataConvert(
        DBTYPE wSrcType,
        DBTYPE wDstType,
        DBLENGTH cbSrcLength,
        DBLENGTH *pcbDstLength,
        void *pSrc,
        void *pDst,
        DBLENGTH cbDstMaxLength,
        DBSTATUS dbsSrcStatus,
        DBSTATUS *pdbsDstStatus,
        BYTE bPrecision,
        BYTE bScale,
        DBDATACONVERT dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanConvert(
        DBTYPE wSrcType,
        DBTYPE wDstType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConversionSize(
        DBTYPE wSrcType,
        DBTYPE wDstType,
        DBLENGTH *pcbSrcLength,
        DBLENGTH *pcbDstLength,
        void *pSrc) = 0;

};
#else
typedef struct IDataConvertVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDataConvert methods ***/
    HRESULT (STDMETHODCALLTYPE *DataConvert)(
        IDataConvert* This,
        DBTYPE wSrcType,
        DBTYPE wDstType,
        DBLENGTH cbSrcLength,
        DBLENGTH *pcbDstLength,
        void *pSrc,
        void *pDst,
        DBLENGTH cbDstMaxLength,
        DBSTATUS dbsSrcStatus,
        DBSTATUS *pdbsDstStatus,
        BYTE bPrecision,
        BYTE bScale,
        DBDATACONVERT dwFlags);

    HRESULT (STDMETHODCALLTYPE *CanConvert)(
        IDataConvert* This,
        DBTYPE wSrcType,
        DBTYPE wDstType);

    HRESULT (STDMETHODCALLTYPE *GetConversionSize)(
        IDataConvert* This,
        DBTYPE wSrcType,
        DBTYPE wDstType,
        DBLENGTH *pcbSrcLength,
        DBLENGTH *pcbDstLength,
        void *pSrc);

    END_INTERFACE
} IDataConvertVtbl;
interface IDataConvert {
    CONST_VTBL IDataConvertVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDataConvert_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDataConvert_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDataConvert_Release(This) (This)->lpVtbl->Release(This)
/*** IDataConvert methods ***/
#define IDataConvert_DataConvert(This,wSrcType,wDstType,cbSrcLength,pcbDstLength,pSrc,pDst,cbDstMaxLength,dbsSrcStatus,pdbsDstStatus,bPrecision,bScale,dwFlags) (This)->lpVtbl->DataConvert(This,wSrcType,wDstType,cbSrcLength,pcbDstLength,pSrc,pDst,cbDstMaxLength,dbsSrcStatus,pdbsDstStatus,bPrecision,bScale,dwFlags)
#define IDataConvert_CanConvert(This,wSrcType,wDstType) (This)->lpVtbl->CanConvert(This,wSrcType,wDstType)
#define IDataConvert_GetConversionSize(This,wSrcType,wDstType,pcbSrcLength,pcbDstLength,pSrc) (This)->lpVtbl->GetConversionSize(This,wSrcType,wDstType,pcbSrcLength,pcbDstLength,pSrc)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDataConvert_CanConvert_Proxy(
    IDataConvert* This,
    DBTYPE wSrcType,
    DBTYPE wDstType);
void __RPC_STUB IDataConvert_CanConvert_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IDataConvert_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDCInfo interface
 */
#ifndef __IDCInfo_INTERFACE_DEFINED__
#define __IDCInfo_INTERFACE_DEFINED__

typedef DWORD DCINFOTYPE;
enum DCINFOTYPEENUM {
    DCINFOTYPE_VERSION = 1
};

typedef struct tagDCINFO {
    DCINFOTYPE eInfoType;
    VARIANT vData;
} DCINFO;
DEFINE_GUID(IID_IDCInfo, 0x0c733a9c, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDCInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetInfo(
        ULONG cInfo,
        DCINFOTYPE rgeInfoType[],
        DCINFO **prgInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInfo(
        ULONG cInfo,
        DCINFO prgInfo[]) = 0;

};
#else
typedef struct IDCInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDCInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetInfo)(
        IDCInfo* This,
        ULONG cInfo,
        DCINFOTYPE rgeInfoType[],
        DCINFO **prgInfo);

    HRESULT (STDMETHODCALLTYPE *SetInfo)(
        IDCInfo* This,
        ULONG cInfo,
        DCINFO prgInfo[]);

    END_INTERFACE
} IDCInfoVtbl;
interface IDCInfo {
    CONST_VTBL IDCInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDCInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDCInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDCInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IDCInfo methods ***/
#define IDCInfo_GetInfo(This,cInfo,rgeInfoType,prgInfo) (This)->lpVtbl->GetInfo(This,cInfo,rgeInfoType,prgInfo)
#define IDCInfo_SetInfo(This,cInfo,prgInfo) (This)->lpVtbl->SetInfo(This,cInfo,prgInfo)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDCInfo_GetInfo_Proxy(
    IDCInfo* This,
    ULONG cInfo,
    DCINFOTYPE rgeInfoType[],
    DCINFO **prgInfo);
void __RPC_STUB IDCInfo_GetInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDCInfo_SetInfo_Proxy(
    IDCInfo* This,
    ULONG cInfo,
    DCINFO prgInfo[]);
void __RPC_STUB IDCInfo_SetInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IDCInfo_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

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 /* __WIDL_MSDADC_H */
