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

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

#ifndef __WIDL_OLEDB_H
#define __WIDL_OLEDB_H

/* Forward declarations */

#ifndef __IAccessor_FWD_DEFINED__
#define __IAccessor_FWD_DEFINED__
typedef interface IAccessor IAccessor;
#endif

#ifndef __IRowset_FWD_DEFINED__
#define __IRowset_FWD_DEFINED__
typedef interface IRowset IRowset;
#endif

#ifndef __IRowsetInfo_FWD_DEFINED__
#define __IRowsetInfo_FWD_DEFINED__
typedef interface IRowsetInfo IRowsetInfo;
#endif

#ifndef __IRowsetLocate_FWD_DEFINED__
#define __IRowsetLocate_FWD_DEFINED__
typedef interface IRowsetLocate IRowsetLocate;
#endif

#ifndef __ICommand_FWD_DEFINED__
#define __ICommand_FWD_DEFINED__
typedef interface ICommand ICommand;
#endif

#ifndef __ICommandText_FWD_DEFINED__
#define __ICommandText_FWD_DEFINED__
typedef interface ICommandText ICommandText;
#endif

#ifndef __IDBCreateCommand_FWD_DEFINED__
#define __IDBCreateCommand_FWD_DEFINED__
typedef interface IDBCreateCommand IDBCreateCommand;
#endif

#ifndef __IDBCreateSession_FWD_DEFINED__
#define __IDBCreateSession_FWD_DEFINED__
typedef interface IDBCreateSession IDBCreateSession;
#endif

#ifndef __IDBProperties_FWD_DEFINED__
#define __IDBProperties_FWD_DEFINED__
typedef interface IDBProperties IDBProperties;
#endif

#ifndef __IDBInitialize_FWD_DEFINED__
#define __IDBInitialize_FWD_DEFINED__
typedef interface IDBInitialize IDBInitialize;
#endif

#ifndef __IDBDataSourceAdmin_FWD_DEFINED__
#define __IDBDataSourceAdmin_FWD_DEFINED__
typedef interface IDBDataSourceAdmin IDBDataSourceAdmin;
#endif

#ifndef __IDBAsynchNotify_FWD_DEFINED__
#define __IDBAsynchNotify_FWD_DEFINED__
typedef interface IDBAsynchNotify IDBAsynchNotify;
#endif

#ifndef __IDBAsynchStatus_FWD_DEFINED__
#define __IDBAsynchStatus_FWD_DEFINED__
typedef interface IDBAsynchStatus IDBAsynchStatus;
#endif

#ifndef __ISessionProperties_FWD_DEFINED__
#define __ISessionProperties_FWD_DEFINED__
typedef interface ISessionProperties ISessionProperties;
#endif

#ifndef __IOpenRowset_FWD_DEFINED__
#define __IOpenRowset_FWD_DEFINED__
typedef interface IOpenRowset IOpenRowset;
#endif

#ifndef __IRow_FWD_DEFINED__
#define __IRow_FWD_DEFINED__
typedef interface IRow IRow;
#endif

#ifndef __IRowChange_FWD_DEFINED__
#define __IRowChange_FWD_DEFINED__
typedef interface IRowChange IRowChange;
#endif

#ifndef __IBindResource_FWD_DEFINED__
#define __IBindResource_FWD_DEFINED__
typedef interface IBindResource IBindResource;
#endif

#ifndef __ICreateRow_FWD_DEFINED__
#define __ICreateRow_FWD_DEFINED__
typedef interface ICreateRow ICreateRow;
#endif

/* Headers for imported files */

#include <wtypes.h>
#include <oaidl.h>
#include <ocidl.h>
#include <propidl.h>
#include <urlmon.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifdef _WIN64
#include <pshpack8.h>
#else
#include <pshpack2.h>
#endif

typedef ULONG_PTR DBBYTEOFFSET;
typedef LONG_PTR DBROWOFFSET;
typedef LONG_PTR DBROWCOUNT;
typedef ULONG_PTR DBCOUNTITEM;
typedef ULONG_PTR DBLENGTH;
typedef ULONG_PTR DBORDINAL;
typedef ULONG_PTR DBBKMARK;
typedef DWORD_PTR DB_DWRESERVE;
typedef ULONG_PTR DBREFCOUNT;
typedef ULONG_PTR DB_UPARAMS;
typedef LONG_PTR DB_LPARAMS;
typedef DWORD_PTR DBHASHVALUE;
typedef struct __WIDL_oledb_generated_name_00000000 {
    SHORT year;
    USHORT month;
    USHORT day;
    USHORT hour;
    USHORT minute;
    USHORT second;
    ULONG fraction;
} DBTIMESTAMP;
typedef DWORD DBKIND;
enum DBKINDENUM {
    DBKIND_GUID_NAME = 0,
    DBKIND_GUID_PROPID = 1,
    DBKIND_NAME = 2,
    DBKIND_PGUID_NAME = 3,
    DBKIND_PGUID_PROPID = 4,
    DBKIND_PROPID = 5,
    DBKIND_GUID = 6
};

typedef struct tagDBID {
    union {
        GUID guid;
        GUID *pguid;
    } uGuid;
    DBKIND eKind;
    union {
        LPOLESTR pwszName;
        ULONG ulPropid;
    } uName;
} DBID;
typedef DWORD DBPROPID;
typedef struct tagDBPROPIDSET {
    DBPROPID *rgPropertyIDs;
    ULONG cPropertyIDs;
    GUID guidPropertySet;
} DBPROPIDSET;
typedef DWORD DBPROPOPTIONS;
enum DBPROPOPTIONENUM {
    DBPROPOPTIONS_REQUIRED = 0,
    DBPROPOPTIONS_SETIFCHEAP = 1,
    DBPROPOPTIONS_OPTIONAL = 1
};

typedef DWORD DBPROPSTATUS;
typedef struct tagDBPROP {
    DBPROPID dwPropertyID;
    DBPROPOPTIONS dwOptions;
    DBPROPSTATUS dwStatus;
    DBID colid;
    VARIANT vValue;
} DBPROP;
typedef struct tagDBPROPSET {
    DBPROP *rgProperties;
    ULONG cProperties;
    GUID guidPropertySet;
} DBPROPSET;
typedef DWORD DBPROPFLAGS;
typedef struct tagDBPROPINFO {
    LPOLESTR pwszDescription;
    DBPROPID dwPropertyID;
    DBPROPFLAGS dwFlags;
    VARTYPE vtType;
    VARIANT vValues;
} DBPROPINFO;
typedef DBPROPINFO *PDBPROPINFO;
typedef struct tagDBPROPINFOSET {
    PDBPROPINFO rgPropertyInfos;
    ULONG cPropertyInfos;
    GUID guidPropertySet;
} DBPROPINFOSET;
typedef DWORD DBBINDURLFLAG;
typedef DWORD DBBINDURLSTATUS;
typedef struct tagDBIMPLICITSESSION {
    IUnknown *pUnkOuter;
    IID *piid;
    IUnknown *pSession;
} DBIMPLICITSESSION;
typedef WORD DBTYPE;
enum DBTYPEENUM {
    DBTYPE_EMPTY = 0,
    DBTYPE_NULL = 1,
    DBTYPE_I2 = 2,
    DBTYPE_I4 = 3,
    DBTYPE_R4 = 4,
    DBTYPE_R8 = 5,
    DBTYPE_CY = 6,
    DBTYPE_DATE = 7,
    DBTYPE_BSTR = 8,
    DBTYPE_IDISPATCH = 9,
    DBTYPE_ERROR = 10,
    DBTYPE_BOOL = 11,
    DBTYPE_VARIANT = 12,
    DBTYPE_IUNKNOWN = 13,
    DBTYPE_DECIMAL = 14,
    DBTYPE_I1 = 16,
    DBTYPE_UI1 = 17,
    DBTYPE_UI2 = 18,
    DBTYPE_UI4 = 19,
    DBTYPE_I8 = 20,
    DBTYPE_UI8 = 21,
    DBTYPE_GUID = 72,
    DBTYPE_BYTES = 128,
    DBTYPE_STR = 129,
    DBTYPE_WSTR = 130,
    DBTYPE_NUMERIC = 131,
    DBTYPE_UDT = 132,
    DBTYPE_DBDATE = 133,
    DBTYPE_DBTIME = 134,
    DBTYPE_DBTIMESTAMP = 135,
    DBTYPE_VECTOR = 0x1000,
    DBTYPE_ARRAY = 0x2000,
    DBTYPE_BYREF = 0x4000,
    DBTYPE_RESERVED = 0x8000
};

enum DBTYPEENUM15 {
    DBTYPE_HCHAPTER = 136
};

enum DBTYPEENUM20 {
    DBTYPE_FILETIME = 64,
    DBTYPE_PROPVARIANT = 138,
    DBTYPE_VARNUMERIC = 139
};

typedef DWORD DBSTATUS;
enum DBSTATUSENUM {
    DBSTATUS_S_OK = 0,
    DBSTATUS_E_BADACCESSOR = 1,
    DBSTATUS_E_CANTCONVERTVALUE = 2,
    DBSTATUS_S_ISNULL = 3,
    DBSTATUS_S_TRUNCATED = 4,
    DBSTATUS_E_SIGNMISMATCH = 5,
    DBSTATUS_E_DATAOVERFLOW = 6,
    DBSTATUS_E_CANTCREATE = 7,
    DBSTATUS_E_UNAVAILABLE = 8,
    DBSTATUS_E_PERMISSIONDENIED = 9,
    DBSTATUS_E_INTEGRITYVIOLATION = 10,
    DBSTATUS_E_SCHEMAVIOLATION = 11,
    DBSTATUS_E_BADSTATUS = 12,
    DBSTATUS_S_DEFAULT = 13
};

#ifdef DBINITCONSTANTS
#ifdef __cplusplus
#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        EXTERN_C const GUID name DECLSPEC_HIDDEN;     \
        EXTERN_C const GUID name =                    \
	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
#else
#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        const GUID name DECLSPEC_HIDDEN;      \
        const GUID name =                             \
	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
#endif
#else
#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
    EXTERN_C const GUID name DECLSPEC_HIDDEN
#endif
DEFINE_DBGUID(DBGUID_SESSION,    0xc8b522f5, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBGUID_ROWSET,     0xc8b522f6, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBGUID_ROW,        0xc8b522f7, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBGUID_STREAM,     0xc8b522f9, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
typedef struct tagDBCOLUMNACCESS {
    void *pData;
    DBID columnid;
    DBLENGTH cbDataLen;
    DBSTATUS dwStatus;
    DBLENGTH cbMaxLen;
    DB_DWRESERVE dwReserved;
    DBTYPE wType;
    BYTE bPrecision;
    BYTE bScale;
} DBCOLUMNACCESS;
typedef DWORD DBROWSTATUS;
enum DBROWSTATUSENUM {
    DBROWSTATUS_S_OK = 0,
    DBROWSTATUS_E_FAIL = 19
};

typedef DWORD DBPART;
enum DBPARTENUM {
    DBPART_INVALID = 0,
    DBPART_VALUE = 1,
    DBPART_LENGTH = 2,
    DBPART_STATUS = 4
};

typedef DWORD DBPARAMIO;
enum DBPARAMIOENUM {
    DBPARAMIO_NOTPARAM = 0,
    DBPARAMIO_INPUT = 1,
    DBPARAMIO_OUTPUT = 2
};

typedef DWORD DBMEMOWNER;
enum DBMEMOWNERENUM {
    DBMEMOWNER_CLIENTOWNED = 0,
    DBMEMOWNER_PROVIDEROWNED = 1
};

typedef struct tagDBOBJECT {
    DWORD dwFlags;
    IID iid;
} DBOBJECT;
typedef struct tagDBBINDEXT {
    BYTE *pExtension;
    DBCOUNTITEM ulExtension;
} DBBINDEXT;
typedef struct tagDBBINDING {
    DBORDINAL iOrdinal;
    DBBYTEOFFSET obValue;
    DBBYTEOFFSET obLength;
    DBBYTEOFFSET obStatus;
    ITypeInfo *pTypeInfo;
    DBOBJECT *pObject;
    DBBINDEXT *pBindExt;
    DBPART dwPart;
    DBMEMOWNER dwMemOwner;
    DBPARAMIO eParamIO;
    DBLENGTH cbMaxLen;
    DWORD dwFlags;
    DBTYPE wType;
    BYTE bPrecision;
    BYTE bScale;
} DBBINDING;
typedef ULONG_PTR HACCESSOR;
#define DB_INVALID_HACCESSOR 0x00
typedef ULONG_PTR HROW;
#define DB_NULL_HROW 0x00
typedef ULONG_PTR HWATCHREGION;
#define DBWATCHREGION_NULL NULL
typedef ULONG_PTR HCHAPTER;
#define DB_NULL_HCHAPTER 0x00
typedef struct tagDBPARAMS {
    void *pData;
    DB_UPARAMS cParamSets;
    HACCESSOR hAccessor;
} DBPARAMS;
typedef DWORD DBASYNCHOP;
enum DBASYNCHOPENUM {
    DBSYNCHOP_OPEN = 0
};

typedef DWORD DBASYNCHPHASE;
enum DBASYNCHPHASEENUM {
    DBASYNCHPHASE_INITIALIZATION = 0,
    DBASYNCHPHASE_POPULATION = 1,
    DBASYNCHPHASE_COMPLETE = 2,
    DBASYNCHPHASE_CANCELED = 3
};

typedef struct tagRMTPACK {
    ISequentialStream *pISeqStream;
    ULONG cbData;
    ULONG cBSTR;
    BSTR *rgBSTR;
    ULONG cVARIANT;
    VARIANT *rgVARIANT;
    ULONG cIDISPATCH;
    IDispatch **rgIDISPATCH;
    ULONG cIUNKNOWN;
    IUnknown **rgIUNKNOWN;
    ULONG cPROPVARIANT;
    PROPVARIANT *rgPROPVARIANT;
    ULONG cArray;
    VARIANT *rgArray;
} RMTPACK;
/*****************************************************************************
 * IAccessor interface
 */
#ifndef __IAccessor_INTERFACE_DEFINED__
#define __IAccessor_INTERFACE_DEFINED__

typedef DWORD DBACCESSORFLAGS;
typedef DWORD DBBINDSTATUS;
DEFINE_GUID(IID_IAccessor, 0x0c733a8c, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IAccessor : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddRefAccessor(
        HACCESSOR hAccessor,
        DBREFCOUNT *pcRefCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAccessor(
        DBACCESSORFLAGS dwAccessorFlags,
        DBCOUNTITEM cBindings,
        const DBBINDING rgBindings[],
        DBLENGTH cbRowSize,
        HACCESSOR *phAccessor,
        DBBINDSTATUS rgStatus[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBindings(
        HACCESSOR hAccessor,
        DBACCESSORFLAGS *pdwAccessorFlags,
        DBCOUNTITEM *pcBindings,
        DBBINDING **prgBindings) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReleaseAccessor(
        HACCESSOR hAccessor,
        DBREFCOUNT *pcRefCount) = 0;

};
#else
typedef struct IAccessorVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessor methods ***/
    HRESULT (STDMETHODCALLTYPE *AddRefAccessor)(
        IAccessor* This,
        HACCESSOR hAccessor,
        DBREFCOUNT *pcRefCount);

    HRESULT (STDMETHODCALLTYPE *CreateAccessor)(
        IAccessor* This,
        DBACCESSORFLAGS dwAccessorFlags,
        DBCOUNTITEM cBindings,
        const DBBINDING rgBindings[],
        DBLENGTH cbRowSize,
        HACCESSOR *phAccessor,
        DBBINDSTATUS rgStatus[]);

    HRESULT (STDMETHODCALLTYPE *GetBindings)(
        IAccessor* This,
        HACCESSOR hAccessor,
        DBACCESSORFLAGS *pdwAccessorFlags,
        DBCOUNTITEM *pcBindings,
        DBBINDING **prgBindings);

    HRESULT (STDMETHODCALLTYPE *ReleaseAccessor)(
        IAccessor* This,
        HACCESSOR hAccessor,
        DBREFCOUNT *pcRefCount);

    END_INTERFACE
} IAccessorVtbl;
interface IAccessor {
    CONST_VTBL IAccessorVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAccessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessor_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessor methods ***/
#define IAccessor_AddRefAccessor(This,hAccessor,pcRefCount) (This)->lpVtbl->AddRefAccessor(This,hAccessor,pcRefCount)
#define IAccessor_CreateAccessor(This,dwAccessorFlags,cBindings,rgBindings,cbRowSize,phAccessor,rgStatus) (This)->lpVtbl->CreateAccessor(This,dwAccessorFlags,cBindings,rgBindings,cbRowSize,phAccessor,rgStatus)
#define IAccessor_GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings) (This)->lpVtbl->GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings)
#define IAccessor_ReleaseAccessor(This,hAccessor,pcRefCount) (This)->lpVtbl->ReleaseAccessor(This,hAccessor,pcRefCount)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAccessor_RemoteAddRefAccessor_Proxy(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBREFCOUNT *pcRefCount,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IAccessor_RemoteAddRefAccessor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAccessor_RemoteCreateAccessor_Proxy(
    IAccessor* This,
    DBACCESSORFLAGS dwAccessorFlags,
    DBCOUNTITEM cBindings,
    DBBINDING *rgBindings,
    DBLENGTH cbRowSize,
    HACCESSOR *phAccessor,
    DBBINDSTATUS *rgStatus,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IAccessor_RemoteCreateAccessor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAccessor_RemoteGetBindings_Proxy(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBACCESSORFLAGS *pdwAccessorFlags,
    DBCOUNTITEM *pcBindings,
    DBBINDING **prgBindings,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IAccessor_RemoteGetBindings_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAccessor_RemoteReleaseAccessor_Proxy(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBREFCOUNT *pcRefCount,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IAccessor_RemoteReleaseAccessor_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IAccessor_AddRefAccessor_Proxy(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBREFCOUNT *pcRefCount);
HRESULT __RPC_STUB IAccessor_AddRefAccessor_Stub(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBREFCOUNT *pcRefCount,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IAccessor_CreateAccessor_Proxy(
    IAccessor* This,
    DBACCESSORFLAGS dwAccessorFlags,
    DBCOUNTITEM cBindings,
    const DBBINDING rgBindings[],
    DBLENGTH cbRowSize,
    HACCESSOR *phAccessor,
    DBBINDSTATUS rgStatus[]);
HRESULT __RPC_STUB IAccessor_CreateAccessor_Stub(
    IAccessor* This,
    DBACCESSORFLAGS dwAccessorFlags,
    DBCOUNTITEM cBindings,
    DBBINDING *rgBindings,
    DBLENGTH cbRowSize,
    HACCESSOR *phAccessor,
    DBBINDSTATUS *rgStatus,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IAccessor_GetBindings_Proxy(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBACCESSORFLAGS *pdwAccessorFlags,
    DBCOUNTITEM *pcBindings,
    DBBINDING **prgBindings);
HRESULT __RPC_STUB IAccessor_GetBindings_Stub(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBACCESSORFLAGS *pdwAccessorFlags,
    DBCOUNTITEM *pcBindings,
    DBBINDING **prgBindings,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IAccessor_ReleaseAccessor_Proxy(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBREFCOUNT *pcRefCount);
HRESULT __RPC_STUB IAccessor_ReleaseAccessor_Stub(
    IAccessor* This,
    HACCESSOR hAccessor,
    DBREFCOUNT *pcRefCount,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IAccessor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowset interface
 */
#ifndef __IRowset_INTERFACE_DEFINED__
#define __IRowset_INTERFACE_DEFINED__

typedef DWORD DBROWOPTIONS;
DEFINE_GUID(IID_IRowset, 0x0c733a7c, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IRowset : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddRefRows(
        DBCOUNTITEM cRows,
        const HROW rghRows[],
        DBREFCOUNT rgRefCounts[],
        DBROWSTATUS rgRowStatus[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetData(
        HROW hRow,
        HACCESSOR hAccessor,
        void *pData) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextRows(
        HCHAPTER hReserved,
        DBROWOFFSET lRowsOffset,
        DBROWCOUNT cRows,
        DBCOUNTITEM *pcRowObtained,
        HROW **prghRows) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReleaseRows(
        DBCOUNTITEM cRows,
        const HROW rghRows[],
        DBROWOPTIONS rgRowOptions[],
        DBREFCOUNT rgRefCounts[],
        DBROWSTATUS rgRowStatus[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE RestartPosition(
        HCHAPTER hReserved) = 0;

};
#else
typedef struct IRowsetVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowset methods ***/
    HRESULT (STDMETHODCALLTYPE *AddRefRows)(
        IRowset* This,
        DBCOUNTITEM cRows,
        const HROW rghRows[],
        DBREFCOUNT rgRefCounts[],
        DBROWSTATUS rgRowStatus[]);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        IRowset* This,
        HROW hRow,
        HACCESSOR hAccessor,
        void *pData);

    HRESULT (STDMETHODCALLTYPE *GetNextRows)(
        IRowset* This,
        HCHAPTER hReserved,
        DBROWOFFSET lRowsOffset,
        DBROWCOUNT cRows,
        DBCOUNTITEM *pcRowObtained,
        HROW **prghRows);

    HRESULT (STDMETHODCALLTYPE *ReleaseRows)(
        IRowset* This,
        DBCOUNTITEM cRows,
        const HROW rghRows[],
        DBROWOPTIONS rgRowOptions[],
        DBREFCOUNT rgRefCounts[],
        DBROWSTATUS rgRowStatus[]);

    HRESULT (STDMETHODCALLTYPE *RestartPosition)(
        IRowset* This,
        HCHAPTER hReserved);

    END_INTERFACE
} IRowsetVtbl;
interface IRowset {
    CONST_VTBL IRowsetVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowset_Release(This) (This)->lpVtbl->Release(This)
/*** IRowset methods ***/
#define IRowset_AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus) (This)->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus)
#define IRowset_GetData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetData(This,hRow,hAccessor,pData)
#define IRowset_GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowObtained,prghRows) (This)->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowObtained,prghRows)
#define IRowset_ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus) (This)->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus)
#define IRowset_RestartPosition(This,hReserved) (This)->lpVtbl->RestartPosition(This,hReserved)
#endif

#endif

HRESULT STDMETHODCALLTYPE IRowset_AddRefRows_Proxy(
    IRowset* This,
    DBCOUNTITEM cRows,
    const HROW rghRows[],
    DBREFCOUNT rgRefCounts[],
    DBROWSTATUS rgRowStatus[]);
void __RPC_STUB IRowset_AddRefRows_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowset_GetData_Proxy(
    IRowset* This,
    HROW hRow,
    HACCESSOR hAccessor,
    void *pData);
void __RPC_STUB IRowset_GetData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowset_GetNextRows_Proxy(
    IRowset* This,
    HCHAPTER hReserved,
    DBROWOFFSET lRowsOffset,
    DBROWCOUNT cRows,
    DBCOUNTITEM *pcRowObtained,
    HROW **prghRows);
void __RPC_STUB IRowset_GetNextRows_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowset_ReleaseRows_Proxy(
    IRowset* This,
    DBCOUNTITEM cRows,
    const HROW rghRows[],
    DBROWOPTIONS rgRowOptions[],
    DBREFCOUNT rgRefCounts[],
    DBROWSTATUS rgRowStatus[]);
void __RPC_STUB IRowset_ReleaseRows_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowset_RestartPosition_Proxy(
    IRowset* This,
    HCHAPTER hReserved);
void __RPC_STUB IRowset_RestartPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IRowset_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowsetInfo interface
 */
#ifndef __IRowsetInfo_INTERFACE_DEFINED__
#define __IRowsetInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRowsetInfo, 0x0c733a55, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IRowsetInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProperties(
        const ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertySets,
        DBPROPSET **prgPropertySets) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReferencedRowset(
        DBORDINAL iOrdinal,
        REFIID riid,
        IUnknown **ppReferencedRowset) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSpecification(
        REFIID riid,
        IUnknown **ppSpecification) = 0;

};
#else
typedef struct IRowsetInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowsetInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProperties)(
        IRowsetInfo* This,
        const ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertySets,
        DBPROPSET **prgPropertySets);

    HRESULT (STDMETHODCALLTYPE *GetReferencedRowset)(
        IRowsetInfo* This,
        DBORDINAL iOrdinal,
        REFIID riid,
        IUnknown **ppReferencedRowset);

    HRESULT (STDMETHODCALLTYPE *GetSpecification)(
        IRowsetInfo* This,
        REFIID riid,
        IUnknown **ppSpecification);

    END_INTERFACE
} IRowsetInfoVtbl;
interface IRowsetInfo {
    CONST_VTBL IRowsetInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IRowsetInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowsetInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowsetInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IRowsetInfo methods ***/
#define IRowsetInfo_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
#define IRowsetInfo_GetReferencedRowset(This,iOrdinal,riid,ppReferencedRowset) (This)->lpVtbl->GetReferencedRowset(This,iOrdinal,riid,ppReferencedRowset)
#define IRowsetInfo_GetSpecification(This,riid,ppSpecification) (This)->lpVtbl->GetSpecification(This,riid,ppSpecification)
#endif

#endif

HRESULT STDMETHODCALLTYPE IRowsetInfo_RemoteGetProperties_Proxy(
    IRowsetInfo* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IRowsetInfo_RemoteGetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetInfo_RemoteGetReferencedRowset_Proxy(
    IRowsetInfo* This,
    DBORDINAL iOrdinal,
    REFIID riid,
    IUnknown **ppReferencedRowset,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IRowsetInfo_RemoteGetReferencedRowset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetInfo_RemoteGetSpecification_Proxy(
    IRowsetInfo* This,
    REFIID riid,
    IUnknown **ppSpecification,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IRowsetInfo_RemoteGetSpecification_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IRowsetInfo_GetProperties_Proxy(
    IRowsetInfo* This,
    const ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets);
HRESULT __RPC_STUB IRowsetInfo_GetProperties_Stub(
    IRowsetInfo* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IRowsetInfo_GetReferencedRowset_Proxy(
    IRowsetInfo* This,
    DBORDINAL iOrdinal,
    REFIID riid,
    IUnknown **ppReferencedRowset);
HRESULT __RPC_STUB IRowsetInfo_GetReferencedRowset_Stub(
    IRowsetInfo* This,
    DBORDINAL iOrdinal,
    REFIID riid,
    IUnknown **ppReferencedRowset,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IRowsetInfo_GetSpecification_Proxy(
    IRowsetInfo* This,
    REFIID riid,
    IUnknown **ppSpecification);
HRESULT __RPC_STUB IRowsetInfo_GetSpecification_Stub(
    IRowsetInfo* This,
    REFIID riid,
    IUnknown **ppSpecification,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IRowsetInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowsetLocate interface
 */
#ifndef __IRowsetLocate_INTERFACE_DEFINED__
#define __IRowsetLocate_INTERFACE_DEFINED__

typedef DWORD DBCOMPARE;
enum DBCOMPAREENUM {
    DBCOMPARE_LT = 0,
    DBCOMPARE_EQ = 1,
    DBCOMPARE_GT = 2,
    DBCOMPARE_NE = 3,
    DBCOMPARE_NOTCOMPARABLE = 4
};

DEFINE_GUID(IID_IRowsetLocate, 0x0c733a7d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IRowsetLocate : public IRowset
{
    virtual HRESULT STDMETHODCALLTYPE Compare(
        HCHAPTER hReserved,
        DBBKMARK cbBookmark1,
        const BYTE *pBookmark1,
        DBBKMARK cbBookmark2,
        const BYTE *pBookmark2,
        DBCOMPARE *pComparison) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRowsAt(
        HWATCHREGION hReserved1,
        HCHAPTER hReserved2,
        DBBKMARK cbBookmark,
        const BYTE *pBookmark,
        DBROWOFFSET lRowsOffset,
        DBROWCOUNT cRows,
        DBCOUNTITEM *pcRowsObtained,
        HROW **prghRows) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRowsByBookmark(
        HCHAPTER hReserved,
        DBCOUNTITEM cRows,
        const DBBKMARK rgcbBookmarks[],
        const BYTE * rgpBookmarks[],
        HROW rghRows[],
        DBROWSTATUS rgRowStatus[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE Hash(
        HCHAPTER hReserved,
        DBBKMARK cBookmarks,
        const DBBKMARK rgcbBookmarks[],
        const BYTE * rgpBookmarks[],
        DBHASHVALUE rgHashedValues[],
        DBROWSTATUS rgBookmarkStatus[]) = 0;

};
#else
typedef struct IRowsetLocateVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowset methods ***/
    HRESULT (STDMETHODCALLTYPE *AddRefRows)(
        IRowsetLocate* This,
        DBCOUNTITEM cRows,
        const HROW rghRows[],
        DBREFCOUNT rgRefCounts[],
        DBROWSTATUS rgRowStatus[]);

    HRESULT (STDMETHODCALLTYPE *GetData)(
        IRowsetLocate* This,
        HROW hRow,
        HACCESSOR hAccessor,
        void *pData);

    HRESULT (STDMETHODCALLTYPE *GetNextRows)(
        IRowsetLocate* This,
        HCHAPTER hReserved,
        DBROWOFFSET lRowsOffset,
        DBROWCOUNT cRows,
        DBCOUNTITEM *pcRowObtained,
        HROW **prghRows);

    HRESULT (STDMETHODCALLTYPE *ReleaseRows)(
        IRowsetLocate* This,
        DBCOUNTITEM cRows,
        const HROW rghRows[],
        DBROWOPTIONS rgRowOptions[],
        DBREFCOUNT rgRefCounts[],
        DBROWSTATUS rgRowStatus[]);

    HRESULT (STDMETHODCALLTYPE *RestartPosition)(
        IRowsetLocate* This,
        HCHAPTER hReserved);

    /*** IRowsetLocate methods ***/
    HRESULT (STDMETHODCALLTYPE *Compare)(
        IRowsetLocate* This,
        HCHAPTER hReserved,
        DBBKMARK cbBookmark1,
        const BYTE *pBookmark1,
        DBBKMARK cbBookmark2,
        const BYTE *pBookmark2,
        DBCOMPARE *pComparison);

    HRESULT (STDMETHODCALLTYPE *GetRowsAt)(
        IRowsetLocate* This,
        HWATCHREGION hReserved1,
        HCHAPTER hReserved2,
        DBBKMARK cbBookmark,
        const BYTE *pBookmark,
        DBROWOFFSET lRowsOffset,
        DBROWCOUNT cRows,
        DBCOUNTITEM *pcRowsObtained,
        HROW **prghRows);

    HRESULT (STDMETHODCALLTYPE *GetRowsByBookmark)(
        IRowsetLocate* This,
        HCHAPTER hReserved,
        DBCOUNTITEM cRows,
        const DBBKMARK rgcbBookmarks[],
        const BYTE * rgpBookmarks[],
        HROW rghRows[],
        DBROWSTATUS rgRowStatus[]);

    HRESULT (STDMETHODCALLTYPE *Hash)(
        IRowsetLocate* This,
        HCHAPTER hReserved,
        DBBKMARK cBookmarks,
        const DBBKMARK rgcbBookmarks[],
        const BYTE * rgpBookmarks[],
        DBHASHVALUE rgHashedValues[],
        DBROWSTATUS rgBookmarkStatus[]);

    END_INTERFACE
} IRowsetLocateVtbl;
interface IRowsetLocate {
    CONST_VTBL IRowsetLocateVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IRowsetLocate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowsetLocate_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowsetLocate_Release(This) (This)->lpVtbl->Release(This)
/*** IRowset methods ***/
#define IRowsetLocate_AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus) (This)->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus)
#define IRowsetLocate_GetData(This,hRow,hAccessor,pData) (This)->lpVtbl->GetData(This,hRow,hAccessor,pData)
#define IRowsetLocate_GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowObtained,prghRows) (This)->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowObtained,prghRows)
#define IRowsetLocate_ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus) (This)->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus)
#define IRowsetLocate_RestartPosition(This,hReserved) (This)->lpVtbl->RestartPosition(This,hReserved)
/*** IRowsetLocate methods ***/
#define IRowsetLocate_Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison) (This)->lpVtbl->Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison)
#define IRowsetLocate_GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) (This)->lpVtbl->GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
#define IRowsetLocate_GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus) (This)->lpVtbl->GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus)
#define IRowsetLocate_Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus) (This)->lpVtbl->Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus)
#endif

#endif

HRESULT STDMETHODCALLTYPE IRowsetLocate_Compare_Proxy(
    IRowsetLocate* This,
    HCHAPTER hReserved,
    DBBKMARK cbBookmark1,
    const BYTE *pBookmark1,
    DBBKMARK cbBookmark2,
    const BYTE *pBookmark2,
    DBCOMPARE *pComparison);
void __RPC_STUB IRowsetLocate_Compare_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetLocate_GetRowsAt_Proxy(
    IRowsetLocate* This,
    HWATCHREGION hReserved1,
    HCHAPTER hReserved2,
    DBBKMARK cbBookmark,
    const BYTE *pBookmark,
    DBROWOFFSET lRowsOffset,
    DBROWCOUNT cRows,
    DBCOUNTITEM *pcRowsObtained,
    HROW **prghRows);
void __RPC_STUB IRowsetLocate_GetRowsAt_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetLocate_GetRowsByBookmark_Proxy(
    IRowsetLocate* This,
    HCHAPTER hReserved,
    DBCOUNTITEM cRows,
    const DBBKMARK rgcbBookmarks[],
    const BYTE * rgpBookmarks[],
    HROW rghRows[],
    DBROWSTATUS rgRowStatus[]);
void __RPC_STUB IRowsetLocate_GetRowsByBookmark_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetLocate_Hash_Proxy(
    IRowsetLocate* This,
    HCHAPTER hReserved,
    DBBKMARK cBookmarks,
    const DBBKMARK rgcbBookmarks[],
    const BYTE * rgpBookmarks[],
    DBHASHVALUE rgHashedValues[],
    DBROWSTATUS rgBookmarkStatus[]);
void __RPC_STUB IRowsetLocate_Hash_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IRowsetLocate_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICommand interface
 */
#ifndef __ICommand_INTERFACE_DEFINED__
#define __ICommand_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommand, 0x0c733a63, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ICommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Cancel(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Execute(
        IUnknown *pUnkOuter,
        REFIID riid,
        DBPARAMS *pParams,
        DBROWCOUNT *pcRowsAffected,
        IUnknown **ppRowset) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDBSession(
        REFIID riid,
        IUnknown **ppSession) = 0;

};
#else
typedef struct ICommandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICommand methods ***/
    HRESULT (STDMETHODCALLTYPE *Cancel)(
        ICommand* This);

    HRESULT (STDMETHODCALLTYPE *Execute)(
        ICommand* This,
        IUnknown *pUnkOuter,
        REFIID riid,
        DBPARAMS *pParams,
        DBROWCOUNT *pcRowsAffected,
        IUnknown **ppRowset);

    HRESULT (STDMETHODCALLTYPE *GetDBSession)(
        ICommand* This,
        REFIID riid,
        IUnknown **ppSession);

    END_INTERFACE
} ICommandVtbl;
interface ICommand {
    CONST_VTBL ICommandVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommand_Release(This) (This)->lpVtbl->Release(This)
/*** ICommand methods ***/
#define ICommand_Cancel(This) (This)->lpVtbl->Cancel(This)
#define ICommand_Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset) (This)->lpVtbl->Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset)
#define ICommand_GetDBSession(This,riid,ppSession) (This)->lpVtbl->GetDBSession(This,riid,ppSession)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommand_RemoteCancel_Proxy(
    ICommand* This,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB ICommand_RemoteCancel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommand_RemoteExecute_Proxy(
    ICommand* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    HACCESSOR hAccessor,
    DB_UPARAMS cParamSets,
    GUID *pGuid,
    ULONG ulGuidOffset,
    RMTPACK *pInputParams,
    RMTPACK *pOutputParams,
    DBCOUNTITEM cBindings,
    DBBINDING *rgBindings,
    DBSTATUS *rgStatus,
    DBROWCOUNT *pcRowsAffected,
    IUnknown **ppRowset);
void __RPC_STUB ICommand_RemoteExecute_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommand_RemoteGetDBSession_Proxy(
    ICommand* This,
    REFIID riid,
    IUnknown **ppSession,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB ICommand_RemoteGetDBSession_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICommand_Cancel_Proxy(
    ICommand* This);
HRESULT __RPC_STUB ICommand_Cancel_Stub(
    ICommand* This,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK ICommand_Execute_Proxy(
    ICommand* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    DBPARAMS *pParams,
    DBROWCOUNT *pcRowsAffected,
    IUnknown **ppRowset);
HRESULT __RPC_STUB ICommand_Execute_Stub(
    ICommand* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    HACCESSOR hAccessor,
    DB_UPARAMS cParamSets,
    GUID *pGuid,
    ULONG ulGuidOffset,
    RMTPACK *pInputParams,
    RMTPACK *pOutputParams,
    DBCOUNTITEM cBindings,
    DBBINDING *rgBindings,
    DBSTATUS *rgStatus,
    DBROWCOUNT *pcRowsAffected,
    IUnknown **ppRowset);
HRESULT CALLBACK ICommand_GetDBSession_Proxy(
    ICommand* This,
    REFIID riid,
    IUnknown **ppSession);
HRESULT __RPC_STUB ICommand_GetDBSession_Stub(
    ICommand* This,
    REFIID riid,
    IUnknown **ppSession,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __ICommand_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICommandText interface
 */
#ifndef __ICommandText_INTERFACE_DEFINED__
#define __ICommandText_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommandText, 0x0c733a27, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ICommandText : public ICommand
{
    virtual HRESULT STDMETHODCALLTYPE GetCommandText(
        GUID *pguidDialect,
        LPOLESTR *ppwszCommand) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCommandText(
        REFGUID rguidDialect,
        LPCOLESTR pwszCommand) = 0;

};
#else
typedef struct ICommandTextVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICommand methods ***/
    HRESULT (STDMETHODCALLTYPE *Cancel)(
        ICommandText* This);

    HRESULT (STDMETHODCALLTYPE *Execute)(
        ICommandText* This,
        IUnknown *pUnkOuter,
        REFIID riid,
        DBPARAMS *pParams,
        DBROWCOUNT *pcRowsAffected,
        IUnknown **ppRowset);

    HRESULT (STDMETHODCALLTYPE *GetDBSession)(
        ICommandText* This,
        REFIID riid,
        IUnknown **ppSession);

    /*** ICommandText methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCommandText)(
        ICommandText* This,
        GUID *pguidDialect,
        LPOLESTR *ppwszCommand);

    HRESULT (STDMETHODCALLTYPE *SetCommandText)(
        ICommandText* This,
        REFGUID rguidDialect,
        LPCOLESTR pwszCommand);

    END_INTERFACE
} ICommandTextVtbl;
interface ICommandText {
    CONST_VTBL ICommandTextVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICommandText_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommandText_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommandText_Release(This) (This)->lpVtbl->Release(This)
/*** ICommand methods ***/
#define ICommandText_Cancel(This) (This)->lpVtbl->Cancel(This)
#define ICommandText_Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset) (This)->lpVtbl->Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset)
#define ICommandText_GetDBSession(This,riid,ppSession) (This)->lpVtbl->GetDBSession(This,riid,ppSession)
/*** ICommandText methods ***/
#define ICommandText_GetCommandText(This,pguidDialect,ppwszCommand) (This)->lpVtbl->GetCommandText(This,pguidDialect,ppwszCommand)
#define ICommandText_SetCommandText(This,rguidDialect,pwszCommand) (This)->lpVtbl->SetCommandText(This,rguidDialect,pwszCommand)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommandText_RemoteGetCommandText_Proxy(
    ICommandText* This,
    GUID *pguidDialect,
    LPOLESTR *ppwszCommand,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB ICommandText_RemoteGetCommandText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommandText_RemoteSetCommandText_Proxy(
    ICommandText* This,
    REFGUID rguidDialect,
    LPCOLESTR pwszCommand,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB ICommandText_RemoteSetCommandText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICommandText_GetCommandText_Proxy(
    ICommandText* This,
    GUID *pguidDialect,
    LPOLESTR *ppwszCommand);
HRESULT __RPC_STUB ICommandText_GetCommandText_Stub(
    ICommandText* This,
    GUID *pguidDialect,
    LPOLESTR *ppwszCommand,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK ICommandText_SetCommandText_Proxy(
    ICommandText* This,
    REFGUID rguidDialect,
    LPCOLESTR pwszCommand);
HRESULT __RPC_STUB ICommandText_SetCommandText_Stub(
    ICommandText* This,
    REFGUID rguidDialect,
    LPCOLESTR pwszCommand,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __ICommandText_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDBCreateCommand interface
 */
#ifndef __IDBCreateCommand_INTERFACE_DEFINED__
#define __IDBCreateCommand_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBCreateCommand, 0x0c733a1d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBCreateCommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateCommand(
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppCommand) = 0;

};
#else
typedef struct IDBCreateCommandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBCreateCommand methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateCommand)(
        IDBCreateCommand* This,
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppCommand);

    END_INTERFACE
} IDBCreateCommandVtbl;
interface IDBCreateCommand {
    CONST_VTBL IDBCreateCommandVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBCreateCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDBCreateCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDBCreateCommand_Release(This) (This)->lpVtbl->Release(This)
/*** IDBCreateCommand methods ***/
#define IDBCreateCommand_CreateCommand(This,pUnkOuter,riid,ppCommand) (This)->lpVtbl->CreateCommand(This,pUnkOuter,riid,ppCommand)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDBCreateCommand_RemoteCreateCommand_Proxy(
    IDBCreateCommand* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppCommand,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBCreateCommand_RemoteCreateCommand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBCreateCommand_CreateCommand_Proxy(
    IDBCreateCommand* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppCommand);
HRESULT __RPC_STUB IDBCreateCommand_CreateCommand_Stub(
    IDBCreateCommand* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppCommand,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IDBCreateCommand_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDBCreateSession interface
 */
#ifndef __IDBCreateSession_INTERFACE_DEFINED__
#define __IDBCreateSession_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBCreateSession, 0x0c733a5d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBCreateSession : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateSession(
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppDBSession) = 0;

};
#else
typedef struct IDBCreateSessionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBCreateSession methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateSession)(
        IDBCreateSession* This,
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppDBSession);

    END_INTERFACE
} IDBCreateSessionVtbl;
interface IDBCreateSession {
    CONST_VTBL IDBCreateSessionVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBCreateSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDBCreateSession_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDBCreateSession_Release(This) (This)->lpVtbl->Release(This)
/*** IDBCreateSession methods ***/
#define IDBCreateSession_CreateSession(This,pUnkOuter,riid,ppDBSession) (This)->lpVtbl->CreateSession(This,pUnkOuter,riid,ppDBSession)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDBCreateSession_RemoteCreateSession_Proxy(
    IDBCreateSession* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppDBSession,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBCreateSession_RemoteCreateSession_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBCreateSession_CreateSession_Proxy(
    IDBCreateSession* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppDBSession);
HRESULT __RPC_STUB IDBCreateSession_CreateSession_Stub(
    IDBCreateSession* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppDBSession,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IDBCreateSession_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDBProperties interface
 */
#ifndef __IDBProperties_INTERFACE_DEFINED__
#define __IDBProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBProperties, 0x0c733a8a, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBProperties : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProperties(
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertySets,
        DBPROPSET **prgPropertySets) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyInfo(
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertyInfoSets,
        DBPROPINFOSET **prgPropertyInfoSets,
        OLECHAR **ppDescBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProperties(
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]) = 0;

};
#else
typedef struct IDBPropertiesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProperties)(
        IDBProperties* This,
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertySets,
        DBPROPSET **prgPropertySets);

    HRESULT (STDMETHODCALLTYPE *GetPropertyInfo)(
        IDBProperties* This,
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertyInfoSets,
        DBPROPINFOSET **prgPropertyInfoSets,
        OLECHAR **ppDescBuffer);

    HRESULT (STDMETHODCALLTYPE *SetProperties)(
        IDBProperties* This,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]);

    END_INTERFACE
} IDBPropertiesVtbl;
interface IDBProperties {
    CONST_VTBL IDBPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDBProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDBProperties_Release(This) (This)->lpVtbl->Release(This)
/*** IDBProperties methods ***/
#define IDBProperties_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
#define IDBProperties_GetPropertyInfo(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer) (This)->lpVtbl->GetPropertyInfo(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer)
#define IDBProperties_SetProperties(This,cPropertySets,rgPropertySets) (This)->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDBProperties_RemoteGetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBProperties_RemoteGetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBProperties_RemoteGetPropertyInfo_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertyInfoSets,
    DBPROPINFOSET **prgPropertyInfoSets,
    ULONG *pcOffsets,
    DBBYTEOFFSET **prgDescOffsets,
    ULONG *pcbDescBuffer,
    OLECHAR **ppDescBuffer,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBProperties_RemoteGetPropertyInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBProperties_RemoteSetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBProperties_RemoteSetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBProperties_GetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets);
HRESULT __RPC_STUB IDBProperties_GetProperties_Stub(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IDBProperties_GetPropertyInfo_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG *pcPropertyInfoSets,
    DBPROPINFOSET **prgPropertyInfoSets,
    OLECHAR **ppDescBuffer);
HRESULT __RPC_STUB IDBProperties_GetPropertyInfo_Stub(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertyInfoSets,
    DBPROPINFOSET **prgPropertyInfoSets,
    ULONG *pcOffsets,
    DBBYTEOFFSET **prgDescOffsets,
    ULONG *pcbDescBuffer,
    OLECHAR **ppDescBuffer,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IDBProperties_SetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertySets,
    DBPROPSET rgPropertySets[]);
HRESULT __RPC_STUB IDBProperties_SetProperties_Stub(
    IDBProperties* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IDBProperties_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDBInitialize interface
 */
#ifndef __IDBInitialize_INTERFACE_DEFINED__
#define __IDBInitialize_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBInitialize, 0x0c733a8b, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBInitialize : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Uninitialize(
        ) = 0;

};
#else
typedef struct IDBInitializeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBInitialize methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IDBInitialize* This);

    HRESULT (STDMETHODCALLTYPE *Uninitialize)(
        IDBInitialize* This);

    END_INTERFACE
} IDBInitializeVtbl;
interface IDBInitialize {
    CONST_VTBL IDBInitializeVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBInitialize_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDBInitialize_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDBInitialize_Release(This) (This)->lpVtbl->Release(This)
/*** IDBInitialize methods ***/
#define IDBInitialize_Initialize(This) (This)->lpVtbl->Initialize(This)
#define IDBInitialize_Uninitialize(This) (This)->lpVtbl->Uninitialize(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDBInitialize_RemoteInitialize_Proxy(
    IDBInitialize* This,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBInitialize_RemoteInitialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBInitialize_RemoteUninitialize_Proxy(
    IDBInitialize* This,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBInitialize_RemoteUninitialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBInitialize_Initialize_Proxy(
    IDBInitialize* This);
HRESULT __RPC_STUB IDBInitialize_Initialize_Stub(
    IDBInitialize* This,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IDBInitialize_Uninitialize_Proxy(
    IDBInitialize* This);
HRESULT __RPC_STUB IDBInitialize_Uninitialize_Stub(
    IDBInitialize* This,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IDBInitialize_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDBDataSourceAdmin interface
 */
#ifndef __IDBDataSourceAdmin_INTERFACE_DEFINED__
#define __IDBDataSourceAdmin_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBDataSourceAdmin, 0x0c733a7a, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBDataSourceAdmin : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateDataSource(
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[],
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppDBSession) = 0;

    virtual HRESULT STDMETHODCALLTYPE DestroyDataSource(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCreationProperties(
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertyInfoSets,
        DBPROPINFOSET **prgPropertyInfoSets,
        OLECHAR **ppDescBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE ModifyDataSource(
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]) = 0;

};
#else
typedef struct IDBDataSourceAdminVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBDataSourceAdmin methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateDataSource)(
        IDBDataSourceAdmin* This,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[],
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppDBSession);

    HRESULT (STDMETHODCALLTYPE *DestroyDataSource)(
        IDBDataSourceAdmin* This);

    HRESULT (STDMETHODCALLTYPE *GetCreationProperties)(
        IDBDataSourceAdmin* This,
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertyInfoSets,
        DBPROPINFOSET **prgPropertyInfoSets,
        OLECHAR **ppDescBuffer);

    HRESULT (STDMETHODCALLTYPE *ModifyDataSource)(
        IDBDataSourceAdmin* This,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]);

    END_INTERFACE
} IDBDataSourceAdminVtbl;
interface IDBDataSourceAdmin {
    CONST_VTBL IDBDataSourceAdminVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBDataSourceAdmin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDBDataSourceAdmin_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDBDataSourceAdmin_Release(This) (This)->lpVtbl->Release(This)
/*** IDBDataSourceAdmin methods ***/
#define IDBDataSourceAdmin_CreateDataSource(This,cPropertySets,rgPropertySets,pUnkOuter,riid,ppDBSession) (This)->lpVtbl->CreateDataSource(This,cPropertySets,rgPropertySets,pUnkOuter,riid,ppDBSession)
#define IDBDataSourceAdmin_DestroyDataSource(This) (This)->lpVtbl->DestroyDataSource(This)
#define IDBDataSourceAdmin_GetCreationProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer) (This)->lpVtbl->GetCreationProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer)
#define IDBDataSourceAdmin_ModifyDataSource(This,cPropertySets,rgPropertySets) (This)->lpVtbl->ModifyDataSource(This,cPropertySets,rgPropertySets)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDBDataSourceAdmin_RemoteCreateDataSource_Proxy(
    IDBDataSourceAdmin* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppDBSession,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBDataSourceAdmin_RemoteCreateDataSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBDataSourceAdmin_RemoteDestroyDataSource_Proxy(
    IDBDataSourceAdmin* This,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBDataSourceAdmin_RemoteDestroyDataSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBDataSourceAdmin_RemoteGetCreationProperties_Proxy(
    IDBDataSourceAdmin* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertyInfoSets,
    DBPROPINFOSET **prgPropertyInfoSets,
    DBCOUNTITEM *pcOffsets,
    DBBYTEOFFSET **prgDescOffsets,
    ULONG *pcbDescBuffer,
    OLECHAR **ppDescBuffer,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBDataSourceAdmin_RemoteGetCreationProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBDataSourceAdmin_RemoteModifyDataSource_Proxy(
    IDBDataSourceAdmin* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBDataSourceAdmin_RemoteModifyDataSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBDataSourceAdmin_CreateDataSource_Proxy(
    IDBDataSourceAdmin* This,
    ULONG cPropertySets,
    DBPROPSET rgPropertySets[],
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppDBSession);
HRESULT __RPC_STUB IDBDataSourceAdmin_CreateDataSource_Stub(
    IDBDataSourceAdmin* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    IUnknown *pUnkOuter,
    REFIID riid,
    IUnknown **ppDBSession,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IDBDataSourceAdmin_DestroyDataSource_Proxy(
    IDBDataSourceAdmin* This);
HRESULT __RPC_STUB IDBDataSourceAdmin_DestroyDataSource_Stub(
    IDBDataSourceAdmin* This,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IDBDataSourceAdmin_GetCreationProperties_Proxy(
    IDBDataSourceAdmin* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG *pcPropertyInfoSets,
    DBPROPINFOSET **prgPropertyInfoSets,
    OLECHAR **ppDescBuffer);
HRESULT __RPC_STUB IDBDataSourceAdmin_GetCreationProperties_Stub(
    IDBDataSourceAdmin* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertyInfoSets,
    DBPROPINFOSET **prgPropertyInfoSets,
    DBCOUNTITEM *pcOffsets,
    DBBYTEOFFSET **prgDescOffsets,
    ULONG *pcbDescBuffer,
    OLECHAR **ppDescBuffer,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IDBDataSourceAdmin_ModifyDataSource_Proxy(
    IDBDataSourceAdmin* This,
    ULONG cPropertySets,
    DBPROPSET rgPropertySets[]);
HRESULT __RPC_STUB IDBDataSourceAdmin_ModifyDataSource_Stub(
    IDBDataSourceAdmin* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IDBDataSourceAdmin_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDBAsynchNotify interface
 */
#ifndef __IDBAsynchNotify_INTERFACE_DEFINED__
#define __IDBAsynchNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBAsynchNotify, 0x0c733a96, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBAsynchNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnLowResource(
        DB_DWRESERVE dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnProgress(
        HCHAPTER hChapter,
        DBASYNCHOP eOperation,
        DBCOUNTITEM ulProgress,
        DBCOUNTITEM ulProgressMax,
        DBASYNCHPHASE eAsynchPhase,
        LPOLESTR pwszStatusText) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnStop(
        HCHAPTER hChapter,
        DBASYNCHOP eOperation,
        HRESULT hrStatus,
        LPOLESTR pwszStatusText) = 0;

};
#else
typedef struct IDBAsynchNotifyVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBAsynchNotify methods ***/
    HRESULT (STDMETHODCALLTYPE *OnLowResource)(
        IDBAsynchNotify* This,
        DB_DWRESERVE dwReserved);

    HRESULT (STDMETHODCALLTYPE *OnProgress)(
        IDBAsynchNotify* This,
        HCHAPTER hChapter,
        DBASYNCHOP eOperation,
        DBCOUNTITEM ulProgress,
        DBCOUNTITEM ulProgressMax,
        DBASYNCHPHASE eAsynchPhase,
        LPOLESTR pwszStatusText);

    HRESULT (STDMETHODCALLTYPE *OnStop)(
        IDBAsynchNotify* This,
        HCHAPTER hChapter,
        DBASYNCHOP eOperation,
        HRESULT hrStatus,
        LPOLESTR pwszStatusText);

    END_INTERFACE
} IDBAsynchNotifyVtbl;
interface IDBAsynchNotify {
    CONST_VTBL IDBAsynchNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBAsynchNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDBAsynchNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDBAsynchNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IDBAsynchNotify methods ***/
#define IDBAsynchNotify_OnLowResource(This,dwReserved) (This)->lpVtbl->OnLowResource(This,dwReserved)
#define IDBAsynchNotify_OnProgress(This,hChapter,eOperation,ulProgress,ulProgressMax,eAsynchPhase,pwszStatusText) (This)->lpVtbl->OnProgress(This,hChapter,eOperation,ulProgress,ulProgressMax,eAsynchPhase,pwszStatusText)
#define IDBAsynchNotify_OnStop(This,hChapter,eOperation,hrStatus,pwszStatusText) (This)->lpVtbl->OnStop(This,hChapter,eOperation,hrStatus,pwszStatusText)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDBAsynchNotify_RemoteOnLowResource_Proxy(
    IDBAsynchNotify* This,
    DB_DWRESERVE dwReserved);
void __RPC_STUB IDBAsynchNotify_RemoteOnLowResource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBAsynchNotify_RemoteOnProgress_Proxy(
    IDBAsynchNotify* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    DBCOUNTITEM ulProgress,
    DBCOUNTITEM ulProgressMax,
    DBASYNCHPHASE eAsynchPhase,
    LPOLESTR pwszStatusText);
void __RPC_STUB IDBAsynchNotify_RemoteOnProgress_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBAsynchNotify_RemoteOnStop_Proxy(
    IDBAsynchNotify* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    HRESULT hrStatus,
    LPOLESTR pwszStatusText);
void __RPC_STUB IDBAsynchNotify_RemoteOnStop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBAsynchNotify_OnLowResource_Proxy(
    IDBAsynchNotify* This,
    DB_DWRESERVE dwReserved);
HRESULT __RPC_STUB IDBAsynchNotify_OnLowResource_Stub(
    IDBAsynchNotify* This,
    DB_DWRESERVE dwReserved);
HRESULT CALLBACK IDBAsynchNotify_OnProgress_Proxy(
    IDBAsynchNotify* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    DBCOUNTITEM ulProgress,
    DBCOUNTITEM ulProgressMax,
    DBASYNCHPHASE eAsynchPhase,
    LPOLESTR pwszStatusText);
HRESULT __RPC_STUB IDBAsynchNotify_OnProgress_Stub(
    IDBAsynchNotify* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    DBCOUNTITEM ulProgress,
    DBCOUNTITEM ulProgressMax,
    DBASYNCHPHASE eAsynchPhase,
    LPOLESTR pwszStatusText);
HRESULT CALLBACK IDBAsynchNotify_OnStop_Proxy(
    IDBAsynchNotify* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    HRESULT hrStatus,
    LPOLESTR pwszStatusText);
HRESULT __RPC_STUB IDBAsynchNotify_OnStop_Stub(
    IDBAsynchNotify* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    HRESULT hrStatus,
    LPOLESTR pwszStatusText);

#endif  /* __IDBAsynchNotify_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDBAsynchStatus interface
 */
#ifndef __IDBAsynchStatus_INTERFACE_DEFINED__
#define __IDBAsynchStatus_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBAsynchStatus, 0x0c733a95, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBAsynchStatus : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Abort(
        HCHAPTER hChapter,
        DBASYNCHOP eOperation) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        HCHAPTER hChapter,
        DBASYNCHOP eOperation,
        DBCOUNTITEM *pulProgress,
        DBCOUNTITEM *pulProgressMax,
        DBASYNCHPHASE *peAsynchPhase,
        LPOLESTR *ppwszStatusText) = 0;

};
#else
typedef struct IDBAsynchStatusVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBAsynchStatus methods ***/
    HRESULT (STDMETHODCALLTYPE *Abort)(
        IDBAsynchStatus* This,
        HCHAPTER hChapter,
        DBASYNCHOP eOperation);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        IDBAsynchStatus* This,
        HCHAPTER hChapter,
        DBASYNCHOP eOperation,
        DBCOUNTITEM *pulProgress,
        DBCOUNTITEM *pulProgressMax,
        DBASYNCHPHASE *peAsynchPhase,
        LPOLESTR *ppwszStatusText);

    END_INTERFACE
} IDBAsynchStatusVtbl;
interface IDBAsynchStatus {
    CONST_VTBL IDBAsynchStatusVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBAsynchStatus_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDBAsynchStatus_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDBAsynchStatus_Release(This) (This)->lpVtbl->Release(This)
/*** IDBAsynchStatus methods ***/
#define IDBAsynchStatus_Abort(This,hChapter,eOperation) (This)->lpVtbl->Abort(This,hChapter,eOperation)
#define IDBAsynchStatus_GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) (This)->lpVtbl->GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText)
#endif

#endif

HRESULT STDMETHODCALLTYPE IDBAsynchStatus_RemoteAbort_Proxy(
    IDBAsynchStatus* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBAsynchStatus_RemoteAbort_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDBAsynchStatus_RemoteGetStatus_Proxy(
    IDBAsynchStatus* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    DBCOUNTITEM *pulProgress,
    DBCOUNTITEM *pulProgressMax,
    DBASYNCHPHASE *peAsynchPhase,
    LPOLESTR *ppwszStatusText,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IDBAsynchStatus_RemoteGetStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBAsynchStatus_Abort_Proxy(
    IDBAsynchStatus* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation);
HRESULT __RPC_STUB IDBAsynchStatus_Abort_Stub(
    IDBAsynchStatus* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IDBAsynchStatus_GetStatus_Proxy(
    IDBAsynchStatus* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    DBCOUNTITEM *pulProgress,
    DBCOUNTITEM *pulProgressMax,
    DBASYNCHPHASE *peAsynchPhase,
    LPOLESTR *ppwszStatusText);
HRESULT __RPC_STUB IDBAsynchStatus_GetStatus_Stub(
    IDBAsynchStatus* This,
    HCHAPTER hChapter,
    DBASYNCHOP eOperation,
    DBCOUNTITEM *pulProgress,
    DBCOUNTITEM *pulProgressMax,
    DBASYNCHPHASE *peAsynchPhase,
    LPOLESTR *ppwszStatusText,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IDBAsynchStatus_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISessionProperties interface
 */
#ifndef __ISessionProperties_INTERFACE_DEFINED__
#define __ISessionProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISessionProperties, 0x0c733a85, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ISessionProperties : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProperties(
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertySets,
        DBPROPSET **prgPropertySets) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProperties(
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]) = 0;

};
#else
typedef struct ISessionPropertiesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ISessionProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProperties)(
        ISessionProperties* This,
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG *pcPropertySets,
        DBPROPSET **prgPropertySets);

    HRESULT (STDMETHODCALLTYPE *SetProperties)(
        ISessionProperties* This,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]);

    END_INTERFACE
} ISessionPropertiesVtbl;
interface ISessionProperties {
    CONST_VTBL ISessionPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ISessionProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISessionProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISessionProperties_Release(This) (This)->lpVtbl->Release(This)
/*** ISessionProperties methods ***/
#define ISessionProperties_GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets) (This)->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets)
#define ISessionProperties_SetProperties(This,cPropertySets,rgPropertySets) (This)->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets)
#endif

#endif

HRESULT STDMETHODCALLTYPE ISessionProperties_RemoteGetProperties_Proxy(
    ISessionProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB ISessionProperties_RemoteGetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISessionProperties_RemoteSetProperties_Proxy(
    ISessionProperties* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB ISessionProperties_RemoteSetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ISessionProperties_GetProperties_Proxy(
    ISessionProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets);
HRESULT __RPC_STUB ISessionProperties_GetProperties_Stub(
    ISessionProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET *rgPropertyIDSets,
    ULONG *pcPropertySets,
    DBPROPSET **prgPropertySets,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK ISessionProperties_SetProperties_Proxy(
    ISessionProperties* This,
    ULONG cPropertySets,
    DBPROPSET rgPropertySets[]);
HRESULT __RPC_STUB ISessionProperties_SetProperties_Stub(
    ISessionProperties* This,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __ISessionProperties_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IOpenRowset interface
 */
#ifndef __IOpenRowset_INTERFACE_DEFINED__
#define __IOpenRowset_INTERFACE_DEFINED__

DEFINE_GUID(IID_IOpenRowset, 0x0c733a69, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IOpenRowset : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OpenRowset(
        IUnknown *pUnkOuter,
        DBID *pTableID,
        DBID *pIndexID,
        REFIID riid,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[],
        IUnknown **ppRowset) = 0;

};
#else
typedef struct IOpenRowsetVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IOpenRowset methods ***/
    HRESULT (STDMETHODCALLTYPE *OpenRowset)(
        IOpenRowset* This,
        IUnknown *pUnkOuter,
        DBID *pTableID,
        DBID *pIndexID,
        REFIID riid,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[],
        IUnknown **ppRowset);

    END_INTERFACE
} IOpenRowsetVtbl;
interface IOpenRowset {
    CONST_VTBL IOpenRowsetVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IOpenRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IOpenRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IOpenRowset_Release(This) (This)->lpVtbl->Release(This)
/*** IOpenRowset methods ***/
#define IOpenRowset_OpenRowset(This,pUnkOuter,pTableID,pIndexID,riid,cPropertySets,rgPropertySets,ppRowset) (This)->lpVtbl->OpenRowset(This,pUnkOuter,pTableID,pIndexID,riid,cPropertySets,rgPropertySets,ppRowset)
#endif

#endif

HRESULT STDMETHODCALLTYPE IOpenRowset_RemoteOpenRowset_Proxy(
    IOpenRowset* This,
    IUnknown *pUnkOuter,
    DBID *pTableID,
    DBID *pIndexID,
    REFIID riid,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    IUnknown **ppRowset,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IOpenRowset_RemoteOpenRowset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IOpenRowset_OpenRowset_Proxy(
    IOpenRowset* This,
    IUnknown *pUnkOuter,
    DBID *pTableID,
    DBID *pIndexID,
    REFIID riid,
    ULONG cPropertySets,
    DBPROPSET rgPropertySets[],
    IUnknown **ppRowset);
HRESULT __RPC_STUB IOpenRowset_OpenRowset_Stub(
    IOpenRowset* This,
    IUnknown *pUnkOuter,
    DBID *pTableID,
    DBID *pIndexID,
    REFIID riid,
    ULONG cPropertySets,
    DBPROPSET *rgPropertySets,
    IUnknown **ppRowset,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IOpenRowset_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRow interface
 */
#ifndef __IRow_INTERFACE_DEFINED__
#define __IRow_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRow, 0x0c733ab4, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IRow : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetColumns(
        DBORDINAL cColumns,
        DBCOLUMNACCESS rgColumns[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSourceRowset(
        REFIID riid,
        IUnknown **ppRowset,
        HROW *phRow) = 0;

    virtual HRESULT STDMETHODCALLTYPE Open(
        IUnknown *pUnkOuter,
        DBID *pColumnID,
        REFGUID rguidColumnType,
        DWORD dwBindFlags,
        REFIID riid,
        IUnknown **ppUnk) = 0;

};
#else
typedef struct IRowVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRow methods ***/
    HRESULT (STDMETHODCALLTYPE *GetColumns)(
        IRow* This,
        DBORDINAL cColumns,
        DBCOLUMNACCESS rgColumns[]);

    HRESULT (STDMETHODCALLTYPE *GetSourceRowset)(
        IRow* This,
        REFIID riid,
        IUnknown **ppRowset,
        HROW *phRow);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IRow* This,
        IUnknown *pUnkOuter,
        DBID *pColumnID,
        REFGUID rguidColumnType,
        DWORD dwBindFlags,
        REFIID riid,
        IUnknown **ppUnk);

    END_INTERFACE
} IRowVtbl;
interface IRow {
    CONST_VTBL IRowVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IRow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRow_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRow_Release(This) (This)->lpVtbl->Release(This)
/*** IRow methods ***/
#define IRow_GetColumns(This,cColumns,rgColumns) (This)->lpVtbl->GetColumns(This,cColumns,rgColumns)
#define IRow_GetSourceRowset(This,riid,ppRowset,phRow) (This)->lpVtbl->GetSourceRowset(This,riid,ppRowset,phRow)
#define IRow_Open(This,pUnkOuter,pColumnID,rguidColumnType,dwBindFlags,riid,ppUnk) (This)->lpVtbl->Open(This,pUnkOuter,pColumnID,rguidColumnType,dwBindFlags,riid,ppUnk)
#endif

#endif

HRESULT STDMETHODCALLTYPE IRow_GetSourceRowset_Proxy(
    IRow* This,
    REFIID riid,
    IUnknown **ppRowset,
    HROW *phRow);
void __RPC_STUB IRow_GetSourceRowset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRow_Open_Proxy(
    IRow* This,
    IUnknown *pUnkOuter,
    DBID *pColumnID,
    REFGUID rguidColumnType,
    DWORD dwBindFlags,
    REFIID riid,
    IUnknown **ppUnk);
void __RPC_STUB IRow_Open_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IRow_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowChange interface
 */
#ifndef __IRowChange_INTERFACE_DEFINED__
#define __IRowChange_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRowChange, 0x0c733ab5, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IRowChange : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetColumns(
        DBORDINAL cColumns,
        DBCOLUMNACCESS rgColumns[]) = 0;

};
#else
typedef struct IRowChangeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowChange methods ***/
    HRESULT (STDMETHODCALLTYPE *SetColumns)(
        IRowChange* This,
        DBORDINAL cColumns,
        DBCOLUMNACCESS rgColumns[]);

    END_INTERFACE
} IRowChangeVtbl;
interface IRowChange {
    CONST_VTBL IRowChangeVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IRowChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowChange_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowChange_Release(This) (This)->lpVtbl->Release(This)
/*** IRowChange methods ***/
#define IRowChange_SetColumns(This,cColumns,rgColumns) (This)->lpVtbl->SetColumns(This,cColumns,rgColumns)
#endif

#endif


#endif  /* __IRowChange_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBindResource interface
 */
#ifndef __IBindResource_INTERFACE_DEFINED__
#define __IBindResource_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBindResource, 0x0c733ab1, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IBindResource : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Bind(
        IUnknown *pUnkOuter,
        LPCOLESTR pwszURL,
        DBBINDURLFLAG dwBindURLFlags,
        REFGUID rguid,
        REFIID riid,
        IAuthenticate *pAuthenticate,
        DBIMPLICITSESSION *pImplSession,
        DBBINDURLSTATUS *pdwBindStatus,
        IUnknown **ppUnk) = 0;

};
#else
typedef struct IBindResourceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IBindResource methods ***/
    HRESULT (STDMETHODCALLTYPE *Bind)(
        IBindResource* This,
        IUnknown *pUnkOuter,
        LPCOLESTR pwszURL,
        DBBINDURLFLAG dwBindURLFlags,
        REFGUID rguid,
        REFIID riid,
        IAuthenticate *pAuthenticate,
        DBIMPLICITSESSION *pImplSession,
        DBBINDURLSTATUS *pdwBindStatus,
        IUnknown **ppUnk);

    END_INTERFACE
} IBindResourceVtbl;
interface IBindResource {
    CONST_VTBL IBindResourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBindResource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBindResource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBindResource_Release(This) (This)->lpVtbl->Release(This)
/*** IBindResource methods ***/
#define IBindResource_Bind(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppUnk) (This)->lpVtbl->Bind(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppUnk)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBindResource_RemoteBind_Proxy(
    IBindResource* This,
    IUnknown *pUnkOuter,
    LPCOLESTR pwszURL,
    DBBINDURLFLAG dwBindURLFlags,
    REFGUID rguid,
    REFIID riid,
    IAuthenticate *pAuthenticate,
    IUnknown *pSessionUnkOuter,
    IID *piid,
    IUnknown **ppSession,
    DBBINDURLSTATUS *pdwBindStatus,
    IUnknown **ppUnk);
void __RPC_STUB IBindResource_RemoteBind_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IBindResource_Bind_Proxy(
    IBindResource* This,
    IUnknown *pUnkOuter,
    LPCOLESTR pwszURL,
    DBBINDURLFLAG dwBindURLFlags,
    REFGUID rguid,
    REFIID riid,
    IAuthenticate *pAuthenticate,
    DBIMPLICITSESSION *pImplSession,
    DBBINDURLSTATUS *pdwBindStatus,
    IUnknown **ppUnk);
HRESULT __RPC_STUB IBindResource_Bind_Stub(
    IBindResource* This,
    IUnknown *pUnkOuter,
    LPCOLESTR pwszURL,
    DBBINDURLFLAG dwBindURLFlags,
    REFGUID rguid,
    REFIID riid,
    IAuthenticate *pAuthenticate,
    IUnknown *pSessionUnkOuter,
    IID *piid,
    IUnknown **ppSession,
    DBBINDURLSTATUS *pdwBindStatus,
    IUnknown **ppUnk);

#endif  /* __IBindResource_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICreateRow interface
 */
#ifndef __ICreateRow_INTERFACE_DEFINED__
#define __ICreateRow_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICreateRow, 0x0c733ab2, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ICreateRow : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateRow(
        IUnknown *pUnkOuter,
        LPCOLESTR pwszURL,
        DBBINDURLFLAG dwBindURLFlags,
        REFGUID rguid,
        REFIID riid,
        IAuthenticate *pAuthenticate,
        DBIMPLICITSESSION *pImplSession,
        DBBINDURLSTATUS *pdwBindStatus,
        LPOLESTR *ppwszNewURL,
        IUnknown **ppUnk) = 0;

};
#else
typedef struct ICreateRowVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICreateRow methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateRow)(
        ICreateRow* This,
        IUnknown *pUnkOuter,
        LPCOLESTR pwszURL,
        DBBINDURLFLAG dwBindURLFlags,
        REFGUID rguid,
        REFIID riid,
        IAuthenticate *pAuthenticate,
        DBIMPLICITSESSION *pImplSession,
        DBBINDURLSTATUS *pdwBindStatus,
        LPOLESTR *ppwszNewURL,
        IUnknown **ppUnk);

    END_INTERFACE
} ICreateRowVtbl;
interface ICreateRow {
    CONST_VTBL ICreateRowVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICreateRow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICreateRow_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICreateRow_Release(This) (This)->lpVtbl->Release(This)
/*** ICreateRow methods ***/
#define ICreateRow_CreateRow(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppwszNewURL,ppUnk) (This)->lpVtbl->CreateRow(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppwszNewURL,ppUnk)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICreateRow_RemoteCreateRow_Proxy(
    ICreateRow* This,
    IUnknown *pUnkOuter,
    LPCOLESTR pwszURL,
    DBBINDURLFLAG dwBindURLFlags,
    REFGUID rguid,
    REFIID riid,
    IAuthenticate *pAuthenticate,
    IUnknown *pSessionUnkOuter,
    IID *piid,
    IUnknown **ppSession,
    DBBINDURLSTATUS *pdwBindStatus,
    LPOLESTR *ppwszNewURL,
    IUnknown **ppUnk);
void __RPC_STUB ICreateRow_RemoteCreateRow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICreateRow_CreateRow_Proxy(
    ICreateRow* This,
    IUnknown *pUnkOuter,
    LPCOLESTR pwszURL,
    DBBINDURLFLAG dwBindURLFlags,
    REFGUID rguid,
    REFIID riid,
    IAuthenticate *pAuthenticate,
    DBIMPLICITSESSION *pImplSession,
    DBBINDURLSTATUS *pdwBindStatus,
    LPOLESTR *ppwszNewURL,
    IUnknown **ppUnk);
HRESULT __RPC_STUB ICreateRow_CreateRow_Stub(
    ICreateRow* This,
    IUnknown *pUnkOuter,
    LPCOLESTR pwszURL,
    DBBINDURLFLAG dwBindURLFlags,
    REFGUID rguid,
    REFIID riid,
    IAuthenticate *pAuthenticate,
    IUnknown *pSessionUnkOuter,
    IID *piid,
    IUnknown **ppSession,
    DBBINDURLSTATUS *pdwBindStatus,
    LPOLESTR *ppwszNewURL,
    IUnknown **ppUnk);

#endif  /* __ICreateRow_INTERFACE_DEFINED__ */

#include <poppack.h>

/* 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 *);
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 *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_OLEDB_H */
