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

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

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

#ifndef __oledb_h__
#define __oledb_h__

#ifndef __WIDL_INLINE
#if defined(__cplusplus) || defined(_MSC_VER)
#define __WIDL_INLINE inline
#elif defined(__GNUC__)
#define __WIDL_INLINE __inline__
#endif
#endif

/* Forward declarations */

#ifndef __IAccessor_FWD_DEFINED__
#define __IAccessor_FWD_DEFINED__
typedef interface IAccessor IAccessor;
#ifdef __cplusplus
interface IAccessor;
#endif /* __cplusplus */
#endif

#ifndef __IRowset_FWD_DEFINED__
#define __IRowset_FWD_DEFINED__
typedef interface IRowset IRowset;
#ifdef __cplusplus
interface IRowset;
#endif /* __cplusplus */
#endif

#ifndef __IRowsetInfo_FWD_DEFINED__
#define __IRowsetInfo_FWD_DEFINED__
typedef interface IRowsetInfo IRowsetInfo;
#ifdef __cplusplus
interface IRowsetInfo;
#endif /* __cplusplus */
#endif

#ifndef __IRowsetLocate_FWD_DEFINED__
#define __IRowsetLocate_FWD_DEFINED__
typedef interface IRowsetLocate IRowsetLocate;
#ifdef __cplusplus
interface IRowsetLocate;
#endif /* __cplusplus */
#endif

#ifndef __IChapteredRowset_FWD_DEFINED__
#define __IChapteredRowset_FWD_DEFINED__
typedef interface IChapteredRowset IChapteredRowset;
#ifdef __cplusplus
interface IChapteredRowset;
#endif /* __cplusplus */
#endif

#ifndef __ICommand_FWD_DEFINED__
#define __ICommand_FWD_DEFINED__
typedef interface ICommand ICommand;
#ifdef __cplusplus
interface ICommand;
#endif /* __cplusplus */
#endif

#ifndef __ICommandText_FWD_DEFINED__
#define __ICommandText_FWD_DEFINED__
typedef interface ICommandText ICommandText;
#ifdef __cplusplus
interface ICommandText;
#endif /* __cplusplus */
#endif

#ifndef __IColumnsInfo_FWD_DEFINED__
#define __IColumnsInfo_FWD_DEFINED__
typedef interface IColumnsInfo IColumnsInfo;
#ifdef __cplusplus
interface IColumnsInfo;
#endif /* __cplusplus */
#endif

#ifndef __IColumnsRowset_FWD_DEFINED__
#define __IColumnsRowset_FWD_DEFINED__
typedef interface IColumnsRowset IColumnsRowset;
#ifdef __cplusplus
interface IColumnsRowset;
#endif /* __cplusplus */
#endif

#ifndef __IDBCreateCommand_FWD_DEFINED__
#define __IDBCreateCommand_FWD_DEFINED__
typedef interface IDBCreateCommand IDBCreateCommand;
#ifdef __cplusplus
interface IDBCreateCommand;
#endif /* __cplusplus */
#endif

#ifndef __IDBCreateSession_FWD_DEFINED__
#define __IDBCreateSession_FWD_DEFINED__
typedef interface IDBCreateSession IDBCreateSession;
#ifdef __cplusplus
interface IDBCreateSession;
#endif /* __cplusplus */
#endif

#ifndef __ISourcesRowset_FWD_DEFINED__
#define __ISourcesRowset_FWD_DEFINED__
typedef interface ISourcesRowset ISourcesRowset;
#ifdef __cplusplus
interface ISourcesRowset;
#endif /* __cplusplus */
#endif

#ifndef __IDBProperties_FWD_DEFINED__
#define __IDBProperties_FWD_DEFINED__
typedef interface IDBProperties IDBProperties;
#ifdef __cplusplus
interface IDBProperties;
#endif /* __cplusplus */
#endif

#ifndef __IDBInitialize_FWD_DEFINED__
#define __IDBInitialize_FWD_DEFINED__
typedef interface IDBInitialize IDBInitialize;
#ifdef __cplusplus
interface IDBInitialize;
#endif /* __cplusplus */
#endif

#ifndef __IDBDataSourceAdmin_FWD_DEFINED__
#define __IDBDataSourceAdmin_FWD_DEFINED__
typedef interface IDBDataSourceAdmin IDBDataSourceAdmin;
#ifdef __cplusplus
interface IDBDataSourceAdmin;
#endif /* __cplusplus */
#endif

#ifndef __IDBAsynchNotify_FWD_DEFINED__
#define __IDBAsynchNotify_FWD_DEFINED__
typedef interface IDBAsynchNotify IDBAsynchNotify;
#ifdef __cplusplus
interface IDBAsynchNotify;
#endif /* __cplusplus */
#endif

#ifndef __IDBAsynchStatus_FWD_DEFINED__
#define __IDBAsynchStatus_FWD_DEFINED__
typedef interface IDBAsynchStatus IDBAsynchStatus;
#ifdef __cplusplus
interface IDBAsynchStatus;
#endif /* __cplusplus */
#endif

#ifndef __ISessionProperties_FWD_DEFINED__
#define __ISessionProperties_FWD_DEFINED__
typedef interface ISessionProperties ISessionProperties;
#ifdef __cplusplus
interface ISessionProperties;
#endif /* __cplusplus */
#endif

#ifndef __IRowsetNotify_FWD_DEFINED__
#define __IRowsetNotify_FWD_DEFINED__
typedef interface IRowsetNotify IRowsetNotify;
#ifdef __cplusplus
interface IRowsetNotify;
#endif /* __cplusplus */
#endif

#ifndef __IOpenRowset_FWD_DEFINED__
#define __IOpenRowset_FWD_DEFINED__
typedef interface IOpenRowset IOpenRowset;
#ifdef __cplusplus
interface IOpenRowset;
#endif /* __cplusplus */
#endif

#ifndef __IRow_FWD_DEFINED__
#define __IRow_FWD_DEFINED__
typedef interface IRow IRow;
#ifdef __cplusplus
interface IRow;
#endif /* __cplusplus */
#endif

#ifndef __IRowChange_FWD_DEFINED__
#define __IRowChange_FWD_DEFINED__
typedef interface IRowChange IRowChange;
#ifdef __cplusplus
interface IRowChange;
#endif /* __cplusplus */
#endif

#ifndef __IRowPosition_FWD_DEFINED__
#define __IRowPosition_FWD_DEFINED__
typedef interface IRowPosition IRowPosition;
#ifdef __cplusplus
interface IRowPosition;
#endif /* __cplusplus */
#endif

#ifndef __IRowPositionChange_FWD_DEFINED__
#define __IRowPositionChange_FWD_DEFINED__
typedef interface IRowPositionChange IRowPositionChange;
#ifdef __cplusplus
interface IRowPositionChange;
#endif /* __cplusplus */
#endif

#ifndef __IBindResource_FWD_DEFINED__
#define __IBindResource_FWD_DEFINED__
typedef interface IBindResource IBindResource;
#ifdef __cplusplus
interface IBindResource;
#endif /* __cplusplus */
#endif

#ifndef __ICreateRow_FWD_DEFINED__
#define __ICreateRow_FWD_DEFINED__
typedef interface ICreateRow ICreateRow;
#ifdef __cplusplus
interface ICreateRow;
#endif /* __cplusplus */
#endif

#ifndef __IErrorRecords_FWD_DEFINED__
#define __IErrorRecords_FWD_DEFINED__
typedef interface IErrorRecords IErrorRecords;
#ifdef __cplusplus
interface IErrorRecords;
#endif /* __cplusplus */
#endif

#ifndef __IGetDataSource_FWD_DEFINED__
#define __IGetDataSource_FWD_DEFINED__
typedef interface IGetDataSource IGetDataSource;
#ifdef __cplusplus
interface IGetDataSource;
#endif /* __cplusplus */
#endif

#ifndef __ICommandStream_FWD_DEFINED__
#define __ICommandStream_FWD_DEFINED__
typedef interface ICommandStream ICommandStream;
#ifdef __cplusplus
interface ICommandStream;
#endif /* __cplusplus */
#endif

#ifndef __ICommandProperties_FWD_DEFINED__
#define __ICommandProperties_FWD_DEFINED__
typedef interface ICommandProperties ICommandProperties;
#ifdef __cplusplus
interface ICommandProperties;
#endif /* __cplusplus */
#endif

#ifndef __IConvertType_FWD_DEFINED__
#define __IConvertType_FWD_DEFINED__
typedef interface IConvertType IConvertType;
#ifdef __cplusplus
interface IConvertType;
#endif /* __cplusplus */
#endif

#ifndef __ICommandPrepare_FWD_DEFINED__
#define __ICommandPrepare_FWD_DEFINED__
typedef interface ICommandPrepare ICommandPrepare;
#ifdef __cplusplus
interface ICommandPrepare;
#endif /* __cplusplus */
#endif

#ifndef __IRowsetChange_FWD_DEFINED__
#define __IRowsetChange_FWD_DEFINED__
typedef interface IRowsetChange IRowsetChange;
#ifdef __cplusplus
interface IRowsetChange;
#endif /* __cplusplus */
#endif

#ifndef __IRowsetUpdate_FWD_DEFINED__
#define __IRowsetUpdate_FWD_DEFINED__
typedef interface IRowsetUpdate IRowsetUpdate;
#ifdef __cplusplus
interface IRowsetUpdate;
#endif /* __cplusplus */
#endif

#ifndef __IMultipleResults_FWD_DEFINED__
#define __IMultipleResults_FWD_DEFINED__
typedef interface IMultipleResults IMultipleResults;
#ifdef __cplusplus
interface IMultipleResults;
#endif /* __cplusplus */
#endif

#ifndef __ITransaction_FWD_DEFINED__
#define __ITransaction_FWD_DEFINED__
typedef interface ITransaction ITransaction;
#ifdef __cplusplus
interface ITransaction;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionCloner_FWD_DEFINED__
#define __ITransactionCloner_FWD_DEFINED__
typedef interface ITransactionCloner ITransactionCloner;
#ifdef __cplusplus
interface ITransactionCloner;
#endif /* __cplusplus */
#endif

#ifndef __ITransaction2_FWD_DEFINED__
#define __ITransaction2_FWD_DEFINED__
typedef interface ITransaction2 ITransaction2;
#ifdef __cplusplus
interface ITransaction2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionDispenser_FWD_DEFINED__
#define __ITransactionDispenser_FWD_DEFINED__
typedef interface ITransactionDispenser ITransactionDispenser;
#ifdef __cplusplus
interface ITransactionDispenser;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionOptions_FWD_DEFINED__
#define __ITransactionOptions_FWD_DEFINED__
typedef interface ITransactionOptions ITransactionOptions;
#ifdef __cplusplus
interface ITransactionOptions;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionOutcomeEvents_FWD_DEFINED__
#define __ITransactionOutcomeEvents_FWD_DEFINED__
typedef interface ITransactionOutcomeEvents ITransactionOutcomeEvents;
#ifdef __cplusplus
interface ITransactionOutcomeEvents;
#endif /* __cplusplus */
#endif

#ifndef __ITmNodeName_FWD_DEFINED__
#define __ITmNodeName_FWD_DEFINED__
typedef interface ITmNodeName ITmNodeName;
#ifdef __cplusplus
interface ITmNodeName;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionJoin_FWD_DEFINED__
#define __ITransactionJoin_FWD_DEFINED__
typedef interface ITransactionJoin ITransactionJoin;
#ifdef __cplusplus
interface ITransactionJoin;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionLocal_FWD_DEFINED__
#define __ITransactionLocal_FWD_DEFINED__
typedef interface ITransactionLocal ITransactionLocal;
#ifdef __cplusplus
interface ITransactionLocal;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionObject_FWD_DEFINED__
#define __ITransactionObject_FWD_DEFINED__
typedef interface ITransactionObject ITransactionObject;
#ifdef __cplusplus
interface ITransactionObject;
#endif /* __cplusplus */
#endif

#ifndef __ICommandWithParameters_FWD_DEFINED__
#define __ICommandWithParameters_FWD_DEFINED__
typedef interface ICommandWithParameters ICommandWithParameters;
#ifdef __cplusplus
interface ICommandWithParameters;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <wtypes.h>
#include <oaidl.h>
#include <ocidl.h>
#include <propidl.h>
#include <urlmon.h>
#include <unknwn.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 LONG_PTR DB_LRESERVE;
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 struct tagDB_NUMERIC {
    BYTE precision;
    BYTE scale;
    BYTE sign;
    BYTE val[16];
} DB_NUMERIC;
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;
enum DBPROPSTATUSENUM {
    DBPROPSTATUS_OK = 0,
    DBPROPSTATUS_NOTSUPPORTED = 1,
    DBPROPSTATUS_BADVALUE = 2,
    DBPROPSTATUS_BADOPTION = 3,
    DBPROPSTATUS_BADCOLUMN = 4,
    DBPROPSTATUS_NOTALLSETTABLE = 5,
    DBPROPSTATUS_NOTSETTABLE = 6,
    DBPROPSTATUS_NOTSET = 7,
    DBPROPSTATUS_CONFLICTING = 8
};
enum DBPROPSTATUSENUM21 {
    DBPROPSTATUS_NOTAVAILABLE = 9
};
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;
enum DBPROPFLAGSENUM {
    DBPROPFLAGS_NOTSUPPORTED = 0x0,
    DBPROPFLAGS_COLUMN = 0x1,
    DBPROPFLAGS_DATASOURCE = 0x2,
    DBPROPFLAGS_DATASOURCECREATE = 0x4,
    DBPROPFLAGS_DATASOURCEINFO = 0x8,
    DBPROPFLAGS_DBINIT = 0x10,
    DBPROPFLAGS_INDEX = 0x20,
    DBPROPFLAGS_ROWSET = 0x40,
    DBPROPFLAGS_TABLE = 0x80,
    DBPROPFLAGS_COLUMNOK = 0x100,
    DBPROPFLAGS_READ = 0x200,
    DBPROPFLAGS_WRITE = 0x400,
    DBPROPFLAGS_REQUIRED = 0x800,
    DBPROPFLAGS_SESSION = 0x1000
};
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
};
enum DBPROPENUM {
    DBPROP_ABORTPRESERVE = 0x2,
    DBPROP_ACTIVESESSIONS = 0x3,
    DBPROP_ASYNCTXNCOMMIT = 0x4,
    DBPROP_AUTH_CACHE_AUTHINFO = 0x5,
    DBPROP_AUTH_ENCRYPT_PASSWORD = 0x6,
    DBPROP_AUTH_INTEGRATED = 0x7,
    DBPROP_AUTH_MASK_PASSWORD = 0x8,
    DBPROP_AUTH_PASSWORD = 0x9,
    DBPROP_AUTH_PERSIST_ENCRYPTED = 0xa,
    DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO = 0xb,
    DBPROP_AUTH_USERID = 0xc,
    DBPROP_BLOCKINGSTORAGEOBJECTS = 0xd,
    DBPROP_BOOKMARKS = 0xe,
    DBPROP_BOOKMARKSKIPPED = 0xf,
    DBPROP_BOOKMARKTYPE = 0x10,
    DBPROP_CACHEDEFERRED = 0x11,
    DBPROP_CANFETCHBACKWARDS = 0x12,
    DBPROP_CANHOLDROWS = 0x13,
    DBPROP_CANSCROLLBACKWARDS = 0x15,
    DBPROP_CATALOGLOCATION = 0x16,
    DBPROP_CATALOGTERM = 0x17,
    DBPROP_CATALOGUSAGE = 0x18,
    DBPROP_COL_AUTOINCREMENT = 0x1a,
    DBPROP_COL_DEFAULT = 0x1b,
    DBPROP_COL_DESCRIPTION = 0x1c,
    DBPROP_COL_NULLABLE = 0x1d,
    DBPROP_COL_PRIMARYKEY = 0x1e,
    DBPROP_COL_UNIQUE = 0x1f,
    DBPROP_COLUMNDEFINITION = 0x20,
    DBPROP_COLUMNRESTRICT = 0x21,
    DBPROP_COMMANDTIMEOUT = 0x22,
    DBPROP_COMMITPRESERVE = 0x23,
    DBPROP_CONCATNULLBEHAVIOR = 0x24,
    DBPROP_CURRENTCATALOG = 0x25,
    DBPROP_DATASOURCENAME = 0x26,
    DBPROP_DATASOURCEREADONLY = 0x27,
    DBPROP_DBMSNAME = 0x28,
    DBPROP_DBMSVER = 0x29,
    DBPROP_DEFERRED = 0x2a,
    DBPROP_DELAYSTORAGEOBJECTS = 0x2b,
    DBPROP_GROUPBY = 0x2c,
    DBPROP_HETEROGENEOUSTABLES = 0x2d,
    DBPROP_IDENTIFIERCASE = 0x2e,
    DBPROP_IMMOBILEROWS = 0x2f,
    DBPROP_INDEX_AUTOUPDATE = 0x30,
    DBPROP_INDEX_CLUSTERED = 0x31,
    DBPROP_INDEX_FILLFACTOR = 0x32,
    DBPROP_INDEX_INITIALSIZE = 0x33,
    DBPROP_INDEX_NULLCOLLATION = 0x34,
    DBPROP_INDEX_NULLS = 0x35,
    DBPROP_INDEX_PRIMARYKEY = 0x36,
    DBPROP_INDEX_SORTBOOKMARKS = 0x37,
    DBPROP_INDEX_TYPE = 0x38,
    DBPROP_INDEX_UNIQUE = 0x39,
    DBPROP_INIT_DATASOURCE = 0x3b,
    DBPROP_INIT_HWND = 0x3c,
    DBPROP_INIT_IMPERSONATION_LEVEL = 0x3d,
    DBPROP_INIT_LOCATION = 0x3e,
    DBPROP_INIT_MODE = 0x3f,
    DBPROP_INIT_PROMPT = 0x40,
    DBPROP_INIT_PROTECTION_LEVEL = 0x41,
    DBPROP_INIT_TIMEOUT = 0x42,
    DBPROP_LITERALBOOKMARKS = 0x43,
    DBPROP_LITERALIDENTITY = 0x44,
    DBPROP_MAXINDEXSIZE = 0x46,
    DBPROP_MAXOPENROWS = 0x47,
    DBPROP_MAXPENDINGROWS = 0x48,
    DBPROP_MAXROWS = 0x49,
    DBPROP_MAXROWSIZE = 0x4a,
    DBPROP_MAXROWSIZEINCLUDESBLOB = 0x4b,
    DBPROP_MAXTABLESINSELECT = 0x4c,
    DBPROP_MAYWRITECOLUMN = 0x4d,
    DBPROP_MEMORYUSAGE = 0x4e,
    DBPROP_MULTIPLESTORAGEOBJECTS = 0x50,
    DBPROP_MULTITABLEUPDATE = 0x51,
    DBPROP_NOTIFICATIONPHASES = 0x52,
    DBPROP_NULLCOLLATION = 0x53,
    DBPROP_OLEOBJECTS = 0x54,
    DBPROP_ORDERBYCOLUMNSINSELECT = 0x55,
    DBPROP_ORDEREDBOOKMARKS = 0x56,
    DBPROP_OTHERINSERT = 0x57,
    DBPROP_OTHERUPDATEDELETE = 0x58,
    DBPROP_OWNINSERT = 0x59,
    DBPROP_OWNUPDATEDELETE = 0x5a,
    DBPROP_PREPAREABORTBEHAVIOR = 0x5b,
    DBPROP_PREPARECOMMITBEHAVIOR = 0x5c,
    DBPROP_PROCEDURETERM = 0x5d,
    DBPROP_PROVIDERNAME = 0x60,
    DBPROP_PROVIDEROLEDBVER = 0x61,
    DBPROP_PROVIDERVER = 0x62,
    DBPROP_QUICKRESTART = 0x63,
    DBPROP_QUOTEDIDENTIFIERCASE = 0x64,
    DBPROP_REENTRANTEVENTS = 0x65,
    DBPROP_REMOVEDELETED = 0x66,
    DBPROP_REPORTMULTIPLECHANGES = 0x67,
    DBPROP_ROWRESTRICT = 0x68,
    DBPROP_ROWTHREADMODEL = 0x69,
    DBPROP_SCHEMATERM = 0x6a,
    DBPROP_SCHEMAUSAGE = 0x6b,
    DBPROP_SERVERCURSOR = 0x6c,
    DBPROP_SQLSUPPORT = 0x6d,
    DBPROP_STRUCTUREDSTORAGE = 0x6f,
    DBPROP_SUBQUERIES = 0x70,
    DBPROP_SUPPORTEDTXNISOLEVELS = 0x71,
    DBPROP_SUPPORTEDTXNISORETAIN = 0x72,
    DBPROP_TABLETERM = 0x73,
    DBPROP_TRANSACTEDOBJECT = 0x74,
    DBPROP_UPDATABILITY = 0x75,
    DBPROP_USERNAME = 0x76,
    DBPROP_STRONGIDENTITY = 0x77,
    DBPROP_BYREFACCESSORS = 0x78,
    DBPROP_IAccessor = 0x79,
    DBPROP_IColumnsInfo = 0x7a,
    DBPROP_IColumnsRowset = 0x7b,
    DBPROP_IConnectionPointContainer = 0x7c,
    DBPROP_IRowset = 0x7e,
    DBPROP_IRowsetChange = 0x7f,
    DBPROP_IRowsetIdentity = 0x80,
    DBPROP_IRowsetInfo = 0x81,
    DBPROP_IRowsetLocate = 0x82,
    DBPROP_IRowsetResynch = 0x84,
    DBPROP_IRowsetScroll = 0x85,
    DBPROP_IRowsetUpdate = 0x86,
    DBPROP_ISupportErrorInfo = 0x87,
    DBPROP_ILockBytes = 0x88,
    DBPROP_ISequentialStream = 0x89,
    DBPROP_IStorage = 0x8a,
    DBPROP_IStream = 0x8b,
    DBPROP_TBL_TEMPTABLE = 0x8c,
    DBPROP_IRowsetIndex = 0x9f,
    DBPROP_INIT_PROVIDERSTRING = 0xa0,
    DBPROP_SUPPORTEDTXNDDL = 0xa1,
    DBPROP_INDEX_TEMPINDEX = 0xa3,
    DBPROP_COL_FIXEDLENGTH = 0xa7,
    DBPROP_ASYNCTXNABORT = 0xa8,
    DBPROP_DSOTHREADMODEL = 0xa9,
    DBPROP_NOTIFYCOLUMNSET = 0xab,
    DBPROP_NOTIFYROWDELETE = 0xad,
    DBPROP_NOTIFYROWFIRSTCHANGE = 0xae,
    DBPROP_NOTIFYROWINSERT = 0xaf,
    DBPROP_NOTIFYROWRESYNCH = 0xb1,
    DBPROP_NOTIFYROWSETRELEASE = 0xb2,
    DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE = 0xb3,
    DBPROP_NOTIFYROWUNDOCHANGE = 0xb4,
    DBPROP_NOTIFYROWUNDODELETE = 0xb5,
    DBPROP_NOTIFYROWUNDOINSERT = 0xb6,
    DBPROP_NOTIFYROWUPDATE = 0xb7,
    DBPROP_OUTPUTPARAMETERAVAILABILITY = 0xb8,
    DBPROP_PERSISTENTIDTYPE = 0xb9,
    DBPROP_INIT_LCID = 0xba,
    DBPROP_APPENDONLY = 0xbb,
    DBPROP_CHANGEINSERTEDROWS = 0xbc,
    DBPROP_RETURNPENDINGINSERTS = 0xbd,
    DBPROP_SESS_AUTOCOMMITISOLEVELS = 0xbe,
    DBPROP_MULTIPLEPARAMSETS = 0xbf,
    DBPROP_ROWSETCONVERSIONSONCOMMAND = 0xc0,
    DBPROP_IConvertType = 0xc2,
    DBPROP_MULTIPLERESULTS = 0xc4,
    DBPROP_NOTIFICATIONGRANULARITY = 0xc6,
    DBPROP_NOTIFYROWSETCHANGED = 0xd3
};
enum DBPROPENUM15 {
    DBPROP_FILTERCOMPAREOPS = 0xd1,
    DBPROP_FINDCOMPAREOPS = 0xd2,
    DBPROP_IChapteredRowset = 0xca,
    DBPROP_IDBAsynchStatus = 0xcb,
    DBPROP_IRowsetFind = 0xcc,
    DBPROP_IRowsetView = 0xd4,
    DBPROP_IViewChapter = 0xd5,
    DBPROP_IViewFilter = 0xd6,
    DBPROP_IViewRowset = 0xd7,
    DBPROP_IViewSort = 0xd8,
    DBPROP_INIT_ASYNCH = 0xc8,
    DBPROP_MAXOPENCHAPTERS = 0xc7,
    DBPROP_MAXORSINFILTER = 0xcd,
    DBPROP_MAXSORTCOLUMNS = 0xce,
    DBPROP_ROWSET_ASYNCH = 0xc9,
    DBPROP_SORTONINDEX = 0xcf
};
enum DBPROPENUM20 {
    DBPROP_IMultipleResults = 0xd9,
    DBPROP_DATASOURCE_TYPE = 0xfb,
    MDPROP_AXES = 0xfc,
    MDPROP_FLATTENING_SUPPORT = 0xfd,
    MDPROP_MDX_JOINCUBES = 0xfe,
    MDPROP_NAMED_LEVELS = 0xff,
    MDPROP_RANGEROWSET = 0x100,
    MDPROP_MDX_SLICER = 0xda,
    MDPROP_MDX_CUBEQUALIFICATION = 0xdb,
    MDPROP_MDX_OUTERREFERENCE = 0xdc,
    MDPROP_MDX_QUERYBYPROPERTY = 0xdd,
    MDPROP_MDX_CASESUPPORT = 0xde,
    MDPROP_MDX_STRING_COMPOP = 0xe0,
    MDPROP_MDX_DESCFLAGS = 0xe1,
    MDPROP_MDX_SET_FUNCTIONS = 0xe2,
    MDPROP_MDX_MEMBER_FUNCTIONS = 0xe3,
    MDPROP_MDX_NUMERIC_FUNCTIONS = 0xe4,
    MDPROP_MDX_FORMULAS = 0xe5,
    MDPROP_AGGREGATECELL_UPDATE = 0xe6,
    MDPROP_MDX_AGGREGATECELL_UPDATE = MDPROP_AGGREGATECELL_UPDATE,
    MDPROP_MDX_OBJQUALIFICATION = 0x105,
    MDPROP_MDX_NONMEASURE_EXPRESSIONS = 0x106,
    DBPROP_ACCESSORDER = 0xe7,
    DBPROP_BOOKMARKINFO = 0xe8,
    DBPROP_INIT_CATALOG = 0xe9,
    DBPROP_ROW_BULKOPS = 0xea,
    DBPROP_PROVIDERFRIENDLYNAME = 0xeb,
    DBPROP_LOCKMODE = 0xec,
    DBPROP_MULTIPLECONNECTIONS = 0xed,
    DBPROP_UNIQUEROWS = 0xee,
    DBPROP_SERVERDATAONINSERT = 0xef,
    DBPROP_STORAGEFLAGS = 0xf0,
    DBPROP_CONNECTIONSTATUS = 0xf4,
    DBPROP_ALTERCOLUMN = 0xf5,
    DBPROP_COLUMNLCID = 0xf6,
    DBPROP_RESETDATASOURCE = 0xf7,
    DBPROP_INIT_OLEDBSERVICES = 0xf8,
    DBPROP_IRowsetRefresh = 0xf9,
    DBPROP_SERVERNAME = 0xfa,
    DBPROP_IParentRowset = 0x101,
    DBPROP_HIDDENCOLUMNS = 0x102,
    DBPROP_PROVIDERMEMORY = 0x103,
    DBPROP_CLIENTCURSOR = 0x104
};
enum DBPROPENUM21 {
    DBPROP_TRUSTEE_USERNAME = 0xf1,
    DBPROP_TRUSTEE_AUTHENTICATION = 0xf2,
    DBPROP_TRUSTEE_NEWAUTHENTICATION = 0xf3,
    DBPROP_IRow = 0x107,
    DBPROP_IRowChange = 0x108,
    DBPROP_IRowSchemaChange = 0x109,
    DBPROP_IGetRow = 0x10a,
    DBPROP_IScopedOperations = 0x10b,
    DBPROP_IBindResource = 0x10c,
    DBPROP_ICreateRow = 0x10d,
    DBPROP_INIT_BINDFLAGS = 0x10e,
    DBPROP_INIT_LOCKOWNER = 0x10f,
    DBPROP_GENERATEURL = 0x111,
    DBPROP_IDBBinderProperties = 0x112,
    DBPROP_IColumnsInfo2 = 0x113,
    DBPROP_IRegisterProvider = 0x114,
    DBPROP_IGetSession = 0x115,
    DBPROP_IGetSourceRow = 0x116,
    DBPROP_IRowsetCurrentIndex = 0x117,
    DBPROP_OPENROWSETSUPPORT = 0x118,
    DBPROP_COL_ISLONG = 0x119
};
enum DBPROPENUM25 {
    DBPROP_COL_SEED = 0x11a,
    DBPROP_COL_INCREMENT = 0x11b,
    DBPROP_INIT_GENERALTIMEOUT = 0x11c,
    DBPROP_COMSERVICES = 0x11d
};
enum DBPROPENUM26 {
    DBPROP_OUTPUTSTREAM = 0x11e,
    DBPROP_OUTPUTENCODING = 0x11f,
    DBPROP_TABLESTATISTICS = 0x120,
    DBPROP_SKIPROWCOUNTRESULTS = 0x123,
    DBPROP_IRowsetBookmark = 0x124,
    MDPROP_VISUALMODE = 0x125
};
#ifdef DBINITCONSTANTS
#ifdef __cplusplus
#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        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 = \
	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
#endif
#define DEFINE_DBID(name, dbguid, kind, val) \
 const DBID name = { {dbguid}, kind, {(LPOLESTR)val} }
#else
#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
    EXTERN_C const GUID name
#define DEFINE_DBID(name, dbguid, kind, val) \
    EXTERN_C const DBID name
#endif
#define DBCIDGUID               {0x0c733a81, 0x2a1c, 0x11ce, {0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d}}
#define DB_NULLGUID             {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}
DEFINE_DBGUID(DBGUID_SQL,        0xc8b522d7, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBGUID_DEFAULT,    0xc8b521fb, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
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);
DEFINE_DBGUID(DBPROPSET_COLUMN,            0xc8b522b9, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_DATASOURCE,        0xc8b522ba, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_DATASOURCEINFO,    0xc8b522bb, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_DBINIT,            0xc8b522bc, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_INDEX,             0xc8b522bd, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_ROWSET,            0xc8b522be, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_TABLE,             0xc8b522bf, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_DATASOURCEALL,     0xc8b522c0, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_DATASOURCEINFOALL, 0xc8b522c1, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_ROWSETALL,         0xc8b522c2, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_SESSION,           0xc8b522c6, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_SESSIONALL,        0xc8b522c7, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_DBINITALL,         0xc8b522ca, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBGUID(DBPROPSET_PROPERTIESINERROR, 0xc8b522d4, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
DEFINE_DBID(DB_NULLID,               DB_NULLGUID, 0,                   0);
DEFINE_DBID(DBCOLUMN_BASECOLUMNNAME, DBCIDGUID,   DBKIND_GUID_PROPID, 10);
DEFINE_DBID(DBCOLUMN_BASETABLENAME,  DBCIDGUID,   DBKIND_GUID_PROPID, 11);
DEFINE_DBID(DBCOLUMN_KEYCOLUMN,      DBCIDGUID,   DBKIND_GUID_PROPID, 41);
#define DBPROMPT_PROMPT              0x01
#define DBPROMPT_COMPLETE            0x02
#define DBPROMPT_COMPLETEREQUIRED    0x03
#define DBPROMPT_NOPROMPT            0x04
#define DBPROPVAL_STGM_READ                 OF_READ
#define DBPROPVAL_STGM_WRITE                OF_WRITE
#define DBPROPVAL_STGM_READWRITE            OF_READWRITE
#define DBPROPVAL_STGM_SHARE_DENY_NONE      OF_SHARE_DENY_NONE
#define DBPROPVAL_STGM_SHARE_DENY_READ      OF_SHARE_DENY_READ
#define DBPROPVAL_STGM_SHARE_DENY_WRITE     OF_SHARE_DENY_WRITE)
#define DBPROPVAL_STGM_SHARE_EXCLUSIVE      OF_SHARE_EXCLUSIVE
#define DBPROPVAL_STGM_DIRECT               0x00010000
#define DBPROPVAL_STGM_TRANSACTED           0x00020000
#define DBPROPVAL_STGM_CREATE               OF_CREATE
#define DBPROPVAL_STGM_CONVERT              0x00040000
#define DBPROPVAL_STGM_FAILIFTHERE          0x00080000
#define DBPROPVAL_STGM_PRIORITY             0x00100000
#define DBPROPVAL_STGM_DELETEONRELEASE      0x00200000
#define DBPROPVAL_GB_COLLATE                __MSABI_LONG(0x00000010)
#define DBPROPVAL_CS_UNINITIALIZED          __MSABI_LONG(0x00000000)
#define DBPROPVAL_CS_INITIALIZED            __MSABI_LONG(0x00000001)
#define DBPROPVAL_CS_COMMUNICATIONFAILURE   __MSABI_LONG(0x00000002)
#define DBPROPVAL_RD_RESETALL               __MSABI_LONG(0xffffffff)
#define DBPROPVAL_OS_RESOURCEPOOLING        __MSABI_LONG(0x00000001)
#define DBPROPVAL_OS_TXNENLISTMENT          __MSABI_LONG(0x00000002)
#define DBPROPVAL_OS_CLIENTCURSOR           __MSABI_LONG(0x00000004)
#define DBPROPVAL_OS_ENABLEALL              __MSABI_LONG(0xffffffff)
#define DBPROPVAL_BI_CROSSROWSET            __MSABI_LONG(0x00000001)
#define DBPROPVAL_RT_FREETHREAD            __MSABI_LONG(0x00000001)
#define DBPROPVAL_RT_APTMTTHREAD           __MSABI_LONG(0x00000002)
#define DBPROPVAL_RT_SINGLETHREAD          __MSABI_LONG(0x00000004)
#define DBPROPVAL_LM_NONE                  __MSABI_LONG(0x00000001)
#define DBPROPVAL_LM_READ                  __MSABI_LONG(0x00000002)
#define DBPROPVAL_LM_INTENT                __MSABI_LONG(0x00000004)
#define DBPROPVAL_LM_RITE                  __MSABI_LONG(0x00000008)
#define DBPROPVAL_MR_NOTSUPPORTED          __MSABI_LONG(0x00000000)
#define DBPROPVAL_MR_SUPPORTED             __MSABI_LONG(0x00000001)
#define DBPROPVAL_MR_CONCURRENT            __MSABI_LONG(0x00000002)
#define DB_MODE_READ                        0x01
#define DB_MODE_WRITE                       0x02
#define DB_MODE_READWRITE                   0x03
#define DB_MODE_SHARE_DENY_READ             0x04
#define DB_MODE_SHARE_DENY_WRITE            0x08
#define DB_MODE_SHARE_EXCLUSIVE             0x0c
#define DB_MODE_SHARE_DENY_NONE             0x10
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_S_LOCKUPGRADED = 1,
    DBROWSTATUS_S_MULTIPLECHANGES = 2,
    DBROWSTATUS_S_PENDINGCHANGES = 3,
    DBROWSTATUS_E_CANCELED = 4,
    DBROWSTATUS_E_CANTLOCKROW = 5,
    DBROWSTATUS_E_CANTRELEASE = 6,
    DBROWSTATUS_E_CONCURRENCYVIOLATION = 7,
    DBROWSTATUS_E_DELETED = 8,
    DBROWSTATUS_E_PENDINGINSERT = 9,
    DBROWSTATUS_E_NEWLYINSERTED = 10,
    DBROWSTATUS_E_INTEGRITYVIOLATION = 11,
    DBROWSTATUS_E_INVALID = 12,
    DBROWSTATUS_E_MAXPENDCHANGESEXCEEDED = 13,
    DBROWSTATUS_E_OBJECTOPEN = 14,
    DBROWSTATUS_E_OUTOFMEMORY = 15,
    DBROWSTATUS_E_PERMISSIONDENIED = 16,
    DBROWSTATUS_E_LIMITREACHED = 17,
    DBROWSTATUS_E_SCHEMAVIOLATION = 18,
    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;
typedef struct tagDBDATE {
    SHORT year;
    USHORT month;
    USHORT day;
} DBDATE;
typedef struct tagDBTIME {
    USHORT hour;
    USHORT minute;
    USHORT second;
} DBTIME;
typedef struct tagDBTIMESTAMP {
    SHORT year;
    USHORT month;
    USHORT day;
    USHORT hour;
    USHORT minute;
    USHORT second;
    ULONG fraction;
} DBTIMESTAMP;
typedef DWORD DBREASON;
typedef DWORD DBEVENTPHASE;
enum DBEVENTPHASEENUM {
    DBEVENTPHASE_OKTODO = 0,
    DBEVENTPHASE_ABOUTTODO = 1,
    DBEVENTPHASE_SYNCHAFTER = 2,
    DBEVENTPHASE_FAILEDTODO = 3,
    DBEVENTPHASE_DIDEVENT = 4
};
enum DBREASONENUM {
    DBREASON_ROWSET_FETCHPOSITIONCHANGE = 0,
    DBREASON_ROWSET_RELEASE = 1,
    DBREASON_COLUMN_SET = 2,
    DBREASON_COLUMN_RECALCULATED = 3,
    DBREASON_ROW_ACTIVATE = 4,
    DBREASON_ROW_RELEASE = 5,
    DBREASON_ROW_DELETE = 6,
    DBREASON_ROW_FIRSTCHANCE = 7,
    DBREASON_ROW_INSERT = 8,
    DBREASON_ROW_RESYNCH = 9,
    DBREASON_ROW_UNDOCHANGE = 10,
    DBREASON_ROW_UNDOINSERT = 11,
    DBREASON_ROW_UNDODELETE = 12,
    DBREASON_ROW_UPDATE = 13,
    DBREASON_ROWSET_CHANGED = 14
};
enum DBREASONENUM15 {
    DBREASON_ROWPOSITION_CHANGED = DBREASON_ROWSET_CHANGED + 1,
    DBREASON_ROWPOSITION_CHAPTERCHANGED = 16,
    DBREASON_ROWPOSITION_CLEARED = 17,
    DBREASON_ROW_ASYNCHINSERT = 18
};
typedef DWORD DBCOLUMNFLAGS;
enum DBCOLUMNFLAGSENUM {
    DBCOLUMNFLAGS_ISBOOKMARK = 0x1,
    DBCOLUMNFLAGS_MAYDEFER = 0x2,
    DBCOLUMNFLAGS_WRITE = 0x4,
    DBCOLUMNFLAGS_WRITEUNKNOWN = 0x8,
    DBCOLUMNFLAGS_ISFIXEDLENGTH = 0x10,
    DBCOLUMNFLAGS_ISNULLABLE = 0x20,
    DBCOLUMNFLAGS_MAYBENULL = 0x40,
    DBCOLUMNFLAGS_ISLONG = 0x80,
    DBCOLUMNFLAGS_ISROWID = 0x100,
    DBCOLUMNFLAGS_ISROWVER = 0x200,
    DBCOLUMNFLAGS_CACHEDEFERRED = 0x1000
};
enum DBCOLUMNFLAGS15ENUM {
    DBCOLUMNFLAGS_ISCHAPTER = 0x2000
};
enum DBCOLUMNFLAGSENUM20 {
    DBCOLUMNFLAGS_SCALEISNEGATIVE = 0x4000,
    DBCOLUMNFLAGS_RESERVED = 0x8000
};
enum DBCOLUMNFLAGSENUM21 {
    DBCOLUMNFLAGS_ISROWURL = 0x10000,
    DBCOLUMNFLAGS_ISDEFAULTSTREAM = 0x20000,
    DBCOLUMNFLAGS_ISCOLLECTION = 0x40000
};
enum DBCOLUMNFLAGSENUM26 {
    DBCOLUMNFLAGS_ISSTREAM = 0x80000,
    DBCOLUMNFLAGS_ISROWSET = 0x100000,
    DBCOLUMNFLAGS_ISROW = 0x200000,
    DBCOLUMNFLAGS_ROWSPECIFICCOLUMN = 0x400000
};
enum DBCOLUMNFLAGSDEPRECATED {
    DBCOLUMNFLAGS_KEYCOLUMN = 0x8000
};
typedef struct tagDBCOLUMNINFO {
    LPOLESTR pwszName;
    ITypeInfo *pTypeInfo;
    DBORDINAL iOrdinal;
    DBCOLUMNFLAGS dwFlags;
    DBLENGTH ulColumnSize;
    DBTYPE wType;
    BYTE bPrecision;
    BYTE bScale;
    DBID columnid;
} DBCOLUMNINFO;
typedef DWORD DBPARAMFLAGS;
enum DBPARAMFLAGSENUM {
    DBPARAMFLAGS_ISINPUT = 0x1,
    DBPARAMFLAGS_ISOUTPUT = 0x2,
    DBPARAMFLAGS_ISSIGNED = 0x10,
    DBPARAMFLAGS_ISNULLABLE = 0x40,
    DBPARAMFLAGS_ISLONG = 0x80
};
enum DBPARAMFLAGSENUM20 {
    DBPARAMFLAGS_SCALEISNEGATIVE = 0x100
};
typedef struct tagDBPARAMINFO {
    DBPARAMFLAGS dwFlags;
    DBORDINAL iOrdinal;
    LPOLESTR pwszName;
    ITypeInfo *pTypeInfo;
    DBLENGTH ulParamSize;
    DBTYPE wType;
    BYTE bPrecision;
    BYTE bScale;
} DBPARAMINFO;
/*****************************************************************************
 * IAccessor interface
 */
#ifndef __IAccessor_INTERFACE_DEFINED__
#define __IAccessor_INTERFACE_DEFINED__

typedef DWORD DBACCESSORFLAGS;
typedef DWORD DBBINDSTATUS;
enum DBACCESSORFLAGSENUM {
    DBACCESSOR_INVALID = 0x0,
    DBACCESSOR_PASSBYREF = 0x1,
    DBACCESSOR_ROWDATA = 0x2,
    DBACCESSOR_PARAMETERDATA = 0x4,
    DBACCESSOR_OPTIMIZED = 0x8,
    DBACCESSOR_INHERITED = 0x10
};
enum DBBINDSTATUSENUM {
    DBBINDSTATUS_OK = 0,
    DBBINDSTATUS_BADORDINAL = 1,
    DBBINDSTATUS_UNSUPPORTEDCONVERSION = 2,
    DBBINDSTATUS_BADBINDINFO = 3,
    DBBINDSTATUS_BADSTORAGEFLAGS = 4,
    DBBINDSTATUS_NOINTERFACE = 5,
    DBBINDSTATUS_MULTIPLESTORAGE = 6
};
DEFINE_GUID(IID_IAccessor, 0x0c733a8c, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a8c-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessor, 0x0c733a8c, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IAccessor_QueryInterface(IAccessor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IAccessor_AddRef(IAccessor* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IAccessor_Release(IAccessor* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessor methods ***/
static __WIDL_INLINE HRESULT IAccessor_AddRefAccessor(IAccessor* This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount) {
    return This->lpVtbl->AddRefAccessor(This,hAccessor,pcRefCount);
}
static __WIDL_INLINE HRESULT IAccessor_CreateAccessor(IAccessor* This,DBACCESSORFLAGS dwAccessorFlags,DBCOUNTITEM cBindings,const DBBINDING rgBindings[],DBLENGTH cbRowSize,HACCESSOR *phAccessor,DBBINDSTATUS rgStatus[]) {
    return This->lpVtbl->CreateAccessor(This,dwAccessorFlags,cBindings,rgBindings,cbRowSize,phAccessor,rgStatus);
}
static __WIDL_INLINE HRESULT IAccessor_GetBindings(IAccessor* This,HACCESSOR hAccessor,DBACCESSORFLAGS *pdwAccessorFlags,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings) {
    return This->lpVtbl->GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings);
}
static __WIDL_INLINE HRESULT IAccessor_ReleaseAccessor(IAccessor* This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount) {
    return This->lpVtbl->ReleaseAccessor(This,hAccessor,pcRefCount);
}
#endif
#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)
MIDL_INTERFACE("0c733a7c-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowset, 0x0c733a7c, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowset_QueryInterface(IRowset* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowset_AddRef(IRowset* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowset_Release(IRowset* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowset methods ***/
static __WIDL_INLINE HRESULT IRowset_AddRefRows(IRowset* This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) {
    return This->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus);
}
static __WIDL_INLINE HRESULT IRowset_GetData(IRowset* This,HROW hRow,HACCESSOR hAccessor,void *pData) {
    return This->lpVtbl->GetData(This,hRow,hAccessor,pData);
}
static __WIDL_INLINE HRESULT IRowset_GetNextRows(IRowset* This,HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowObtained,HROW **prghRows) {
    return This->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowObtained,prghRows);
}
static __WIDL_INLINE HRESULT IRowset_ReleaseRows(IRowset* This,DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) {
    return This->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus);
}
static __WIDL_INLINE HRESULT IRowset_RestartPosition(IRowset* This,HCHAPTER hReserved) {
    return This->lpVtbl->RestartPosition(This,hReserved);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("0c733a55-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowsetInfo, 0x0c733a55, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowsetInfo_QueryInterface(IRowsetInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowsetInfo_AddRef(IRowsetInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowsetInfo_Release(IRowsetInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowsetInfo methods ***/
static __WIDL_INLINE HRESULT IRowsetInfo_GetProperties(IRowsetInfo* This,const ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) {
    return This->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets);
}
static __WIDL_INLINE HRESULT IRowsetInfo_GetReferencedRowset(IRowsetInfo* This,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppReferencedRowset) {
    return This->lpVtbl->GetReferencedRowset(This,iOrdinal,riid,ppReferencedRowset);
}
static __WIDL_INLINE HRESULT IRowsetInfo_GetSpecification(IRowsetInfo* This,REFIID riid,IUnknown **ppSpecification) {
    return This->lpVtbl->GetSpecification(This,riid,ppSpecification);
}
#endif
#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)
MIDL_INTERFACE("0c733a7d-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowsetLocate, 0x0c733a7d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowsetLocate_QueryInterface(IRowsetLocate* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowsetLocate_AddRef(IRowsetLocate* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowsetLocate_Release(IRowsetLocate* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowset methods ***/
static __WIDL_INLINE HRESULT IRowsetLocate_AddRefRows(IRowsetLocate* This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) {
    return This->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus);
}
static __WIDL_INLINE HRESULT IRowsetLocate_GetData(IRowsetLocate* This,HROW hRow,HACCESSOR hAccessor,void *pData) {
    return This->lpVtbl->GetData(This,hRow,hAccessor,pData);
}
static __WIDL_INLINE HRESULT IRowsetLocate_GetNextRows(IRowsetLocate* This,HCHAPTER hReserved,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowObtained,HROW **prghRows) {
    return This->lpVtbl->GetNextRows(This,hReserved,lRowsOffset,cRows,pcRowObtained,prghRows);
}
static __WIDL_INLINE HRESULT IRowsetLocate_ReleaseRows(IRowsetLocate* This,DBCOUNTITEM cRows,const HROW rghRows[],DBROWOPTIONS rgRowOptions[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) {
    return This->lpVtbl->ReleaseRows(This,cRows,rghRows,rgRowOptions,rgRefCounts,rgRowStatus);
}
static __WIDL_INLINE HRESULT IRowsetLocate_RestartPosition(IRowsetLocate* This,HCHAPTER hReserved) {
    return This->lpVtbl->RestartPosition(This,hReserved);
}
/*** IRowsetLocate methods ***/
static __WIDL_INLINE HRESULT IRowsetLocate_Compare(IRowsetLocate* This,HCHAPTER hReserved,DBBKMARK cbBookmark1,const BYTE *pBookmark1,DBBKMARK cbBookmark2,const BYTE *pBookmark2,DBCOMPARE *pComparison) {
    return This->lpVtbl->Compare(This,hReserved,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pComparison);
}
static __WIDL_INLINE HRESULT IRowsetLocate_GetRowsAt(IRowsetLocate* This,HWATCHREGION hReserved1,HCHAPTER hReserved2,DBBKMARK cbBookmark,const BYTE *pBookmark,DBROWOFFSET lRowsOffset,DBROWCOUNT cRows,DBCOUNTITEM *pcRowsObtained,HROW **prghRows) {
    return This->lpVtbl->GetRowsAt(This,hReserved1,hReserved2,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows);
}
static __WIDL_INLINE HRESULT IRowsetLocate_GetRowsByBookmark(IRowsetLocate* This,HCHAPTER hReserved,DBCOUNTITEM cRows,const DBBKMARK rgcbBookmarks[],const BYTE * rgpBookmarks[],HROW rghRows[],DBROWSTATUS rgRowStatus[]) {
    return This->lpVtbl->GetRowsByBookmark(This,hReserved,cRows,rgcbBookmarks,rgpBookmarks,rghRows,rgRowStatus);
}
static __WIDL_INLINE HRESULT IRowsetLocate_Hash(IRowsetLocate* This,HCHAPTER hReserved,DBBKMARK cBookmarks,const DBBKMARK rgcbBookmarks[],const BYTE * rgpBookmarks[],DBHASHVALUE rgHashedValues[],DBROWSTATUS rgBookmarkStatus[]) {
    return This->lpVtbl->Hash(This,hReserved,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,rgBookmarkStatus);
}
#endif
#endif

#endif


#endif  /* __IRowsetLocate_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IChapteredRowset interface
 */
#ifndef __IChapteredRowset_INTERFACE_DEFINED__
#define __IChapteredRowset_INTERFACE_DEFINED__

DEFINE_GUID(IID_IChapteredRowset, 0x0c733a93, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a93-2a1c-11ce-ade5-00aa0044773d")
IChapteredRowset : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddRefChapter(
        HCHAPTER chapter,
        DBREFCOUNT *refcount) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReleaseChapter(
        HCHAPTER chapter,
        DBREFCOUNT *refcount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IChapteredRowset, 0x0c733a93, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IChapteredRowsetVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IChapteredRowset methods ***/
    HRESULT (STDMETHODCALLTYPE *AddRefChapter)(
        IChapteredRowset *This,
        HCHAPTER chapter,
        DBREFCOUNT *refcount);

    HRESULT (STDMETHODCALLTYPE *ReleaseChapter)(
        IChapteredRowset *This,
        HCHAPTER chapter,
        DBREFCOUNT *refcount);

    END_INTERFACE
} IChapteredRowsetVtbl;

interface IChapteredRowset {
    CONST_VTBL IChapteredRowsetVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IChapteredRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IChapteredRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IChapteredRowset_Release(This) (This)->lpVtbl->Release(This)
/*** IChapteredRowset methods ***/
#define IChapteredRowset_AddRefChapter(This,chapter,refcount) (This)->lpVtbl->AddRefChapter(This,chapter,refcount)
#define IChapteredRowset_ReleaseChapter(This,chapter,refcount) (This)->lpVtbl->ReleaseChapter(This,chapter,refcount)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IChapteredRowset_QueryInterface(IChapteredRowset* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IChapteredRowset_AddRef(IChapteredRowset* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IChapteredRowset_Release(IChapteredRowset* This) {
    return This->lpVtbl->Release(This);
}
/*** IChapteredRowset methods ***/
static __WIDL_INLINE HRESULT IChapteredRowset_AddRefChapter(IChapteredRowset* This,HCHAPTER chapter,DBREFCOUNT *refcount) {
    return This->lpVtbl->AddRefChapter(This,chapter,refcount);
}
static __WIDL_INLINE HRESULT IChapteredRowset_ReleaseChapter(IChapteredRowset* This,HCHAPTER chapter,DBREFCOUNT *refcount) {
    return This->lpVtbl->ReleaseChapter(This,chapter,refcount);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IChapteredRowset_RemoteAddRefChapter_Proxy(
    IChapteredRowset* This,
    HCHAPTER chapter,
    DBREFCOUNT *refcount,
    IErrorInfo **errorinfo);
void __RPC_STUB IChapteredRowset_RemoteAddRefChapter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IChapteredRowset_RemoteReleaseChapter_Proxy(
    IChapteredRowset* This,
    HCHAPTER chapter,
    DBREFCOUNT *refcount,
    IErrorInfo **errorinfo);
void __RPC_STUB IChapteredRowset_RemoteReleaseChapter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IChapteredRowset_AddRefChapter_Proxy(
    IChapteredRowset* This,
    HCHAPTER chapter,
    DBREFCOUNT *refcount);
HRESULT __RPC_STUB IChapteredRowset_AddRefChapter_Stub(
    IChapteredRowset* This,
    HCHAPTER chapter,
    DBREFCOUNT *refcount,
    IErrorInfo **errorinfo);
HRESULT CALLBACK IChapteredRowset_ReleaseChapter_Proxy(
    IChapteredRowset* This,
    HCHAPTER chapter,
    DBREFCOUNT *refcount);
HRESULT __RPC_STUB IChapteredRowset_ReleaseChapter_Stub(
    IChapteredRowset* This,
    HCHAPTER chapter,
    DBREFCOUNT *refcount,
    IErrorInfo **errorinfo);

#endif  /* __IChapteredRowset_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)
MIDL_INTERFACE("0c733a63-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommand, 0x0c733a63, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ICommand_QueryInterface(ICommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ICommand_AddRef(ICommand* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ICommand_Release(ICommand* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommand methods ***/
static __WIDL_INLINE HRESULT ICommand_Cancel(ICommand* This) {
    return This->lpVtbl->Cancel(This);
}
static __WIDL_INLINE HRESULT ICommand_Execute(ICommand* This,IUnknown *pUnkOuter,REFIID riid,DBPARAMS *pParams,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset) {
    return This->lpVtbl->Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset);
}
static __WIDL_INLINE HRESULT ICommand_GetDBSession(ICommand* This,REFIID riid,IUnknown **ppSession) {
    return This->lpVtbl->GetDBSession(This,riid,ppSession);
}
#endif
#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)
MIDL_INTERFACE("0c733a27-2a1c-11ce-ade5-00aa0044773d")
ICommandText : public ICommand
{
    virtual HRESULT STDMETHODCALLTYPE GetCommandText(
        GUID *pguidDialect,
        LPOLESTR *ppwszCommand) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommandText, 0x0c733a27, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ICommandText_QueryInterface(ICommandText* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ICommandText_AddRef(ICommandText* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ICommandText_Release(ICommandText* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommand methods ***/
static __WIDL_INLINE HRESULT ICommandText_Cancel(ICommandText* This) {
    return This->lpVtbl->Cancel(This);
}
static __WIDL_INLINE HRESULT ICommandText_Execute(ICommandText* This,IUnknown *pUnkOuter,REFIID riid,DBPARAMS *pParams,DBROWCOUNT *pcRowsAffected,IUnknown **ppRowset) {
    return This->lpVtbl->Execute(This,pUnkOuter,riid,pParams,pcRowsAffected,ppRowset);
}
static __WIDL_INLINE HRESULT ICommandText_GetDBSession(ICommandText* This,REFIID riid,IUnknown **ppSession) {
    return This->lpVtbl->GetDBSession(This,riid,ppSession);
}
/*** ICommandText methods ***/
static __WIDL_INLINE HRESULT ICommandText_GetCommandText(ICommandText* This,GUID *pguidDialect,LPOLESTR *ppwszCommand) {
    return This->lpVtbl->GetCommandText(This,pguidDialect,ppwszCommand);
}
static __WIDL_INLINE HRESULT ICommandText_SetCommandText(ICommandText* This,REFGUID rguidDialect,LPCOLESTR pwszCommand) {
    return This->lpVtbl->SetCommandText(This,rguidDialect,pwszCommand);
}
#endif
#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__ */

/*****************************************************************************
 * IColumnsInfo interface
 */
#ifndef __IColumnsInfo_INTERFACE_DEFINED__
#define __IColumnsInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IColumnsInfo, 0x0c733a11, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a11-2a1c-11ce-ade5-00aa0044773d")
IColumnsInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetColumnInfo(
        DBORDINAL *columns,
        DBCOLUMNINFO **colinfo,
        OLECHAR **stringsbuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE MapColumnIDs(
        DBORDINAL column_ids,
        const DBID *dbids,
        DBORDINAL *columns) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IColumnsInfo, 0x0c733a11, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IColumnsInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IColumnsInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetColumnInfo)(
        IColumnsInfo *This,
        DBORDINAL *columns,
        DBCOLUMNINFO **colinfo,
        OLECHAR **stringsbuffer);

    HRESULT (STDMETHODCALLTYPE *MapColumnIDs)(
        IColumnsInfo *This,
        DBORDINAL column_ids,
        const DBID *dbids,
        DBORDINAL *columns);

    END_INTERFACE
} IColumnsInfoVtbl;

interface IColumnsInfo {
    CONST_VTBL IColumnsInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IColumnsInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IColumnsInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IColumnsInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IColumnsInfo methods ***/
#define IColumnsInfo_GetColumnInfo(This,columns,colinfo,stringsbuffer) (This)->lpVtbl->GetColumnInfo(This,columns,colinfo,stringsbuffer)
#define IColumnsInfo_MapColumnIDs(This,column_ids,dbids,columns) (This)->lpVtbl->MapColumnIDs(This,column_ids,dbids,columns)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IColumnsInfo_QueryInterface(IColumnsInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IColumnsInfo_AddRef(IColumnsInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IColumnsInfo_Release(IColumnsInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IColumnsInfo methods ***/
static __WIDL_INLINE HRESULT IColumnsInfo_GetColumnInfo(IColumnsInfo* This,DBORDINAL *columns,DBCOLUMNINFO **colinfo,OLECHAR **stringsbuffer) {
    return This->lpVtbl->GetColumnInfo(This,columns,colinfo,stringsbuffer);
}
static __WIDL_INLINE HRESULT IColumnsInfo_MapColumnIDs(IColumnsInfo* This,DBORDINAL column_ids,const DBID *dbids,DBORDINAL *columns) {
    return This->lpVtbl->MapColumnIDs(This,column_ids,dbids,columns);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IColumnsInfo_RemoteGetColumnInfo_Proxy(
    IColumnsInfo* This,
    DBORDINAL *columns,
    DBCOLUMNINFO **colinfo,
    DBBYTEOFFSET **name_offsets,
    DBBYTEOFFSET **columnid_offsets,
    DBLENGTH *string_len,
    OLECHAR **stringsbuffer,
    IErrorInfo **errorinfo);
void __RPC_STUB IColumnsInfo_RemoteGetColumnInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IColumnsInfo_RemoteMapColumnIDs_Proxy(
    IColumnsInfo* This,
    DBORDINAL column_ids,
    const DBID *dbids,
    DBORDINAL *columns,
    IErrorInfo **errorinfo);
void __RPC_STUB IColumnsInfo_RemoteMapColumnIDs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IColumnsInfo_GetColumnInfo_Proxy(
    IColumnsInfo* This,
    DBORDINAL *columns,
    DBCOLUMNINFO **colinfo,
    OLECHAR **stringsbuffer);
HRESULT __RPC_STUB IColumnsInfo_GetColumnInfo_Stub(
    IColumnsInfo* This,
    DBORDINAL *columns,
    DBCOLUMNINFO **colinfo,
    DBBYTEOFFSET **name_offsets,
    DBBYTEOFFSET **columnid_offsets,
    DBLENGTH *string_len,
    OLECHAR **stringsbuffer,
    IErrorInfo **errorinfo);
HRESULT CALLBACK IColumnsInfo_MapColumnIDs_Proxy(
    IColumnsInfo* This,
    DBORDINAL column_ids,
    const DBID *dbids,
    DBORDINAL *columns);
HRESULT __RPC_STUB IColumnsInfo_MapColumnIDs_Stub(
    IColumnsInfo* This,
    DBORDINAL column_ids,
    const DBID *dbids,
    DBORDINAL *columns,
    IErrorInfo **errorinfo);

#endif  /* __IColumnsInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IColumnsRowset interface
 */
#ifndef __IColumnsRowset_INTERFACE_DEFINED__
#define __IColumnsRowset_INTERFACE_DEFINED__

DEFINE_GUID(IID_IColumnsRowset, 0x0c733a10, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a10-2a1c-11ce-ade5-00aa0044773d")
IColumnsRowset : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetAvailableColumns(
        DBORDINAL *count,
        DBID **columns) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnsRowset(
        IUnknown *outer,
        DBORDINAL count,
        const DBID columns[],
        REFIID riid,
        ULONG property_cnt,
        DBPROPSET property_sets[],
        IUnknown **rowset) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IColumnsRowset, 0x0c733a10, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IColumnsRowsetVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IColumnsRowset methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAvailableColumns)(
        IColumnsRowset *This,
        DBORDINAL *count,
        DBID **columns);

    HRESULT (STDMETHODCALLTYPE *GetColumnsRowset)(
        IColumnsRowset *This,
        IUnknown *outer,
        DBORDINAL count,
        const DBID columns[],
        REFIID riid,
        ULONG property_cnt,
        DBPROPSET property_sets[],
        IUnknown **rowset);

    END_INTERFACE
} IColumnsRowsetVtbl;

interface IColumnsRowset {
    CONST_VTBL IColumnsRowsetVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IColumnsRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IColumnsRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IColumnsRowset_Release(This) (This)->lpVtbl->Release(This)
/*** IColumnsRowset methods ***/
#define IColumnsRowset_GetAvailableColumns(This,count,columns) (This)->lpVtbl->GetAvailableColumns(This,count,columns)
#define IColumnsRowset_GetColumnsRowset(This,outer,count,columns,riid,property_cnt,property_sets,rowset) (This)->lpVtbl->GetColumnsRowset(This,outer,count,columns,riid,property_cnt,property_sets,rowset)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IColumnsRowset_QueryInterface(IColumnsRowset* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IColumnsRowset_AddRef(IColumnsRowset* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IColumnsRowset_Release(IColumnsRowset* This) {
    return This->lpVtbl->Release(This);
}
/*** IColumnsRowset methods ***/
static __WIDL_INLINE HRESULT IColumnsRowset_GetAvailableColumns(IColumnsRowset* This,DBORDINAL *count,DBID **columns) {
    return This->lpVtbl->GetAvailableColumns(This,count,columns);
}
static __WIDL_INLINE HRESULT IColumnsRowset_GetColumnsRowset(IColumnsRowset* This,IUnknown *outer,DBORDINAL count,const DBID columns[],REFIID riid,ULONG property_cnt,DBPROPSET property_sets[],IUnknown **rowset) {
    return This->lpVtbl->GetColumnsRowset(This,outer,count,columns,riid,property_cnt,property_sets,rowset);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IColumnsRowset_RemoteGetAvailableColumns_Proxy(
    IColumnsRowset* This,
    DBORDINAL *count,
    DBID **columns,
    IErrorInfo **error);
void __RPC_STUB IColumnsRowset_RemoteGetAvailableColumns_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IColumnsRowset_RemoteGetColumnsRowset_Proxy(
    IColumnsRowset* This,
    IUnknown *outer,
    DBORDINAL count,
    const DBID *columns,
    REFIID riid,
    ULONG property_cnt,
    DBPROPSET *roperty_sets,
    IUnknown **rowset,
    ULONG props_cnt,
    DBPROPSTATUS *prop_status,
    IErrorInfo **error);
void __RPC_STUB IColumnsRowset_RemoteGetColumnsRowset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IColumnsRowset_GetAvailableColumns_Proxy(
    IColumnsRowset* This,
    DBORDINAL *count,
    DBID **columns);
HRESULT __RPC_STUB IColumnsRowset_GetAvailableColumns_Stub(
    IColumnsRowset* This,
    DBORDINAL *count,
    DBID **columns,
    IErrorInfo **error);
HRESULT CALLBACK IColumnsRowset_GetColumnsRowset_Proxy(
    IColumnsRowset* This,
    IUnknown *outer,
    DBORDINAL count,
    const DBID columns[],
    REFIID riid,
    ULONG property_cnt,
    DBPROPSET property_sets[],
    IUnknown **rowset);
HRESULT __RPC_STUB IColumnsRowset_GetColumnsRowset_Stub(
    IColumnsRowset* This,
    IUnknown *outer,
    DBORDINAL count,
    const DBID *columns,
    REFIID riid,
    ULONG property_cnt,
    DBPROPSET *roperty_sets,
    IUnknown **rowset,
    ULONG props_cnt,
    DBPROPSTATUS *prop_status,
    IErrorInfo **error);

#endif  /* __IColumnsRowset_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)
MIDL_INTERFACE("0c733a1d-2a1c-11ce-ade5-00aa0044773d")
IDBCreateCommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateCommand(
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppCommand) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDBCreateCommand, 0x0c733a1d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IDBCreateCommand_QueryInterface(IDBCreateCommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IDBCreateCommand_AddRef(IDBCreateCommand* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IDBCreateCommand_Release(IDBCreateCommand* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBCreateCommand methods ***/
static __WIDL_INLINE HRESULT IDBCreateCommand_CreateCommand(IDBCreateCommand* This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppCommand) {
    return This->lpVtbl->CreateCommand(This,pUnkOuter,riid,ppCommand);
}
#endif
#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)
MIDL_INTERFACE("0c733a5d-2a1c-11ce-ade5-00aa0044773d")
IDBCreateSession : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateSession(
        IUnknown *pUnkOuter,
        REFIID riid,
        IUnknown **ppDBSession) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDBCreateSession, 0x0c733a5d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IDBCreateSession_QueryInterface(IDBCreateSession* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IDBCreateSession_AddRef(IDBCreateSession* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IDBCreateSession_Release(IDBCreateSession* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBCreateSession methods ***/
static __WIDL_INLINE HRESULT IDBCreateSession_CreateSession(IDBCreateSession* This,IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession) {
    return This->lpVtbl->CreateSession(This,pUnkOuter,riid,ppDBSession);
}
#endif
#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__ */

/*****************************************************************************
 * ISourcesRowset interface
 */
#ifndef __ISourcesRowset_INTERFACE_DEFINED__
#define __ISourcesRowset_INTERFACE_DEFINED__

typedef DWORD DBSOURCETYPE;
enum DBSOURCETYPEENUM {
    DBSOURCETYPE_DATASOURCE = 1,
    DBSOURCETYPE_ENUMERATOR = 2
};
enum DBSOURCETYPEENUM20 {
    DBSOURCETYPE_DATASOURCE_TDP = 1,
    DBSOURCETYPE_DATASOURCE_MDP = 3
};
enum DBSOURCETYPEENUM25 {
    DBSOURCETYPE_BINDER = 4
};
DEFINE_GUID(IID_ISourcesRowset, 0x0c733a1e, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a1e-2a1c-11ce-ade5-00aa0044773d")
ISourcesRowset : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSourcesRowset(
        IUnknown *pUnkOuter,
        REFIID riid,
        ULONG cPropertySets,
        DBPROPSET rgProperties[],
        IUnknown **ppSourcesRowset) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISourcesRowset, 0x0c733a1e, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ISourcesRowsetVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ISourcesRowset methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSourcesRowset)(
        ISourcesRowset *This,
        IUnknown *pUnkOuter,
        REFIID riid,
        ULONG cPropertySets,
        DBPROPSET rgProperties[],
        IUnknown **ppSourcesRowset);

    END_INTERFACE
} ISourcesRowsetVtbl;

interface ISourcesRowset {
    CONST_VTBL ISourcesRowsetVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISourcesRowset_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISourcesRowset_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISourcesRowset_Release(This) (This)->lpVtbl->Release(This)
/*** ISourcesRowset methods ***/
#define ISourcesRowset_GetSourcesRowset(This,pUnkOuter,riid,cPropertySets,rgProperties,ppSourcesRowset) (This)->lpVtbl->GetSourcesRowset(This,pUnkOuter,riid,cPropertySets,rgProperties,ppSourcesRowset)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ISourcesRowset_QueryInterface(ISourcesRowset* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ISourcesRowset_AddRef(ISourcesRowset* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ISourcesRowset_Release(ISourcesRowset* This) {
    return This->lpVtbl->Release(This);
}
/*** ISourcesRowset methods ***/
static __WIDL_INLINE HRESULT ISourcesRowset_GetSourcesRowset(ISourcesRowset* This,IUnknown *pUnkOuter,REFIID riid,ULONG cPropertySets,DBPROPSET rgProperties[],IUnknown **ppSourcesRowset) {
    return This->lpVtbl->GetSourcesRowset(This,pUnkOuter,riid,cPropertySets,rgProperties,ppSourcesRowset);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ISourcesRowset_RemoteGetSourcesRowset_Proxy(
    ISourcesRowset* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    ULONG cPropertySets,
    DBPROPSET *rgProperties,
    IUnknown **ppSourcesRowset,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB ISourcesRowset_RemoteGetSourcesRowset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ISourcesRowset_GetSourcesRowset_Proxy(
    ISourcesRowset* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    ULONG cPropertySets,
    DBPROPSET rgProperties[],
    IUnknown **ppSourcesRowset);
HRESULT __RPC_STUB ISourcesRowset_GetSourcesRowset_Stub(
    ISourcesRowset* This,
    IUnknown *pUnkOuter,
    REFIID riid,
    ULONG cPropertySets,
    DBPROPSET *rgProperties,
    IUnknown **ppSourcesRowset,
    ULONG cTotalProps,
    DBPROPSTATUS *rgPropStatus,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __ISourcesRowset_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)
MIDL_INTERFACE("0c733a8a-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDBProperties, 0x0c733a8a, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IDBProperties_QueryInterface(IDBProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IDBProperties_AddRef(IDBProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IDBProperties_Release(IDBProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBProperties methods ***/
static __WIDL_INLINE HRESULT IDBProperties_GetProperties(IDBProperties* This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) {
    return This->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets);
}
static __WIDL_INLINE HRESULT IDBProperties_GetPropertyInfo(IDBProperties* This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer) {
    return This->lpVtbl->GetPropertyInfo(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer);
}
static __WIDL_INLINE HRESULT IDBProperties_SetProperties(IDBProperties* This,ULONG cPropertySets,DBPROPSET rgPropertySets[]) {
    return This->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets);
}
#endif
#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)
MIDL_INTERFACE("0c733a8b-2a1c-11ce-ade5-00aa0044773d")
IDBInitialize : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Uninitialize(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDBInitialize, 0x0c733a8b, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IDBInitialize_QueryInterface(IDBInitialize* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IDBInitialize_AddRef(IDBInitialize* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IDBInitialize_Release(IDBInitialize* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBInitialize methods ***/
static __WIDL_INLINE HRESULT IDBInitialize_Initialize(IDBInitialize* This) {
    return This->lpVtbl->Initialize(This);
}
static __WIDL_INLINE HRESULT IDBInitialize_Uninitialize(IDBInitialize* This) {
    return This->lpVtbl->Uninitialize(This);
}
#endif
#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)
MIDL_INTERFACE("0c733a7a-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDBDataSourceAdmin, 0x0c733a7a, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IDBDataSourceAdmin_QueryInterface(IDBDataSourceAdmin* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IDBDataSourceAdmin_AddRef(IDBDataSourceAdmin* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IDBDataSourceAdmin_Release(IDBDataSourceAdmin* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBDataSourceAdmin methods ***/
static __WIDL_INLINE HRESULT IDBDataSourceAdmin_CreateDataSource(IDBDataSourceAdmin* This,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown *pUnkOuter,REFIID riid,IUnknown **ppDBSession) {
    return This->lpVtbl->CreateDataSource(This,cPropertySets,rgPropertySets,pUnkOuter,riid,ppDBSession);
}
static __WIDL_INLINE HRESULT IDBDataSourceAdmin_DestroyDataSource(IDBDataSourceAdmin* This) {
    return This->lpVtbl->DestroyDataSource(This);
}
static __WIDL_INLINE HRESULT IDBDataSourceAdmin_GetCreationProperties(IDBDataSourceAdmin* This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertyInfoSets,DBPROPINFOSET **prgPropertyInfoSets,OLECHAR **ppDescBuffer) {
    return This->lpVtbl->GetCreationProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertyInfoSets,prgPropertyInfoSets,ppDescBuffer);
}
static __WIDL_INLINE HRESULT IDBDataSourceAdmin_ModifyDataSource(IDBDataSourceAdmin* This,ULONG cPropertySets,DBPROPSET rgPropertySets[]) {
    return This->lpVtbl->ModifyDataSource(This,cPropertySets,rgPropertySets);
}
#endif
#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)
MIDL_INTERFACE("0c733a96-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDBAsynchNotify, 0x0c733a96, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IDBAsynchNotify_QueryInterface(IDBAsynchNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IDBAsynchNotify_AddRef(IDBAsynchNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IDBAsynchNotify_Release(IDBAsynchNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBAsynchNotify methods ***/
static __WIDL_INLINE HRESULT IDBAsynchNotify_OnLowResource(IDBAsynchNotify* This,DB_DWRESERVE dwReserved) {
    return This->lpVtbl->OnLowResource(This,dwReserved);
}
static __WIDL_INLINE HRESULT IDBAsynchNotify_OnProgress(IDBAsynchNotify* This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM ulProgress,DBCOUNTITEM ulProgressMax,DBASYNCHPHASE eAsynchPhase,LPOLESTR pwszStatusText) {
    return This->lpVtbl->OnProgress(This,hChapter,eOperation,ulProgress,ulProgressMax,eAsynchPhase,pwszStatusText);
}
static __WIDL_INLINE HRESULT IDBAsynchNotify_OnStop(IDBAsynchNotify* This,HCHAPTER hChapter,DBASYNCHOP eOperation,HRESULT hrStatus,LPOLESTR pwszStatusText) {
    return This->lpVtbl->OnStop(This,hChapter,eOperation,hrStatus,pwszStatusText);
}
#endif
#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)
MIDL_INTERFACE("0c733a95-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDBAsynchStatus, 0x0c733a95, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IDBAsynchStatus_QueryInterface(IDBAsynchStatus* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IDBAsynchStatus_AddRef(IDBAsynchStatus* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IDBAsynchStatus_Release(IDBAsynchStatus* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBAsynchStatus methods ***/
static __WIDL_INLINE HRESULT IDBAsynchStatus_Abort(IDBAsynchStatus* This,HCHAPTER hChapter,DBASYNCHOP eOperation) {
    return This->lpVtbl->Abort(This,hChapter,eOperation);
}
static __WIDL_INLINE HRESULT IDBAsynchStatus_GetStatus(IDBAsynchStatus* This,HCHAPTER hChapter,DBASYNCHOP eOperation,DBCOUNTITEM *pulProgress,DBCOUNTITEM *pulProgressMax,DBASYNCHPHASE *peAsynchPhase,LPOLESTR *ppwszStatusText) {
    return This->lpVtbl->GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText);
}
#endif
#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)
MIDL_INTERFACE("0c733a85-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISessionProperties, 0x0c733a85, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ISessionProperties_QueryInterface(ISessionProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ISessionProperties_AddRef(ISessionProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ISessionProperties_Release(ISessionProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** ISessionProperties methods ***/
static __WIDL_INLINE HRESULT ISessionProperties_GetProperties(ISessionProperties* This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) {
    return This->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets);
}
static __WIDL_INLINE HRESULT ISessionProperties_SetProperties(ISessionProperties* This,ULONG cPropertySets,DBPROPSET rgPropertySets[]) {
    return This->lpVtbl->SetProperties(This,cPropertySets,rgPropertySets);
}
#endif
#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__ */

/*****************************************************************************
 * IRowsetNotify interface
 */
#ifndef __IRowsetNotify_INTERFACE_DEFINED__
#define __IRowsetNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRowsetNotify, 0x0c733a83, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a83-2a1c-11ce-ade5-00aa0044773d")
IRowsetNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnFieldChange(
        IRowset *rowset,
        HROW row,
        DBORDINAL ccols,
        DBORDINAL *columns,
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cantdeny) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnRowChange(
        IRowset *rowset,
        DBCOUNTITEM rows,
        HROW *hrows,
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cantdeny) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnRowsetChange(
        IRowset *rowset,
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cantdeny) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowsetNotify, 0x0c733a83, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IRowsetNotifyVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowsetNotify methods ***/
    HRESULT (STDMETHODCALLTYPE *OnFieldChange)(
        IRowsetNotify *This,
        IRowset *rowset,
        HROW row,
        DBORDINAL ccols,
        DBORDINAL *columns,
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cantdeny);

    HRESULT (STDMETHODCALLTYPE *OnRowChange)(
        IRowsetNotify *This,
        IRowset *rowset,
        DBCOUNTITEM rows,
        HROW *hrows,
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cantdeny);

    HRESULT (STDMETHODCALLTYPE *OnRowsetChange)(
        IRowsetNotify *This,
        IRowset *rowset,
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cantdeny);

    END_INTERFACE
} IRowsetNotifyVtbl;

interface IRowsetNotify {
    CONST_VTBL IRowsetNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRowsetNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowsetNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowsetNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IRowsetNotify methods ***/
#define IRowsetNotify_OnFieldChange(This,rowset,row,ccols,columns,reason,phase,cantdeny) (This)->lpVtbl->OnFieldChange(This,rowset,row,ccols,columns,reason,phase,cantdeny)
#define IRowsetNotify_OnRowChange(This,rowset,rows,hrows,reason,phase,cantdeny) (This)->lpVtbl->OnRowChange(This,rowset,rows,hrows,reason,phase,cantdeny)
#define IRowsetNotify_OnRowsetChange(This,rowset,reason,phase,cantdeny) (This)->lpVtbl->OnRowsetChange(This,rowset,reason,phase,cantdeny)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowsetNotify_QueryInterface(IRowsetNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowsetNotify_AddRef(IRowsetNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowsetNotify_Release(IRowsetNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowsetNotify methods ***/
static __WIDL_INLINE HRESULT IRowsetNotify_OnFieldChange(IRowsetNotify* This,IRowset *rowset,HROW row,DBORDINAL ccols,DBORDINAL *columns,DBREASON reason,DBEVENTPHASE phase,BOOL cantdeny) {
    return This->lpVtbl->OnFieldChange(This,rowset,row,ccols,columns,reason,phase,cantdeny);
}
static __WIDL_INLINE HRESULT IRowsetNotify_OnRowChange(IRowsetNotify* This,IRowset *rowset,DBCOUNTITEM rows,HROW *hrows,DBREASON reason,DBEVENTPHASE phase,BOOL cantdeny) {
    return This->lpVtbl->OnRowChange(This,rowset,rows,hrows,reason,phase,cantdeny);
}
static __WIDL_INLINE HRESULT IRowsetNotify_OnRowsetChange(IRowsetNotify* This,IRowset *rowset,DBREASON reason,DBEVENTPHASE phase,BOOL cantdeny) {
    return This->lpVtbl->OnRowsetChange(This,rowset,reason,phase,cantdeny);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IRowsetNotify_RemoteOnFieldChange_Proxy(
    IRowsetNotify* This,
    IRowset *rowset,
    HROW row,
    DBORDINAL ccols,
    DBORDINAL *columns,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
void __RPC_STUB IRowsetNotify_RemoteOnFieldChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetNotify_RemoteOnRowChange_Proxy(
    IRowsetNotify* This,
    IRowset *rowset,
    DBCOUNTITEM rows,
    HROW *hrows,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
void __RPC_STUB IRowsetNotify_RemoteOnRowChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowsetNotify_RemoteOnRowsetChange_Proxy(
    IRowsetNotify* This,
    IRowset *rowset,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
void __RPC_STUB IRowsetNotify_RemoteOnRowsetChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IRowsetNotify_OnFieldChange_Proxy(
    IRowsetNotify* This,
    IRowset *rowset,
    HROW row,
    DBORDINAL ccols,
    DBORDINAL *columns,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
HRESULT __RPC_STUB IRowsetNotify_OnFieldChange_Stub(
    IRowsetNotify* This,
    IRowset *rowset,
    HROW row,
    DBORDINAL ccols,
    DBORDINAL *columns,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
HRESULT CALLBACK IRowsetNotify_OnRowChange_Proxy(
    IRowsetNotify* This,
    IRowset *rowset,
    DBCOUNTITEM rows,
    HROW *hrows,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
HRESULT __RPC_STUB IRowsetNotify_OnRowChange_Stub(
    IRowsetNotify* This,
    IRowset *rowset,
    DBCOUNTITEM rows,
    HROW *hrows,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
HRESULT CALLBACK IRowsetNotify_OnRowsetChange_Proxy(
    IRowsetNotify* This,
    IRowset *rowset,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);
HRESULT __RPC_STUB IRowsetNotify_OnRowsetChange_Stub(
    IRowsetNotify* This,
    IRowset *rowset,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cantdeny);

#endif  /* __IRowsetNotify_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)
MIDL_INTERFACE("0c733a69-2a1c-11ce-ade5-00aa0044773d")
IOpenRowset : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OpenRowset(
        IUnknown *pUnkOuter,
        DBID *pTableID,
        DBID *pIndexID,
        REFIID riid,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[],
        IUnknown **ppRowset) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IOpenRowset, 0x0c733a69, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IOpenRowset_QueryInterface(IOpenRowset* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IOpenRowset_AddRef(IOpenRowset* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IOpenRowset_Release(IOpenRowset* This) {
    return This->lpVtbl->Release(This);
}
/*** IOpenRowset methods ***/
static __WIDL_INLINE HRESULT IOpenRowset_OpenRowset(IOpenRowset* This,IUnknown *pUnkOuter,DBID *pTableID,DBID *pIndexID,REFIID riid,ULONG cPropertySets,DBPROPSET rgPropertySets[],IUnknown **ppRowset) {
    return This->lpVtbl->OpenRowset(This,pUnkOuter,pTableID,pIndexID,riid,cPropertySets,rgPropertySets,ppRowset);
}
#endif
#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)
MIDL_INTERFACE("0c733ab4-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRow, 0x0c733ab4, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRow_QueryInterface(IRow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRow_AddRef(IRow* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRow_Release(IRow* This) {
    return This->lpVtbl->Release(This);
}
/*** IRow methods ***/
static __WIDL_INLINE HRESULT IRow_GetColumns(IRow* This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]) {
    return This->lpVtbl->GetColumns(This,cColumns,rgColumns);
}
static __WIDL_INLINE HRESULT IRow_GetSourceRowset(IRow* This,REFIID riid,IUnknown **ppRowset,HROW *phRow) {
    return This->lpVtbl->GetSourceRowset(This,riid,ppRowset,phRow);
}
static __WIDL_INLINE HRESULT IRow_Open(IRow* This,IUnknown *pUnkOuter,DBID *pColumnID,REFGUID rguidColumnType,DWORD dwBindFlags,REFIID riid,IUnknown **ppUnk) {
    return This->lpVtbl->Open(This,pUnkOuter,pColumnID,rguidColumnType,dwBindFlags,riid,ppUnk);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("0c733ab5-2a1c-11ce-ade5-00aa0044773d")
IRowChange : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetColumns(
        DBORDINAL cColumns,
        DBCOLUMNACCESS rgColumns[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowChange, 0x0c733ab5, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowChange_QueryInterface(IRowChange* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowChange_AddRef(IRowChange* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowChange_Release(IRowChange* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowChange methods ***/
static __WIDL_INLINE HRESULT IRowChange_SetColumns(IRowChange* This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]) {
    return This->lpVtbl->SetColumns(This,cColumns,rgColumns);
}
#endif
#endif

#endif


#endif  /* __IRowChange_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowPosition interface
 */
#ifndef __IRowPosition_INTERFACE_DEFINED__
#define __IRowPosition_INTERFACE_DEFINED__

typedef DWORD DBPOSITIONFLAGS;
enum DBPOSITIONFLAGSENUM {
    DBPOSITION_OK = 0,
    DBPOSITION_NOROW = 1,
    DBPOSITION_BOF = 2,
    DBPOSITION_EOF = 3
};
DEFINE_GUID(IID_IRowPosition, 0x0c733a94, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a94-2a1c-11ce-ade5-00aa0044773d")
IRowPosition : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ClearRowPosition(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRowPosition(
        HCHAPTER *chapter,
        HROW *row,
        DBPOSITIONFLAGS *position_flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRowset(
        REFIID riid,
        IUnknown **rowset) = 0;

    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IUnknown *rowset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRowPosition(
        HCHAPTER chapter,
        HROW row,
        DBPOSITIONFLAGS flags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowPosition, 0x0c733a94, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IRowPositionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowPosition methods ***/
    HRESULT (STDMETHODCALLTYPE *ClearRowPosition)(
        IRowPosition *This);

    HRESULT (STDMETHODCALLTYPE *GetRowPosition)(
        IRowPosition *This,
        HCHAPTER *chapter,
        HROW *row,
        DBPOSITIONFLAGS *position_flags);

    HRESULT (STDMETHODCALLTYPE *GetRowset)(
        IRowPosition *This,
        REFIID riid,
        IUnknown **rowset);

    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IRowPosition *This,
        IUnknown *rowset);

    HRESULT (STDMETHODCALLTYPE *SetRowPosition)(
        IRowPosition *This,
        HCHAPTER chapter,
        HROW row,
        DBPOSITIONFLAGS flags);

    END_INTERFACE
} IRowPositionVtbl;

interface IRowPosition {
    CONST_VTBL IRowPositionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRowPosition_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowPosition_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowPosition_Release(This) (This)->lpVtbl->Release(This)
/*** IRowPosition methods ***/
#define IRowPosition_ClearRowPosition(This) (This)->lpVtbl->ClearRowPosition(This)
#define IRowPosition_GetRowPosition(This,chapter,row,position_flags) (This)->lpVtbl->GetRowPosition(This,chapter,row,position_flags)
#define IRowPosition_GetRowset(This,riid,rowset) (This)->lpVtbl->GetRowset(This,riid,rowset)
#define IRowPosition_Initialize(This,rowset) (This)->lpVtbl->Initialize(This,rowset)
#define IRowPosition_SetRowPosition(This,chapter,row,flags) (This)->lpVtbl->SetRowPosition(This,chapter,row,flags)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowPosition_QueryInterface(IRowPosition* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowPosition_AddRef(IRowPosition* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowPosition_Release(IRowPosition* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowPosition methods ***/
static __WIDL_INLINE HRESULT IRowPosition_ClearRowPosition(IRowPosition* This) {
    return This->lpVtbl->ClearRowPosition(This);
}
static __WIDL_INLINE HRESULT IRowPosition_GetRowPosition(IRowPosition* This,HCHAPTER *chapter,HROW *row,DBPOSITIONFLAGS *position_flags) {
    return This->lpVtbl->GetRowPosition(This,chapter,row,position_flags);
}
static __WIDL_INLINE HRESULT IRowPosition_GetRowset(IRowPosition* This,REFIID riid,IUnknown **rowset) {
    return This->lpVtbl->GetRowset(This,riid,rowset);
}
static __WIDL_INLINE HRESULT IRowPosition_Initialize(IRowPosition* This,IUnknown *rowset) {
    return This->lpVtbl->Initialize(This,rowset);
}
static __WIDL_INLINE HRESULT IRowPosition_SetRowPosition(IRowPosition* This,HCHAPTER chapter,HROW row,DBPOSITIONFLAGS flags) {
    return This->lpVtbl->SetRowPosition(This,chapter,row,flags);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IRowPosition_RemoteClearRowPosition_Proxy(
    IRowPosition* This,
    IErrorInfo **errorinfo);
void __RPC_STUB IRowPosition_RemoteClearRowPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowPosition_RemoteGetRowPosition_Proxy(
    IRowPosition* This,
    HCHAPTER *chapter,
    HROW *row,
    DBPOSITIONFLAGS *position_flags,
    IErrorInfo **errorinfo);
void __RPC_STUB IRowPosition_RemoteGetRowPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowPosition_RemoteGetRowset_Proxy(
    IRowPosition* This,
    REFIID riid,
    IUnknown **rowset,
    IErrorInfo **errorinfo);
void __RPC_STUB IRowPosition_RemoteGetRowset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowPosition_RemoteInitialize_Proxy(
    IRowPosition* This,
    IUnknown *rowset,
    IErrorInfo **errorinfo);
void __RPC_STUB IRowPosition_RemoteInitialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRowPosition_RemoteSetRowPosition_Proxy(
    IRowPosition* This,
    HCHAPTER chapter,
    HROW row,
    DBPOSITIONFLAGS flags,
    IErrorInfo **errorinfo);
void __RPC_STUB IRowPosition_RemoteSetRowPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IRowPosition_ClearRowPosition_Proxy(
    IRowPosition* This);
HRESULT __RPC_STUB IRowPosition_ClearRowPosition_Stub(
    IRowPosition* This,
    IErrorInfo **errorinfo);
HRESULT CALLBACK IRowPosition_GetRowPosition_Proxy(
    IRowPosition* This,
    HCHAPTER *chapter,
    HROW *row,
    DBPOSITIONFLAGS *position_flags);
HRESULT __RPC_STUB IRowPosition_GetRowPosition_Stub(
    IRowPosition* This,
    HCHAPTER *chapter,
    HROW *row,
    DBPOSITIONFLAGS *position_flags,
    IErrorInfo **errorinfo);
HRESULT CALLBACK IRowPosition_GetRowset_Proxy(
    IRowPosition* This,
    REFIID riid,
    IUnknown **rowset);
HRESULT __RPC_STUB IRowPosition_GetRowset_Stub(
    IRowPosition* This,
    REFIID riid,
    IUnknown **rowset,
    IErrorInfo **errorinfo);
HRESULT CALLBACK IRowPosition_Initialize_Proxy(
    IRowPosition* This,
    IUnknown *rowset);
HRESULT __RPC_STUB IRowPosition_Initialize_Stub(
    IRowPosition* This,
    IUnknown *rowset,
    IErrorInfo **errorinfo);
HRESULT CALLBACK IRowPosition_SetRowPosition_Proxy(
    IRowPosition* This,
    HCHAPTER chapter,
    HROW row,
    DBPOSITIONFLAGS flags);
HRESULT __RPC_STUB IRowPosition_SetRowPosition_Stub(
    IRowPosition* This,
    HCHAPTER chapter,
    HROW row,
    DBPOSITIONFLAGS flags,
    IErrorInfo **errorinfo);

#endif  /* __IRowPosition_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowPositionChange interface
 */
#ifndef __IRowPositionChange_INTERFACE_DEFINED__
#define __IRowPositionChange_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRowPositionChange, 0x0997a571, 0x126e, 0x11d0, 0x9f,0x8a, 0x00,0xa0,0xc9,0xa0,0x63,0x1e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0997a571-126e-11d0-9f8a-00a0c9a0631e")
IRowPositionChange : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnRowPositionChange(
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cant_deny) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowPositionChange, 0x0997a571, 0x126e, 0x11d0, 0x9f,0x8a, 0x00,0xa0,0xc9,0xa0,0x63,0x1e)
#endif
#else
typedef struct IRowPositionChangeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowPositionChange methods ***/
    HRESULT (STDMETHODCALLTYPE *OnRowPositionChange)(
        IRowPositionChange *This,
        DBREASON reason,
        DBEVENTPHASE phase,
        BOOL cant_deny);

    END_INTERFACE
} IRowPositionChangeVtbl;

interface IRowPositionChange {
    CONST_VTBL IRowPositionChangeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRowPositionChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowPositionChange_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowPositionChange_Release(This) (This)->lpVtbl->Release(This)
/*** IRowPositionChange methods ***/
#define IRowPositionChange_OnRowPositionChange(This,reason,phase,cant_deny) (This)->lpVtbl->OnRowPositionChange(This,reason,phase,cant_deny)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowPositionChange_QueryInterface(IRowPositionChange* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowPositionChange_AddRef(IRowPositionChange* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowPositionChange_Release(IRowPositionChange* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowPositionChange methods ***/
static __WIDL_INLINE HRESULT IRowPositionChange_OnRowPositionChange(IRowPositionChange* This,DBREASON reason,DBEVENTPHASE phase,BOOL cant_deny) {
    return This->lpVtbl->OnRowPositionChange(This,reason,phase,cant_deny);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IRowPositionChange_RemoteOnRowPositionChange_Proxy(
    IRowPositionChange* This,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cant_deny,
    IErrorInfo **errorinfo);
void __RPC_STUB IRowPositionChange_RemoteOnRowPositionChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IRowPositionChange_OnRowPositionChange_Proxy(
    IRowPositionChange* This,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cant_deny);
HRESULT __RPC_STUB IRowPositionChange_OnRowPositionChange_Stub(
    IRowPositionChange* This,
    DBREASON reason,
    DBEVENTPHASE phase,
    BOOL cant_deny,
    IErrorInfo **errorinfo);

#endif  /* __IRowPositionChange_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)
MIDL_INTERFACE("0c733ab1-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBindResource, 0x0c733ab1, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IBindResource_QueryInterface(IBindResource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IBindResource_AddRef(IBindResource* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IBindResource_Release(IBindResource* This) {
    return This->lpVtbl->Release(This);
}
/*** IBindResource methods ***/
static __WIDL_INLINE HRESULT IBindResource_Bind(IBindResource* This,IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,IUnknown **ppUnk) {
    return This->lpVtbl->Bind(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppUnk);
}
#endif
#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)
MIDL_INTERFACE("0c733ab2-2a1c-11ce-ade5-00aa0044773d")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICreateRow, 0x0c733ab2, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ICreateRow_QueryInterface(ICreateRow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ICreateRow_AddRef(ICreateRow* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ICreateRow_Release(ICreateRow* This) {
    return This->lpVtbl->Release(This);
}
/*** ICreateRow methods ***/
static __WIDL_INLINE HRESULT ICreateRow_CreateRow(ICreateRow* This,IUnknown *pUnkOuter,LPCOLESTR pwszURL,DBBINDURLFLAG dwBindURLFlags,REFGUID rguid,REFIID riid,IAuthenticate *pAuthenticate,DBIMPLICITSESSION *pImplSession,DBBINDURLSTATUS *pdwBindStatus,LPOLESTR *ppwszNewURL,IUnknown **ppUnk) {
    return This->lpVtbl->CreateRow(This,pUnkOuter,pwszURL,dwBindURLFlags,rguid,riid,pAuthenticate,pImplSession,pdwBindStatus,ppwszNewURL,ppUnk);
}
#endif
#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__ */

/*****************************************************************************
 * IErrorRecords interface
 */
#ifndef __IErrorRecords_INTERFACE_DEFINED__
#define __IErrorRecords_INTERFACE_DEFINED__

#define IDENTIFIER_SDK_MASK   0xF0000000
#define IDENTIFIER_SDK_ERROR  0x10000000
typedef struct tagERRORINFO {
    HRESULT hrError;
    DWORD dwMinor;
    CLSID clsid;
    IID iid;
    DISPID dispid;
} ERRORINFO;
DEFINE_GUID(IID_IErrorRecords, 0x0c733a67, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a67-2a1c-11ce-ade5-00aa0044773d")
IErrorRecords : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddErrorRecord(
        ERRORINFO *pErrorInfo,
        DWORD dwLookupID,
        DISPPARAMS *pdispparams,
        IUnknown *punkCustomError,
        DWORD dwDynamicErrorID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBasicErrorInfo(
        ULONG ulRecordNum,
        ERRORINFO *pErrorInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCustomErrorObject(
        ULONG ulRecordNum,
        REFIID riid,
        IUnknown **ppObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorInfo(
        ULONG ulRecordNum,
        LCID lcid,
        IErrorInfo **ppErrorInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorParameters(
        ULONG ulRecordNum,
        DISPPARAMS *pdispparams) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecordCount(
        ULONG *records) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IErrorRecords, 0x0c733a67, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IErrorRecordsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IErrorRecords methods ***/
    HRESULT (STDMETHODCALLTYPE *AddErrorRecord)(
        IErrorRecords *This,
        ERRORINFO *pErrorInfo,
        DWORD dwLookupID,
        DISPPARAMS *pdispparams,
        IUnknown *punkCustomError,
        DWORD dwDynamicErrorID);

    HRESULT (STDMETHODCALLTYPE *GetBasicErrorInfo)(
        IErrorRecords *This,
        ULONG ulRecordNum,
        ERRORINFO *pErrorInfo);

    HRESULT (STDMETHODCALLTYPE *GetCustomErrorObject)(
        IErrorRecords *This,
        ULONG ulRecordNum,
        REFIID riid,
        IUnknown **ppObject);

    HRESULT (STDMETHODCALLTYPE *GetErrorInfo)(
        IErrorRecords *This,
        ULONG ulRecordNum,
        LCID lcid,
        IErrorInfo **ppErrorInfo);

    HRESULT (STDMETHODCALLTYPE *GetErrorParameters)(
        IErrorRecords *This,
        ULONG ulRecordNum,
        DISPPARAMS *pdispparams);

    HRESULT (STDMETHODCALLTYPE *GetRecordCount)(
        IErrorRecords *This,
        ULONG *records);

    END_INTERFACE
} IErrorRecordsVtbl;

interface IErrorRecords {
    CONST_VTBL IErrorRecordsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IErrorRecords_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IErrorRecords_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IErrorRecords_Release(This) (This)->lpVtbl->Release(This)
/*** IErrorRecords methods ***/
#define IErrorRecords_AddErrorRecord(This,pErrorInfo,dwLookupID,pdispparams,punkCustomError,dwDynamicErrorID) (This)->lpVtbl->AddErrorRecord(This,pErrorInfo,dwLookupID,pdispparams,punkCustomError,dwDynamicErrorID)
#define IErrorRecords_GetBasicErrorInfo(This,ulRecordNum,pErrorInfo) (This)->lpVtbl->GetBasicErrorInfo(This,ulRecordNum,pErrorInfo)
#define IErrorRecords_GetCustomErrorObject(This,ulRecordNum,riid,ppObject) (This)->lpVtbl->GetCustomErrorObject(This,ulRecordNum,riid,ppObject)
#define IErrorRecords_GetErrorInfo(This,ulRecordNum,lcid,ppErrorInfo) (This)->lpVtbl->GetErrorInfo(This,ulRecordNum,lcid,ppErrorInfo)
#define IErrorRecords_GetErrorParameters(This,ulRecordNum,pdispparams) (This)->lpVtbl->GetErrorParameters(This,ulRecordNum,pdispparams)
#define IErrorRecords_GetRecordCount(This,records) (This)->lpVtbl->GetRecordCount(This,records)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IErrorRecords_QueryInterface(IErrorRecords* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IErrorRecords_AddRef(IErrorRecords* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IErrorRecords_Release(IErrorRecords* This) {
    return This->lpVtbl->Release(This);
}
/*** IErrorRecords methods ***/
static __WIDL_INLINE HRESULT IErrorRecords_AddErrorRecord(IErrorRecords* This,ERRORINFO *pErrorInfo,DWORD dwLookupID,DISPPARAMS *pdispparams,IUnknown *punkCustomError,DWORD dwDynamicErrorID) {
    return This->lpVtbl->AddErrorRecord(This,pErrorInfo,dwLookupID,pdispparams,punkCustomError,dwDynamicErrorID);
}
static __WIDL_INLINE HRESULT IErrorRecords_GetBasicErrorInfo(IErrorRecords* This,ULONG ulRecordNum,ERRORINFO *pErrorInfo) {
    return This->lpVtbl->GetBasicErrorInfo(This,ulRecordNum,pErrorInfo);
}
static __WIDL_INLINE HRESULT IErrorRecords_GetCustomErrorObject(IErrorRecords* This,ULONG ulRecordNum,REFIID riid,IUnknown **ppObject) {
    return This->lpVtbl->GetCustomErrorObject(This,ulRecordNum,riid,ppObject);
}
static __WIDL_INLINE HRESULT IErrorRecords_GetErrorInfo(IErrorRecords* This,ULONG ulRecordNum,LCID lcid,IErrorInfo **ppErrorInfo) {
    return This->lpVtbl->GetErrorInfo(This,ulRecordNum,lcid,ppErrorInfo);
}
static __WIDL_INLINE HRESULT IErrorRecords_GetErrorParameters(IErrorRecords* This,ULONG ulRecordNum,DISPPARAMS *pdispparams) {
    return This->lpVtbl->GetErrorParameters(This,ulRecordNum,pdispparams);
}
static __WIDL_INLINE HRESULT IErrorRecords_GetRecordCount(IErrorRecords* This,ULONG *records) {
    return This->lpVtbl->GetRecordCount(This,records);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IErrorRecords_RemoteAddErrorRecord_Proxy(
    IErrorRecords* This,
    ERRORINFO *pErrorInfo,
    DWORD dwLookupID,
    DISPPARAMS *pdispparams,
    IUnknown *punkCustomError,
    DWORD dwDynamicErrorID,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IErrorRecords_RemoteAddErrorRecord_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IErrorRecords_RemoteGetBasicErrorInfo_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    ERRORINFO *pErrorInfo,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IErrorRecords_RemoteGetBasicErrorInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IErrorRecords_RemoteGetCustomErrorObject_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    REFIID riid,
    IUnknown **ppObject,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IErrorRecords_RemoteGetCustomErrorObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IErrorRecords_RemoteGetErrorInfo_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    LCID lcid,
    IErrorInfo **ppErrorInfo,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IErrorRecords_RemoteGetErrorInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IErrorRecords_RemoteGetErrorParameters_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    DISPPARAMS *pdispparams,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IErrorRecords_RemoteGetErrorParameters_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IErrorRecords_RemoteGetRecordCount_Proxy(
    IErrorRecords* This,
    ULONG *pcRecords,
    IErrorInfo **ppErrorInfoRem);
void __RPC_STUB IErrorRecords_RemoteGetRecordCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IErrorRecords_AddErrorRecord_Proxy(
    IErrorRecords* This,
    ERRORINFO *pErrorInfo,
    DWORD dwLookupID,
    DISPPARAMS *pdispparams,
    IUnknown *punkCustomError,
    DWORD dwDynamicErrorID);
HRESULT __RPC_STUB IErrorRecords_AddErrorRecord_Stub(
    IErrorRecords* This,
    ERRORINFO *pErrorInfo,
    DWORD dwLookupID,
    DISPPARAMS *pdispparams,
    IUnknown *punkCustomError,
    DWORD dwDynamicErrorID,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IErrorRecords_GetBasicErrorInfo_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    ERRORINFO *pErrorInfo);
HRESULT __RPC_STUB IErrorRecords_GetBasicErrorInfo_Stub(
    IErrorRecords* This,
    ULONG ulRecordNum,
    ERRORINFO *pErrorInfo,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IErrorRecords_GetCustomErrorObject_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    REFIID riid,
    IUnknown **ppObject);
HRESULT __RPC_STUB IErrorRecords_GetCustomErrorObject_Stub(
    IErrorRecords* This,
    ULONG ulRecordNum,
    REFIID riid,
    IUnknown **ppObject,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IErrorRecords_GetErrorInfo_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    LCID lcid,
    IErrorInfo **ppErrorInfo);
HRESULT __RPC_STUB IErrorRecords_GetErrorInfo_Stub(
    IErrorRecords* This,
    ULONG ulRecordNum,
    LCID lcid,
    IErrorInfo **ppErrorInfo,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IErrorRecords_GetErrorParameters_Proxy(
    IErrorRecords* This,
    ULONG ulRecordNum,
    DISPPARAMS *pdispparams);
HRESULT __RPC_STUB IErrorRecords_GetErrorParameters_Stub(
    IErrorRecords* This,
    ULONG ulRecordNum,
    DISPPARAMS *pdispparams,
    IErrorInfo **ppErrorInfoRem);
HRESULT CALLBACK IErrorRecords_GetRecordCount_Proxy(
    IErrorRecords* This,
    ULONG *records);
HRESULT __RPC_STUB IErrorRecords_GetRecordCount_Stub(
    IErrorRecords* This,
    ULONG *pcRecords,
    IErrorInfo **ppErrorInfoRem);

#endif  /* __IErrorRecords_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IGetDataSource interface
 */
#ifndef __IGetDataSource_INTERFACE_DEFINED__
#define __IGetDataSource_INTERFACE_DEFINED__

DEFINE_GUID(IID_IGetDataSource, 0x0c733a75, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a75-2a1c-11ce-ade5-00aa0044773d")
IGetDataSource : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDataSource(
        REFIID riid,
        IUnknown **datasource) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IGetDataSource, 0x0c733a75, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IGetDataSourceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IGetDataSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDataSource)(
        IGetDataSource *This,
        REFIID riid,
        IUnknown **datasource);

    END_INTERFACE
} IGetDataSourceVtbl;

interface IGetDataSource {
    CONST_VTBL IGetDataSourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IGetDataSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGetDataSource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGetDataSource_Release(This) (This)->lpVtbl->Release(This)
/*** IGetDataSource methods ***/
#define IGetDataSource_GetDataSource(This,riid,datasource) (This)->lpVtbl->GetDataSource(This,riid,datasource)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IGetDataSource_QueryInterface(IGetDataSource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IGetDataSource_AddRef(IGetDataSource* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IGetDataSource_Release(IGetDataSource* This) {
    return This->lpVtbl->Release(This);
}
/*** IGetDataSource methods ***/
static __WIDL_INLINE HRESULT IGetDataSource_GetDataSource(IGetDataSource* This,REFIID riid,IUnknown **datasource) {
    return This->lpVtbl->GetDataSource(This,riid,datasource);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IGetDataSource_RemoteGetDataSource_Proxy(
    IGetDataSource* This,
    REFIID riid,
    IUnknown **datasource,
    IErrorInfo **error);
void __RPC_STUB IGetDataSource_RemoteGetDataSource_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IGetDataSource_GetDataSource_Proxy(
    IGetDataSource* This,
    REFIID riid,
    IUnknown **datasource);
HRESULT __RPC_STUB IGetDataSource_GetDataSource_Stub(
    IGetDataSource* This,
    REFIID riid,
    IUnknown **datasource,
    IErrorInfo **error);

#endif  /* __IGetDataSource_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICommandStream interface
 */
#ifndef __ICommandStream_INTERFACE_DEFINED__
#define __ICommandStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommandStream, 0x0c733abf, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733abf-2a1c-11ce-ade5-00aa0044773d")
ICommandStream : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCommandStream(
        IID *iid,
        GUID *dialect,
        IUnknown **commandstream) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCommandStream(
        REFIID riid,
        REFGUID dialect,
        IUnknown *commandstream) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommandStream, 0x0c733abf, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ICommandStreamVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICommandStream methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCommandStream)(
        ICommandStream *This,
        IID *iid,
        GUID *dialect,
        IUnknown **commandstream);

    HRESULT (STDMETHODCALLTYPE *SetCommandStream)(
        ICommandStream *This,
        REFIID riid,
        REFGUID dialect,
        IUnknown *commandstream);

    END_INTERFACE
} ICommandStreamVtbl;

interface ICommandStream {
    CONST_VTBL ICommandStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICommandStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommandStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommandStream_Release(This) (This)->lpVtbl->Release(This)
/*** ICommandStream methods ***/
#define ICommandStream_GetCommandStream(This,iid,dialect,commandstream) (This)->lpVtbl->GetCommandStream(This,iid,dialect,commandstream)
#define ICommandStream_SetCommandStream(This,riid,dialect,commandstream) (This)->lpVtbl->SetCommandStream(This,riid,dialect,commandstream)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ICommandStream_QueryInterface(ICommandStream* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ICommandStream_AddRef(ICommandStream* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ICommandStream_Release(ICommandStream* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommandStream methods ***/
static __WIDL_INLINE HRESULT ICommandStream_GetCommandStream(ICommandStream* This,IID *iid,GUID *dialect,IUnknown **commandstream) {
    return This->lpVtbl->GetCommandStream(This,iid,dialect,commandstream);
}
static __WIDL_INLINE HRESULT ICommandStream_SetCommandStream(ICommandStream* This,REFIID riid,REFGUID dialect,IUnknown *commandstream) {
    return This->lpVtbl->SetCommandStream(This,riid,dialect,commandstream);
}
#endif
#endif

#endif


#endif  /* __ICommandStream_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICommandProperties interface
 */
#ifndef __ICommandProperties_INTERFACE_DEFINED__
#define __ICommandProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommandProperties, 0x0c733a79, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a79-2a1c-11ce-ade5-00aa0044773d")
ICommandProperties : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProperties(
        ULONG count,
        const DBPROPIDSET propertyidsets[],
        ULONG *sets_cnt,
        DBPROPSET **propertyset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProperties(
        ULONG count,
        DBPROPSET propertyset[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommandProperties, 0x0c733a79, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ICommandPropertiesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICommandProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProperties)(
        ICommandProperties *This,
        ULONG count,
        const DBPROPIDSET propertyidsets[],
        ULONG *sets_cnt,
        DBPROPSET **propertyset);

    HRESULT (STDMETHODCALLTYPE *SetProperties)(
        ICommandProperties *This,
        ULONG count,
        DBPROPSET propertyset[]);

    END_INTERFACE
} ICommandPropertiesVtbl;

interface ICommandProperties {
    CONST_VTBL ICommandPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICommandProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommandProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommandProperties_Release(This) (This)->lpVtbl->Release(This)
/*** ICommandProperties methods ***/
#define ICommandProperties_GetProperties(This,count,propertyidsets,sets_cnt,propertyset) (This)->lpVtbl->GetProperties(This,count,propertyidsets,sets_cnt,propertyset)
#define ICommandProperties_SetProperties(This,count,propertyset) (This)->lpVtbl->SetProperties(This,count,propertyset)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ICommandProperties_QueryInterface(ICommandProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ICommandProperties_AddRef(ICommandProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ICommandProperties_Release(ICommandProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommandProperties methods ***/
static __WIDL_INLINE HRESULT ICommandProperties_GetProperties(ICommandProperties* This,ULONG count,const DBPROPIDSET propertyidsets[],ULONG *sets_cnt,DBPROPSET **propertyset) {
    return This->lpVtbl->GetProperties(This,count,propertyidsets,sets_cnt,propertyset);
}
static __WIDL_INLINE HRESULT ICommandProperties_SetProperties(ICommandProperties* This,ULONG count,DBPROPSET propertyset[]) {
    return This->lpVtbl->SetProperties(This,count,propertyset);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommandProperties_RemoteGetProperties_Proxy(
    ICommandProperties* This,
    ULONG count,
    const DBPROPIDSET *propertyidsets,
    ULONG *sets_cnt,
    DBPROPSET **propertyset,
    IErrorInfo **error);
void __RPC_STUB ICommandProperties_RemoteGetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommandProperties_RemoteSetProperties_Proxy(
    ICommandProperties* This,
    ULONG count,
    DBPROPSET *propertyset,
    ULONG total,
    DBPROPSTATUS *propstatus,
    IErrorInfo **error);
void __RPC_STUB ICommandProperties_RemoteSetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICommandProperties_GetProperties_Proxy(
    ICommandProperties* This,
    ULONG count,
    const DBPROPIDSET propertyidsets[],
    ULONG *sets_cnt,
    DBPROPSET **propertyset);
HRESULT __RPC_STUB ICommandProperties_GetProperties_Stub(
    ICommandProperties* This,
    ULONG count,
    const DBPROPIDSET *propertyidsets,
    ULONG *sets_cnt,
    DBPROPSET **propertyset,
    IErrorInfo **error);
HRESULT CALLBACK ICommandProperties_SetProperties_Proxy(
    ICommandProperties* This,
    ULONG count,
    DBPROPSET propertyset[]);
HRESULT __RPC_STUB ICommandProperties_SetProperties_Stub(
    ICommandProperties* This,
    ULONG count,
    DBPROPSET *propertyset,
    ULONG total,
    DBPROPSTATUS *propstatus,
    IErrorInfo **error);

#endif  /* __ICommandProperties_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IConvertType interface
 */
#ifndef __IConvertType_INTERFACE_DEFINED__
#define __IConvertType_INTERFACE_DEFINED__

typedef DWORD DBCONVERTFLAGS;
enum DBCONVERTFLAGSENUM {
    DBCONVERTFLAGS_COLUMN = 0x0,
    DBCONVERTFLAGS_PARAMETER = 0x1
};
enum DBCONVERTFLAGSENUM20 {
    DBCONVERTFLAGS_ISLONG = 0x2,
    DBCONVERTFLAGS_ISFIXEDLENGTH = 0x4,
    DBCONVERTFLAGS_FROMVARIANT = 0x8
};
DEFINE_GUID(IID_IConvertType, 0x0c733a88, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a88-2a1c-11ce-ade5-00aa0044773d")
IConvertType : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CanConvert(
        DBTYPE from,
        DBTYPE to,
        DBCONVERTFLAGS flags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IConvertType, 0x0c733a88, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IConvertTypeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IConvertType methods ***/
    HRESULT (STDMETHODCALLTYPE *CanConvert)(
        IConvertType *This,
        DBTYPE from,
        DBTYPE to,
        DBCONVERTFLAGS flags);

    END_INTERFACE
} IConvertTypeVtbl;

interface IConvertType {
    CONST_VTBL IConvertTypeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IConvertType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IConvertType_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IConvertType_Release(This) (This)->lpVtbl->Release(This)
/*** IConvertType methods ***/
#define IConvertType_CanConvert(This,from,to,flags) (This)->lpVtbl->CanConvert(This,from,to,flags)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IConvertType_QueryInterface(IConvertType* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IConvertType_AddRef(IConvertType* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IConvertType_Release(IConvertType* This) {
    return This->lpVtbl->Release(This);
}
/*** IConvertType methods ***/
static __WIDL_INLINE HRESULT IConvertType_CanConvert(IConvertType* This,DBTYPE from,DBTYPE to,DBCONVERTFLAGS flags) {
    return This->lpVtbl->CanConvert(This,from,to,flags);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IConvertType_RemoteCanConvert_Proxy(
    IConvertType* This,
    DBTYPE from,
    DBTYPE to,
    DBCONVERTFLAGS flags,
    IErrorInfo **error);
void __RPC_STUB IConvertType_RemoteCanConvert_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IConvertType_CanConvert_Proxy(
    IConvertType* This,
    DBTYPE from,
    DBTYPE to,
    DBCONVERTFLAGS flags);
HRESULT __RPC_STUB IConvertType_CanConvert_Stub(
    IConvertType* This,
    DBTYPE from,
    DBTYPE to,
    DBCONVERTFLAGS flags,
    IErrorInfo **error);

#endif  /* __IConvertType_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICommandPrepare interface
 */
#ifndef __ICommandPrepare_INTERFACE_DEFINED__
#define __ICommandPrepare_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommandPrepare, 0x0c733a26, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a26-2a1c-11ce-ade5-00aa0044773d")
ICommandPrepare : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Prepare(
        ULONG runs) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unprepare(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommandPrepare, 0x0c733a26, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ICommandPrepareVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICommandPrepare methods ***/
    HRESULT (STDMETHODCALLTYPE *Prepare)(
        ICommandPrepare *This,
        ULONG runs);

    HRESULT (STDMETHODCALLTYPE *Unprepare)(
        ICommandPrepare *This);

    END_INTERFACE
} ICommandPrepareVtbl;

interface ICommandPrepare {
    CONST_VTBL ICommandPrepareVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICommandPrepare_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommandPrepare_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommandPrepare_Release(This) (This)->lpVtbl->Release(This)
/*** ICommandPrepare methods ***/
#define ICommandPrepare_Prepare(This,runs) (This)->lpVtbl->Prepare(This,runs)
#define ICommandPrepare_Unprepare(This) (This)->lpVtbl->Unprepare(This)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ICommandPrepare_QueryInterface(ICommandPrepare* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ICommandPrepare_AddRef(ICommandPrepare* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ICommandPrepare_Release(ICommandPrepare* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommandPrepare methods ***/
static __WIDL_INLINE HRESULT ICommandPrepare_Prepare(ICommandPrepare* This,ULONG runs) {
    return This->lpVtbl->Prepare(This,runs);
}
static __WIDL_INLINE HRESULT ICommandPrepare_Unprepare(ICommandPrepare* This) {
    return This->lpVtbl->Unprepare(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommandPrepare_RemotePrepare_Proxy(
    ICommandPrepare* This,
    ULONG runs,
    IErrorInfo **error);
void __RPC_STUB ICommandPrepare_RemotePrepare_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommandPrepare_RemoteUnprepare_Proxy(
    ICommandPrepare* This,
    IErrorInfo **error);
void __RPC_STUB ICommandPrepare_RemoteUnprepare_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICommandPrepare_Prepare_Proxy(
    ICommandPrepare* This,
    ULONG runs);
HRESULT __RPC_STUB ICommandPrepare_Prepare_Stub(
    ICommandPrepare* This,
    ULONG runs,
    IErrorInfo **error);
HRESULT CALLBACK ICommandPrepare_Unprepare_Proxy(
    ICommandPrepare* This);
HRESULT __RPC_STUB ICommandPrepare_Unprepare_Stub(
    ICommandPrepare* This,
    IErrorInfo **error);

#endif  /* __ICommandPrepare_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowsetChange interface
 */
#ifndef __IRowsetChange_INTERFACE_DEFINED__
#define __IRowsetChange_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRowsetChange, 0x0c733a05, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a05-2a1c-11ce-ade5-00aa0044773d")
IRowsetChange : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DeleteRows(
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBROWSTATUS status[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetData(
        HROW row,
        HACCESSOR accessor,
        void *data) = 0;

    virtual HRESULT STDMETHODCALLTYPE InsertRow(
        HCHAPTER reserved,
        HACCESSOR accessor,
        void *data,
        HROW *row) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowsetChange, 0x0c733a05, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IRowsetChangeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowsetChange methods ***/
    HRESULT (STDMETHODCALLTYPE *DeleteRows)(
        IRowsetChange *This,
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBROWSTATUS status[]);

    HRESULT (STDMETHODCALLTYPE *SetData)(
        IRowsetChange *This,
        HROW row,
        HACCESSOR accessor,
        void *data);

    HRESULT (STDMETHODCALLTYPE *InsertRow)(
        IRowsetChange *This,
        HCHAPTER reserved,
        HACCESSOR accessor,
        void *data,
        HROW *row);

    END_INTERFACE
} IRowsetChangeVtbl;

interface IRowsetChange {
    CONST_VTBL IRowsetChangeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRowsetChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowsetChange_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowsetChange_Release(This) (This)->lpVtbl->Release(This)
/*** IRowsetChange methods ***/
#define IRowsetChange_DeleteRows(This,reserved,count,rows,status) (This)->lpVtbl->DeleteRows(This,reserved,count,rows,status)
#define IRowsetChange_SetData(This,row,accessor,data) (This)->lpVtbl->SetData(This,row,accessor,data)
#define IRowsetChange_InsertRow(This,reserved,accessor,data,row) (This)->lpVtbl->InsertRow(This,reserved,accessor,data,row)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowsetChange_QueryInterface(IRowsetChange* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowsetChange_AddRef(IRowsetChange* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowsetChange_Release(IRowsetChange* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowsetChange methods ***/
static __WIDL_INLINE HRESULT IRowsetChange_DeleteRows(IRowsetChange* This,HCHAPTER reserved,DBCOUNTITEM count,const HROW rows[],DBROWSTATUS status[]) {
    return This->lpVtbl->DeleteRows(This,reserved,count,rows,status);
}
static __WIDL_INLINE HRESULT IRowsetChange_SetData(IRowsetChange* This,HROW row,HACCESSOR accessor,void *data) {
    return This->lpVtbl->SetData(This,row,accessor,data);
}
static __WIDL_INLINE HRESULT IRowsetChange_InsertRow(IRowsetChange* This,HCHAPTER reserved,HACCESSOR accessor,void *data,HROW *row) {
    return This->lpVtbl->InsertRow(This,reserved,accessor,data,row);
}
#endif
#endif

#endif


#endif  /* __IRowsetChange_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRowsetUpdate interface
 */
#ifndef __IRowsetUpdate_INTERFACE_DEFINED__
#define __IRowsetUpdate_INTERFACE_DEFINED__

typedef DWORD DBPENDINGSTATUS;
enum DBPENDINGSTATUSENUM {
    DBPENDINGSTATUS_NEW = 0x1,
    DBPENDINGSTATUS_CHANGED = 0x2,
    DBPENDINGSTATUS_DELETED = 0x4,
    DBPENDINGSTATUS_UNCHANGED = 0x8,
    DBPENDINGSTATUS_INVALIDROW = 0x10
};
DEFINE_GUID(IID_IRowsetUpdate, 0x0c733a6d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a6d-2a1c-11ce-ade5-00aa0044773d")
IRowsetUpdate : public IRowsetChange
{
    virtual HRESULT STDMETHODCALLTYPE GetOriginalData(
        HROW row,
        HACCESSOR accessor,
        void *data) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPendingRows(
        HCHAPTER reserved,
        DBPENDINGSTATUS status,
        DBCOUNTITEM *pending_cnt,
        HROW **rending_rows,
        DBPENDINGSTATUS **pending_status) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRowStatus(
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBPENDINGSTATUS status[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE Undo(
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBCOUNTITEM *undone_cnt,
        HROW **undone,
        DBROWSTATUS **status) = 0;

    virtual HRESULT STDMETHODCALLTYPE Update(
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBCOUNTITEM *row_cnt,
        HROW **hrows,
        DBROWSTATUS **status) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRowsetUpdate, 0x0c733a6d, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IRowsetUpdateVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRowsetChange methods ***/
    HRESULT (STDMETHODCALLTYPE *DeleteRows)(
        IRowsetUpdate *This,
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBROWSTATUS status[]);

    HRESULT (STDMETHODCALLTYPE *SetData)(
        IRowsetUpdate *This,
        HROW row,
        HACCESSOR accessor,
        void *data);

    HRESULT (STDMETHODCALLTYPE *InsertRow)(
        IRowsetUpdate *This,
        HCHAPTER reserved,
        HACCESSOR accessor,
        void *data,
        HROW *row);

    /*** IRowsetUpdate methods ***/
    HRESULT (STDMETHODCALLTYPE *GetOriginalData)(
        IRowsetUpdate *This,
        HROW row,
        HACCESSOR accessor,
        void *data);

    HRESULT (STDMETHODCALLTYPE *GetPendingRows)(
        IRowsetUpdate *This,
        HCHAPTER reserved,
        DBPENDINGSTATUS status,
        DBCOUNTITEM *pending_cnt,
        HROW **rending_rows,
        DBPENDINGSTATUS **pending_status);

    HRESULT (STDMETHODCALLTYPE *GetRowStatus)(
        IRowsetUpdate *This,
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBPENDINGSTATUS status[]);

    HRESULT (STDMETHODCALLTYPE *Undo)(
        IRowsetUpdate *This,
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBCOUNTITEM *undone_cnt,
        HROW **undone,
        DBROWSTATUS **status);

    HRESULT (STDMETHODCALLTYPE *Update)(
        IRowsetUpdate *This,
        HCHAPTER reserved,
        DBCOUNTITEM count,
        const HROW rows[],
        DBCOUNTITEM *row_cnt,
        HROW **hrows,
        DBROWSTATUS **status);

    END_INTERFACE
} IRowsetUpdateVtbl;

interface IRowsetUpdate {
    CONST_VTBL IRowsetUpdateVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRowsetUpdate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRowsetUpdate_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRowsetUpdate_Release(This) (This)->lpVtbl->Release(This)
/*** IRowsetChange methods ***/
#define IRowsetUpdate_DeleteRows(This,reserved,count,rows,status) (This)->lpVtbl->DeleteRows(This,reserved,count,rows,status)
#define IRowsetUpdate_SetData(This,row,accessor,data) (This)->lpVtbl->SetData(This,row,accessor,data)
#define IRowsetUpdate_InsertRow(This,reserved,accessor,data,row) (This)->lpVtbl->InsertRow(This,reserved,accessor,data,row)
/*** IRowsetUpdate methods ***/
#define IRowsetUpdate_GetOriginalData(This,row,accessor,data) (This)->lpVtbl->GetOriginalData(This,row,accessor,data)
#define IRowsetUpdate_GetPendingRows(This,reserved,status,pending_cnt,rending_rows,pending_status) (This)->lpVtbl->GetPendingRows(This,reserved,status,pending_cnt,rending_rows,pending_status)
#define IRowsetUpdate_GetRowStatus(This,reserved,count,rows,status) (This)->lpVtbl->GetRowStatus(This,reserved,count,rows,status)
#define IRowsetUpdate_Undo(This,reserved,count,rows,undone_cnt,undone,status) (This)->lpVtbl->Undo(This,reserved,count,rows,undone_cnt,undone,status)
#define IRowsetUpdate_Update(This,reserved,count,rows,row_cnt,hrows,status) (This)->lpVtbl->Update(This,reserved,count,rows,row_cnt,hrows,status)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IRowsetUpdate_QueryInterface(IRowsetUpdate* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IRowsetUpdate_AddRef(IRowsetUpdate* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IRowsetUpdate_Release(IRowsetUpdate* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowsetChange methods ***/
static __WIDL_INLINE HRESULT IRowsetUpdate_DeleteRows(IRowsetUpdate* This,HCHAPTER reserved,DBCOUNTITEM count,const HROW rows[],DBROWSTATUS status[]) {
    return This->lpVtbl->DeleteRows(This,reserved,count,rows,status);
}
static __WIDL_INLINE HRESULT IRowsetUpdate_SetData(IRowsetUpdate* This,HROW row,HACCESSOR accessor,void *data) {
    return This->lpVtbl->SetData(This,row,accessor,data);
}
static __WIDL_INLINE HRESULT IRowsetUpdate_InsertRow(IRowsetUpdate* This,HCHAPTER reserved,HACCESSOR accessor,void *data,HROW *row) {
    return This->lpVtbl->InsertRow(This,reserved,accessor,data,row);
}
/*** IRowsetUpdate methods ***/
static __WIDL_INLINE HRESULT IRowsetUpdate_GetOriginalData(IRowsetUpdate* This,HROW row,HACCESSOR accessor,void *data) {
    return This->lpVtbl->GetOriginalData(This,row,accessor,data);
}
static __WIDL_INLINE HRESULT IRowsetUpdate_GetPendingRows(IRowsetUpdate* This,HCHAPTER reserved,DBPENDINGSTATUS status,DBCOUNTITEM *pending_cnt,HROW **rending_rows,DBPENDINGSTATUS **pending_status) {
    return This->lpVtbl->GetPendingRows(This,reserved,status,pending_cnt,rending_rows,pending_status);
}
static __WIDL_INLINE HRESULT IRowsetUpdate_GetRowStatus(IRowsetUpdate* This,HCHAPTER reserved,DBCOUNTITEM count,const HROW rows[],DBPENDINGSTATUS status[]) {
    return This->lpVtbl->GetRowStatus(This,reserved,count,rows,status);
}
static __WIDL_INLINE HRESULT IRowsetUpdate_Undo(IRowsetUpdate* This,HCHAPTER reserved,DBCOUNTITEM count,const HROW rows[],DBCOUNTITEM *undone_cnt,HROW **undone,DBROWSTATUS **status) {
    return This->lpVtbl->Undo(This,reserved,count,rows,undone_cnt,undone,status);
}
static __WIDL_INLINE HRESULT IRowsetUpdate_Update(IRowsetUpdate* This,HCHAPTER reserved,DBCOUNTITEM count,const HROW rows[],DBCOUNTITEM *row_cnt,HROW **hrows,DBROWSTATUS **status) {
    return This->lpVtbl->Update(This,reserved,count,rows,row_cnt,hrows,status);
}
#endif
#endif

#endif


#endif  /* __IRowsetUpdate_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMultipleResults interface
 */
#ifndef __IMultipleResults_INTERFACE_DEFINED__
#define __IMultipleResults_INTERFACE_DEFINED__

typedef DB_LRESERVE DBRESULTFLAG;
enum DBRESULTFLAGENUM {
    DBRESULTFLAG_DEFAULT = 0,
    DBRESULTFLAG_ROWSET = 1,
    DBRESULTFLAG_ROW = 2
};
DEFINE_GUID(IID_IMultipleResults, 0x0c733a90, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a90-2a1c-11ce-ade5-00aa0044773d")
IMultipleResults : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetResult(
        IUnknown *outer,
        DBRESULTFLAG result,
        REFIID riid,
        DBROWCOUNT *affected,
        IUnknown **rowset) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMultipleResults, 0x0c733a90, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct IMultipleResultsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IMultipleResults methods ***/
    HRESULT (STDMETHODCALLTYPE *GetResult)(
        IMultipleResults *This,
        IUnknown *outer,
        DBRESULTFLAG result,
        REFIID riid,
        DBROWCOUNT *affected,
        IUnknown **rowset);

    END_INTERFACE
} IMultipleResultsVtbl;

interface IMultipleResults {
    CONST_VTBL IMultipleResultsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMultipleResults_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMultipleResults_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMultipleResults_Release(This) (This)->lpVtbl->Release(This)
/*** IMultipleResults methods ***/
#define IMultipleResults_GetResult(This,outer,result,riid,affected,rowset) (This)->lpVtbl->GetResult(This,outer,result,riid,affected,rowset)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IMultipleResults_QueryInterface(IMultipleResults* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IMultipleResults_AddRef(IMultipleResults* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IMultipleResults_Release(IMultipleResults* This) {
    return This->lpVtbl->Release(This);
}
/*** IMultipleResults methods ***/
static __WIDL_INLINE HRESULT IMultipleResults_GetResult(IMultipleResults* This,IUnknown *outer,DBRESULTFLAG result,REFIID riid,DBROWCOUNT *affected,IUnknown **rowset) {
    return This->lpVtbl->GetResult(This,outer,result,riid,affected,rowset);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IMultipleResults_RemoteGetResult_Proxy(
    IMultipleResults* This,
    IUnknown *outer,
    DBRESULTFLAG result,
    REFIID riid,
    DBROWCOUNT *affected,
    IUnknown **rowset,
    IErrorInfo **error);
void __RPC_STUB IMultipleResults_RemoteGetResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IMultipleResults_GetResult_Proxy(
    IMultipleResults* This,
    IUnknown *outer,
    DBRESULTFLAG result,
    REFIID riid,
    DBROWCOUNT *affected,
    IUnknown **rowset);
HRESULT __RPC_STUB IMultipleResults_GetResult_Stub(
    IMultipleResults* This,
    IUnknown *outer,
    DBRESULTFLAG result,
    REFIID riid,
    DBROWCOUNT *affected,
    IUnknown **rowset,
    IErrorInfo **error);

#endif  /* __IMultipleResults_INTERFACE_DEFINED__ */

#include <winerror.h>
#ifndef __ITransaction_FWD_DEFINED__
#define __ITransaction_FWD_DEFINED__
typedef interface ITransaction ITransaction;
#ifdef __cplusplus
interface ITransaction;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionCloner_FWD_DEFINED__
#define __ITransactionCloner_FWD_DEFINED__
typedef interface ITransactionCloner ITransactionCloner;
#ifdef __cplusplus
interface ITransactionCloner;
#endif /* __cplusplus */
#endif

#ifndef __ITransaction2_FWD_DEFINED__
#define __ITransaction2_FWD_DEFINED__
typedef interface ITransaction2 ITransaction2;
#ifdef __cplusplus
interface ITransaction2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionDispenser_FWD_DEFINED__
#define __ITransactionDispenser_FWD_DEFINED__
typedef interface ITransactionDispenser ITransactionDispenser;
#ifdef __cplusplus
interface ITransactionDispenser;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionOptions_FWD_DEFINED__
#define __ITransactionOptions_FWD_DEFINED__
typedef interface ITransactionOptions ITransactionOptions;
#ifdef __cplusplus
interface ITransactionOptions;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionOutcomeEvents_FWD_DEFINED__
#define __ITransactionOutcomeEvents_FWD_DEFINED__
typedef interface ITransactionOutcomeEvents ITransactionOutcomeEvents;
#ifdef __cplusplus
interface ITransactionOutcomeEvents;
#endif /* __cplusplus */
#endif

#ifndef __ITmNodeName_FWD_DEFINED__
#define __ITmNodeName_FWD_DEFINED__
typedef interface ITmNodeName ITmNodeName;
#ifdef __cplusplus
interface ITmNodeName;
#endif /* __cplusplus */
#endif

typedef struct BOID {
    byte rgb[16];
} BOID;
#ifndef MAX_TRAN_DESC_DEFINED
#define MAX_TRAN_DESC_DEFINED
typedef enum TX_MISC_CONSTANTS {
    MAX_TRAN_DESC = 40
} TX_MISC_CONSTANTS;
#endif
typedef BOID XACTUOW;
typedef LONG ISOLEVEL;
typedef enum ISOLATIONLEVEL {
    ISOLATIONLEVEL_UNSPECIFIED = 0xffffffff,
    ISOLATIONLEVEL_CHAOS = 0x10,
    ISOLATIONLEVEL_READUNCOMMITTED = 0x100,
    ISOLATIONLEVEL_BROWSE = 0x100,
    ISOLATIONLEVEL_CURSORSTABILITY = 0x1000,
    ISOLATIONLEVEL_READCOMMITTED = 0x1000,
    ISOLATIONLEVEL_REPEATABLEREAD = 0x10000,
    ISOLATIONLEVEL_SERIALIZABLE = 0x100000,
    ISOLATIONLEVEL_ISOLATED = 0x100000
} ISOLATIONLEVEL;
typedef struct XACTTRANSINFO {
    XACTUOW uow;
    ISOLEVEL isoLevel;
    ULONG isoFlags;
    DWORD grfTCSupported;
    DWORD grfRMSupported;
    DWORD grfTCSupportedRetaining;
    DWORD grfRMSupportedRetaining;
} XACTTRANSINFO;
typedef struct XACTSTATS {
    ULONG cOpen;
    ULONG cCommitting;
    ULONG cCommitted;
    ULONG cAborting;
    ULONG cAborted;
    ULONG cInDoubt;
    ULONG cHeuristicDecision;
    FILETIME timeTransactionsUp;
} XACTSTATS;
typedef enum ISOFLAG {
    ISOFLAG_RETAIN_COMMIT_DC = 1,
    ISOFLAG_RETAIN_COMMIT = 2,
    ISOFLAG_RETAIN_COMMIT_NO = 3,
    ISOFLAG_RETAIN_ABORT_DC = 4,
    ISOFLAG_RETAIN_ABORT = 8,
    ISOFLAG_RETAIN_ABORT_NO = 12,
    ISOFLAG_RETAIN_DONTCARE = ISOFLAG_RETAIN_COMMIT_DC | ISOFLAG_RETAIN_ABORT_DC,
    ISOFLAG_RETAIN_BOTH = ISOFLAG_RETAIN_COMMIT | ISOFLAG_RETAIN_ABORT,
    ISOFLAG_RETAIN_NONE = ISOFLAG_RETAIN_COMMIT_NO | ISOFLAG_RETAIN_ABORT_NO,
    ISOFLAG_OPTIMISTIC = 16,
    ISOFLAG_READONLY = 32
} ISOFLAG;
typedef enum XACTTC {
    XACTTC_NONE = 0,
    XACTTC_SYNC_PHASEONE = 1,
    XACTTC_SYNC_PHASETWO = 2,
    XACTTC_SYNC = 2,
    XACTTC_ASYNC_PHASEONE = 4,
    XACTTC_ASYNC = 4
} XACTTC;
typedef enum XACTRM {
    XACTRM_OPTIMISTICLASTWINS = 1,
    XACTRM_NOREADONLYPREPARES = 2
} XACTRM;
typedef enum XACTCONST {
    XACTCONST_TIMEOUTINFINITE = 0
} XACTCONST;
typedef enum XACTHEURISTIC {
    XACTHEURISTIC_ABORT = 1,
    XACTHEURISTIC_COMMIT = 2,
    XACTHEURISTIC_DAMAGE = 3,
    XACTHEURISTIC_DANGER = 4
} XACTHEURISTIC;
typedef enum XACTSTAT {
    XACTSTAT_NONE = 0,
    XACTSTAT_OPENNORMAL = 0x1,
    XACTSTAT_OPENREFUSED = 0x2,
    XACTSTAT_PREPARING = 0x4,
    XACTSTAT_PREPARED = 0x8,
    XACTSTAT_PREPARERETAINING = 0x10,
    XACTSTAT_PREPARERETAINED = 0x20,
    XACTSTAT_COMMITTING = 0x40,
    XACTSTAT_COMMITRETAINING = 0x80,
    XACTSTAT_ABORTING = 0x100,
    XACTSTAT_ABORTED = 0x200,
    XACTSTAT_COMMITTED = 0x400,
    XACTSTAT_HEURISTIC_ABORT = 0x800,
    XACTSTAT_HEURISTIC_COMMIT = 0x1000,
    XACTSTAT_HEURISTIC_DAMAGE = 0x2000,
    XACTSTAT_HEURISTIC_DANGER = 0x4000,
    XACTSTAT_FORCED_ABORT = 0x8000,
    XACTSTAT_FORCED_COMMIT = 0x10000,
    XACTSTAT_INDOUBT = 0x20000,
    XACTSTAT_CLOSED = 0x40000,
    XACTSTAT_OPEN = 0x3,
    XACTSTAT_NOTPREPARED = 0x7ffc3,
    XACTSTAT_ALL = 0x7ffff
} XACTSTAT;
typedef struct XACTOPT {
    ULONG ulTimeout;
    char szDescription[40];
} XACTOPT;
/*****************************************************************************
 * ITransaction interface
 */
#ifndef __ITransaction_INTERFACE_DEFINED__
#define __ITransaction_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransaction, 0x0fb15084, 0xaf41, 0x11ce, 0xbd,0x2b, 0x20,0x4c,0x4f,0x4f,0x50,0x20);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0fb15084-af41-11ce-bd2b-204c4f4f5020")
ITransaction : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Commit(
        BOOL fRetaining,
        DWORD grfTC,
        DWORD grfRM) = 0;

    virtual HRESULT STDMETHODCALLTYPE Abort(
        BOID *pboidReason,
        BOOL fRetaining,
        BOOL fAsync) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTransactionInfo(
        XACTTRANSINFO *pinfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransaction, 0x0fb15084, 0xaf41, 0x11ce, 0xbd,0x2b, 0x20,0x4c,0x4f,0x4f,0x50,0x20)
#endif
#else
typedef struct ITransactionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransaction methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        ITransaction *This,
        BOOL fRetaining,
        DWORD grfTC,
        DWORD grfRM);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ITransaction *This,
        BOID *pboidReason,
        BOOL fRetaining,
        BOOL fAsync);

    HRESULT (STDMETHODCALLTYPE *GetTransactionInfo)(
        ITransaction *This,
        XACTTRANSINFO *pinfo);

    END_INTERFACE
} ITransactionVtbl;

interface ITransaction {
    CONST_VTBL ITransactionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransaction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransaction_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransaction_Release(This) (This)->lpVtbl->Release(This)
/*** ITransaction methods ***/
#define ITransaction_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
#define ITransaction_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
#define ITransaction_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransaction_QueryInterface(ITransaction* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransaction_AddRef(ITransaction* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransaction_Release(ITransaction* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransaction methods ***/
static __WIDL_INLINE HRESULT ITransaction_Commit(ITransaction* This,BOOL fRetaining,DWORD grfTC,DWORD grfRM) {
    return This->lpVtbl->Commit(This,fRetaining,grfTC,grfRM);
}
static __WIDL_INLINE HRESULT ITransaction_Abort(ITransaction* This,BOID *pboidReason,BOOL fRetaining,BOOL fAsync) {
    return This->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync);
}
static __WIDL_INLINE HRESULT ITransaction_GetTransactionInfo(ITransaction* This,XACTTRANSINFO *pinfo) {
    return This->lpVtbl->GetTransactionInfo(This,pinfo);
}
#endif
#endif

#endif


#endif  /* __ITransaction_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionCloner interface
 */
#ifndef __ITransactionCloner_INTERFACE_DEFINED__
#define __ITransactionCloner_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionCloner, 0x02656950, 0x2152, 0x11d0, 0x94,0x4c, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("02656950-2152-11d0-944c-00a0c905416e")
ITransactionCloner : public ITransaction
{
    virtual HRESULT STDMETHODCALLTYPE CloneWithCommitDisabled(
        ITransaction **ppITransaction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionCloner, 0x02656950, 0x2152, 0x11d0, 0x94,0x4c, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct ITransactionClonerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransaction methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        ITransactionCloner *This,
        BOOL fRetaining,
        DWORD grfTC,
        DWORD grfRM);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ITransactionCloner *This,
        BOID *pboidReason,
        BOOL fRetaining,
        BOOL fAsync);

    HRESULT (STDMETHODCALLTYPE *GetTransactionInfo)(
        ITransactionCloner *This,
        XACTTRANSINFO *pinfo);

    /*** ITransactionCloner methods ***/
    HRESULT (STDMETHODCALLTYPE *CloneWithCommitDisabled)(
        ITransactionCloner *This,
        ITransaction **ppITransaction);

    END_INTERFACE
} ITransactionClonerVtbl;

interface ITransactionCloner {
    CONST_VTBL ITransactionClonerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionCloner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionCloner_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionCloner_Release(This) (This)->lpVtbl->Release(This)
/*** ITransaction methods ***/
#define ITransactionCloner_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
#define ITransactionCloner_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
#define ITransactionCloner_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
/*** ITransactionCloner methods ***/
#define ITransactionCloner_CloneWithCommitDisabled(This,ppITransaction) (This)->lpVtbl->CloneWithCommitDisabled(This,ppITransaction)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransactionCloner_QueryInterface(ITransactionCloner* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransactionCloner_AddRef(ITransactionCloner* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransactionCloner_Release(ITransactionCloner* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransaction methods ***/
static __WIDL_INLINE HRESULT ITransactionCloner_Commit(ITransactionCloner* This,BOOL fRetaining,DWORD grfTC,DWORD grfRM) {
    return This->lpVtbl->Commit(This,fRetaining,grfTC,grfRM);
}
static __WIDL_INLINE HRESULT ITransactionCloner_Abort(ITransactionCloner* This,BOID *pboidReason,BOOL fRetaining,BOOL fAsync) {
    return This->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync);
}
static __WIDL_INLINE HRESULT ITransactionCloner_GetTransactionInfo(ITransactionCloner* This,XACTTRANSINFO *pinfo) {
    return This->lpVtbl->GetTransactionInfo(This,pinfo);
}
/*** ITransactionCloner methods ***/
static __WIDL_INLINE HRESULT ITransactionCloner_CloneWithCommitDisabled(ITransactionCloner* This,ITransaction **ppITransaction) {
    return This->lpVtbl->CloneWithCommitDisabled(This,ppITransaction);
}
#endif
#endif

#endif


#endif  /* __ITransactionCloner_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransaction2 interface
 */
#ifndef __ITransaction2_INTERFACE_DEFINED__
#define __ITransaction2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransaction2, 0x34021548, 0x0065, 0x11d3, 0xba,0xc1, 0x00,0xc0,0x4f,0x79,0x7b,0xe2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("34021548-0065-11d3-bac1-00c04f797be2")
ITransaction2 : public ITransactionCloner
{
    virtual HRESULT STDMETHODCALLTYPE GetTransactionInfo2(
        XACTTRANSINFO *pinfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransaction2, 0x34021548, 0x0065, 0x11d3, 0xba,0xc1, 0x00,0xc0,0x4f,0x79,0x7b,0xe2)
#endif
#else
typedef struct ITransaction2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransaction methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        ITransaction2 *This,
        BOOL fRetaining,
        DWORD grfTC,
        DWORD grfRM);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ITransaction2 *This,
        BOID *pboidReason,
        BOOL fRetaining,
        BOOL fAsync);

    HRESULT (STDMETHODCALLTYPE *GetTransactionInfo)(
        ITransaction2 *This,
        XACTTRANSINFO *pinfo);

    /*** ITransactionCloner methods ***/
    HRESULT (STDMETHODCALLTYPE *CloneWithCommitDisabled)(
        ITransaction2 *This,
        ITransaction **ppITransaction);

    /*** ITransaction2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTransactionInfo2)(
        ITransaction2 *This,
        XACTTRANSINFO *pinfo);

    END_INTERFACE
} ITransaction2Vtbl;

interface ITransaction2 {
    CONST_VTBL ITransaction2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransaction2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransaction2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransaction2_Release(This) (This)->lpVtbl->Release(This)
/*** ITransaction methods ***/
#define ITransaction2_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
#define ITransaction2_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
#define ITransaction2_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
/*** ITransactionCloner methods ***/
#define ITransaction2_CloneWithCommitDisabled(This,ppITransaction) (This)->lpVtbl->CloneWithCommitDisabled(This,ppITransaction)
/*** ITransaction2 methods ***/
#define ITransaction2_GetTransactionInfo2(This,pinfo) (This)->lpVtbl->GetTransactionInfo2(This,pinfo)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransaction2_QueryInterface(ITransaction2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransaction2_AddRef(ITransaction2* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransaction2_Release(ITransaction2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransaction methods ***/
static __WIDL_INLINE HRESULT ITransaction2_Commit(ITransaction2* This,BOOL fRetaining,DWORD grfTC,DWORD grfRM) {
    return This->lpVtbl->Commit(This,fRetaining,grfTC,grfRM);
}
static __WIDL_INLINE HRESULT ITransaction2_Abort(ITransaction2* This,BOID *pboidReason,BOOL fRetaining,BOOL fAsync) {
    return This->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync);
}
static __WIDL_INLINE HRESULT ITransaction2_GetTransactionInfo(ITransaction2* This,XACTTRANSINFO *pinfo) {
    return This->lpVtbl->GetTransactionInfo(This,pinfo);
}
/*** ITransactionCloner methods ***/
static __WIDL_INLINE HRESULT ITransaction2_CloneWithCommitDisabled(ITransaction2* This,ITransaction **ppITransaction) {
    return This->lpVtbl->CloneWithCommitDisabled(This,ppITransaction);
}
/*** ITransaction2 methods ***/
static __WIDL_INLINE HRESULT ITransaction2_GetTransactionInfo2(ITransaction2* This,XACTTRANSINFO *pinfo) {
    return This->lpVtbl->GetTransactionInfo2(This,pinfo);
}
#endif
#endif

#endif


#endif  /* __ITransaction2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionDispenser interface
 */
#ifndef __ITransactionDispenser_INTERFACE_DEFINED__
#define __ITransactionDispenser_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionDispenser, 0x3a6ad9e1, 0x23b9, 0x11cf, 0xad,0x60, 0x00,0xaa,0x00,0xa7,0x4c,0xcd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3a6ad9e1-23b9-11cf-ad60-00aa00a74ccd")
ITransactionDispenser : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetOptionsObject(
        ITransactionOptions **ppOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginTransaction(
        IUnknown *punkOuter,
        ISOLEVEL isoLevel,
        ULONG isoFlags,
        ITransactionOptions *pOptions,
        ITransaction **ppTransaction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionDispenser, 0x3a6ad9e1, 0x23b9, 0x11cf, 0xad,0x60, 0x00,0xaa,0x00,0xa7,0x4c,0xcd)
#endif
#else
typedef struct ITransactionDispenserVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransactionDispenser methods ***/
    HRESULT (STDMETHODCALLTYPE *GetOptionsObject)(
        ITransactionDispenser *This,
        ITransactionOptions **ppOptions);

    HRESULT (STDMETHODCALLTYPE *BeginTransaction)(
        ITransactionDispenser *This,
        IUnknown *punkOuter,
        ISOLEVEL isoLevel,
        ULONG isoFlags,
        ITransactionOptions *pOptions,
        ITransaction **ppTransaction);

    END_INTERFACE
} ITransactionDispenserVtbl;

interface ITransactionDispenser {
    CONST_VTBL ITransactionDispenserVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionDispenser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionDispenser_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionDispenser_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionDispenser methods ***/
#define ITransactionDispenser_GetOptionsObject(This,ppOptions) (This)->lpVtbl->GetOptionsObject(This,ppOptions)
#define ITransactionDispenser_BeginTransaction(This,punkOuter,isoLevel,isoFlags,pOptions,ppTransaction) (This)->lpVtbl->BeginTransaction(This,punkOuter,isoLevel,isoFlags,pOptions,ppTransaction)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransactionDispenser_QueryInterface(ITransactionDispenser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransactionDispenser_AddRef(ITransactionDispenser* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransactionDispenser_Release(ITransactionDispenser* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionDispenser methods ***/
static __WIDL_INLINE HRESULT ITransactionDispenser_GetOptionsObject(ITransactionDispenser* This,ITransactionOptions **ppOptions) {
    return This->lpVtbl->GetOptionsObject(This,ppOptions);
}
static __WIDL_INLINE HRESULT ITransactionDispenser_BeginTransaction(ITransactionDispenser* This,IUnknown *punkOuter,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOptions,ITransaction **ppTransaction) {
    return This->lpVtbl->BeginTransaction(This,punkOuter,isoLevel,isoFlags,pOptions,ppTransaction);
}
#endif
#endif

#endif


#endif  /* __ITransactionDispenser_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionOptions interface
 */
#ifndef __ITransactionOptions_INTERFACE_DEFINED__
#define __ITransactionOptions_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionOptions, 0x3a6ad9e0, 0x23b9, 0x11cf, 0xad,0x60, 0x00,0xaa,0x00,0xa7,0x4c,0xcd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3a6ad9e0-23b9-11cf-ad60-00aa00a74ccd")
ITransactionOptions : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetOptions(
        XACTOPT *pOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOptions(
        XACTOPT *pOptions) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionOptions, 0x3a6ad9e0, 0x23b9, 0x11cf, 0xad,0x60, 0x00,0xaa,0x00,0xa7,0x4c,0xcd)
#endif
#else
typedef struct ITransactionOptionsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransactionOptions methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        ITransactionOptions *This,
        XACTOPT *pOptions);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        ITransactionOptions *This,
        XACTOPT *pOptions);

    END_INTERFACE
} ITransactionOptionsVtbl;

interface ITransactionOptions {
    CONST_VTBL ITransactionOptionsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionOptions_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionOptions methods ***/
#define ITransactionOptions_SetOptions(This,pOptions) (This)->lpVtbl->SetOptions(This,pOptions)
#define ITransactionOptions_GetOptions(This,pOptions) (This)->lpVtbl->GetOptions(This,pOptions)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransactionOptions_QueryInterface(ITransactionOptions* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransactionOptions_AddRef(ITransactionOptions* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransactionOptions_Release(ITransactionOptions* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionOptions methods ***/
static __WIDL_INLINE HRESULT ITransactionOptions_SetOptions(ITransactionOptions* This,XACTOPT *pOptions) {
    return This->lpVtbl->SetOptions(This,pOptions);
}
static __WIDL_INLINE HRESULT ITransactionOptions_GetOptions(ITransactionOptions* This,XACTOPT *pOptions) {
    return This->lpVtbl->GetOptions(This,pOptions);
}
#endif
#endif

#endif


#endif  /* __ITransactionOptions_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionOutcomeEvents interface
 */
#ifndef __ITransactionOutcomeEvents_INTERFACE_DEFINED__
#define __ITransactionOutcomeEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionOutcomeEvents, 0x3a6ad9e2, 0x23b9, 0x11cf, 0xad,0x60, 0x00,0xaa,0x00,0xa7,0x4c,0xcd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3a6ad9e2-23b9-11cf-ad60-00aa00a74ccd")
ITransactionOutcomeEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Committed(
        BOOL fRetaining,
        XACTUOW *pNewUOW,
        HRESULT hr) = 0;

    virtual HRESULT STDMETHODCALLTYPE Aborted(
        BOID *pboidReason,
        BOOL fRetaining,
        XACTUOW *pNewUOW,
        HRESULT hr) = 0;

    virtual HRESULT STDMETHODCALLTYPE HeuristicDecision(
        DWORD dwDecision,
        BOID *pboidReason,
        HRESULT hr) = 0;

    virtual HRESULT STDMETHODCALLTYPE Indoubt(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionOutcomeEvents, 0x3a6ad9e2, 0x23b9, 0x11cf, 0xad,0x60, 0x00,0xaa,0x00,0xa7,0x4c,0xcd)
#endif
#else
typedef struct ITransactionOutcomeEventsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransactionOutcomeEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *Committed)(
        ITransactionOutcomeEvents *This,
        BOOL fRetaining,
        XACTUOW *pNewUOW,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *Aborted)(
        ITransactionOutcomeEvents *This,
        BOID *pboidReason,
        BOOL fRetaining,
        XACTUOW *pNewUOW,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *HeuristicDecision)(
        ITransactionOutcomeEvents *This,
        DWORD dwDecision,
        BOID *pboidReason,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *Indoubt)(
        ITransactionOutcomeEvents *This);

    END_INTERFACE
} ITransactionOutcomeEventsVtbl;

interface ITransactionOutcomeEvents {
    CONST_VTBL ITransactionOutcomeEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionOutcomeEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionOutcomeEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionOutcomeEvents_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionOutcomeEvents methods ***/
#define ITransactionOutcomeEvents_Committed(This,fRetaining,pNewUOW,hr) (This)->lpVtbl->Committed(This,fRetaining,pNewUOW,hr)
#define ITransactionOutcomeEvents_Aborted(This,pboidReason,fRetaining,pNewUOW,hr) (This)->lpVtbl->Aborted(This,pboidReason,fRetaining,pNewUOW,hr)
#define ITransactionOutcomeEvents_HeuristicDecision(This,dwDecision,pboidReason,hr) (This)->lpVtbl->HeuristicDecision(This,dwDecision,pboidReason,hr)
#define ITransactionOutcomeEvents_Indoubt(This) (This)->lpVtbl->Indoubt(This)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransactionOutcomeEvents_QueryInterface(ITransactionOutcomeEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransactionOutcomeEvents_AddRef(ITransactionOutcomeEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransactionOutcomeEvents_Release(ITransactionOutcomeEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionOutcomeEvents methods ***/
static __WIDL_INLINE HRESULT ITransactionOutcomeEvents_Committed(ITransactionOutcomeEvents* This,BOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr) {
    return This->lpVtbl->Committed(This,fRetaining,pNewUOW,hr);
}
static __WIDL_INLINE HRESULT ITransactionOutcomeEvents_Aborted(ITransactionOutcomeEvents* This,BOID *pboidReason,BOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr) {
    return This->lpVtbl->Aborted(This,pboidReason,fRetaining,pNewUOW,hr);
}
static __WIDL_INLINE HRESULT ITransactionOutcomeEvents_HeuristicDecision(ITransactionOutcomeEvents* This,DWORD dwDecision,BOID *pboidReason,HRESULT hr) {
    return This->lpVtbl->HeuristicDecision(This,dwDecision,pboidReason,hr);
}
static __WIDL_INLINE HRESULT ITransactionOutcomeEvents_Indoubt(ITransactionOutcomeEvents* This) {
    return This->lpVtbl->Indoubt(This);
}
#endif
#endif

#endif


#endif  /* __ITransactionOutcomeEvents_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITmNodeName interface
 */
#ifndef __ITmNodeName_INTERFACE_DEFINED__
#define __ITmNodeName_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITmNodeName, 0x30274f88, 0x6ee4, 0x474e, 0x9b,0x95, 0x78,0x07,0xbc,0x9e,0xf8,0xcf);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("30274f88-6ee4-474e-9b95-7807bc9ef8cf")
ITmNodeName : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetNodeNameSize(
        ULONG *pcbNodeNameSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNodeName(
        ULONG cbNodeNameBufferSize,
        LPWSTR pNodeNameBuffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITmNodeName, 0x30274f88, 0x6ee4, 0x474e, 0x9b,0x95, 0x78,0x07,0xbc,0x9e,0xf8,0xcf)
#endif
#else
typedef struct ITmNodeNameVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITmNodeName methods ***/
    HRESULT (STDMETHODCALLTYPE *GetNodeNameSize)(
        ITmNodeName *This,
        ULONG *pcbNodeNameSize);

    HRESULT (STDMETHODCALLTYPE *GetNodeName)(
        ITmNodeName *This,
        ULONG cbNodeNameBufferSize,
        LPWSTR pNodeNameBuffer);

    END_INTERFACE
} ITmNodeNameVtbl;

interface ITmNodeName {
    CONST_VTBL ITmNodeNameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITmNodeName_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITmNodeName_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITmNodeName_Release(This) (This)->lpVtbl->Release(This)
/*** ITmNodeName methods ***/
#define ITmNodeName_GetNodeNameSize(This,pcbNodeNameSize) (This)->lpVtbl->GetNodeNameSize(This,pcbNodeNameSize)
#define ITmNodeName_GetNodeName(This,cbNodeNameBufferSize,pNodeNameBuffer) (This)->lpVtbl->GetNodeName(This,cbNodeNameBufferSize,pNodeNameBuffer)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITmNodeName_QueryInterface(ITmNodeName* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITmNodeName_AddRef(ITmNodeName* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITmNodeName_Release(ITmNodeName* This) {
    return This->lpVtbl->Release(This);
}
/*** ITmNodeName methods ***/
static __WIDL_INLINE HRESULT ITmNodeName_GetNodeNameSize(ITmNodeName* This,ULONG *pcbNodeNameSize) {
    return This->lpVtbl->GetNodeNameSize(This,pcbNodeNameSize);
}
static __WIDL_INLINE HRESULT ITmNodeName_GetNodeName(ITmNodeName* This,ULONG cbNodeNameBufferSize,LPWSTR pNodeNameBuffer) {
    return This->lpVtbl->GetNodeName(This,cbNodeNameBufferSize,pNodeNameBuffer);
}
#endif
#endif

#endif


#endif  /* __ITmNodeName_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionJoin interface
 */
#ifndef __ITransactionJoin_INTERFACE_DEFINED__
#define __ITransactionJoin_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionJoin, 0x0c733a5e, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a5e-2a1c-11ce-ade5-00aa0044773d")
ITransactionJoin : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetOptionsObject(
        ITransactionOptions **options) = 0;

    virtual HRESULT STDMETHODCALLTYPE JoinTransaction(
        IUnknown *unk,
        ISOLEVEL level,
        ULONG flags,
        ITransactionOptions *options) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionJoin, 0x0c733a5e, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ITransactionJoinVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransactionJoin methods ***/
    HRESULT (STDMETHODCALLTYPE *GetOptionsObject)(
        ITransactionJoin *This,
        ITransactionOptions **options);

    HRESULT (STDMETHODCALLTYPE *JoinTransaction)(
        ITransactionJoin *This,
        IUnknown *unk,
        ISOLEVEL level,
        ULONG flags,
        ITransactionOptions *options);

    END_INTERFACE
} ITransactionJoinVtbl;

interface ITransactionJoin {
    CONST_VTBL ITransactionJoinVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionJoin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionJoin_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionJoin_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionJoin methods ***/
#define ITransactionJoin_GetOptionsObject(This,options) (This)->lpVtbl->GetOptionsObject(This,options)
#define ITransactionJoin_JoinTransaction(This,unk,level,flags,options) (This)->lpVtbl->JoinTransaction(This,unk,level,flags,options)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransactionJoin_QueryInterface(ITransactionJoin* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransactionJoin_AddRef(ITransactionJoin* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransactionJoin_Release(ITransactionJoin* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionJoin methods ***/
static __WIDL_INLINE HRESULT ITransactionJoin_GetOptionsObject(ITransactionJoin* This,ITransactionOptions **options) {
    return This->lpVtbl->GetOptionsObject(This,options);
}
static __WIDL_INLINE HRESULT ITransactionJoin_JoinTransaction(ITransactionJoin* This,IUnknown *unk,ISOLEVEL level,ULONG flags,ITransactionOptions *options) {
    return This->lpVtbl->JoinTransaction(This,unk,level,flags,options);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ITransactionJoin_RemoteGetOptionsObject_Proxy(
    ITransactionJoin* This,
    ITransactionOptions **options,
    IErrorInfo **error);
void __RPC_STUB ITransactionJoin_RemoteGetOptionsObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITransactionJoin_RemoteJoinTransaction_Proxy(
    ITransactionJoin* This,
    IUnknown *unk,
    ISOLEVEL level,
    ULONG flags,
    ITransactionOptions *options,
    IErrorInfo **error);
void __RPC_STUB ITransactionJoin_RemoteJoinTransaction_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ITransactionJoin_GetOptionsObject_Proxy(
    ITransactionJoin* This,
    ITransactionOptions **options);
HRESULT __RPC_STUB ITransactionJoin_GetOptionsObject_Stub(
    ITransactionJoin* This,
    ITransactionOptions **options,
    IErrorInfo **error);
HRESULT CALLBACK ITransactionJoin_JoinTransaction_Proxy(
    ITransactionJoin* This,
    IUnknown *unk,
    ISOLEVEL level,
    ULONG flags,
    ITransactionOptions *options);
HRESULT __RPC_STUB ITransactionJoin_JoinTransaction_Stub(
    ITransactionJoin* This,
    IUnknown *unk,
    ISOLEVEL level,
    ULONG flags,
    ITransactionOptions *options,
    IErrorInfo **error);

#endif  /* __ITransactionJoin_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionLocal interface
 */
#ifndef __ITransactionLocal_INTERFACE_DEFINED__
#define __ITransactionLocal_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionLocal, 0x0c733a5f, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a5f-2a1c-11ce-ade5-00aa0044773d")
ITransactionLocal : public ITransaction
{
    virtual HRESULT STDMETHODCALLTYPE GetOptionsObject(
        ITransactionOptions **options) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartTransaction(
        ISOLEVEL level,
        ULONG flags,
        ITransactionOptions *options,
        ULONG *trans_level) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionLocal, 0x0c733a5f, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ITransactionLocalVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransaction methods ***/
    HRESULT (STDMETHODCALLTYPE *Commit)(
        ITransactionLocal *This,
        BOOL fRetaining,
        DWORD grfTC,
        DWORD grfRM);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ITransactionLocal *This,
        BOID *pboidReason,
        BOOL fRetaining,
        BOOL fAsync);

    HRESULT (STDMETHODCALLTYPE *GetTransactionInfo)(
        ITransactionLocal *This,
        XACTTRANSINFO *pinfo);

    /*** ITransactionLocal methods ***/
    HRESULT (STDMETHODCALLTYPE *GetOptionsObject)(
        ITransactionLocal *This,
        ITransactionOptions **options);

    HRESULT (STDMETHODCALLTYPE *StartTransaction)(
        ITransactionLocal *This,
        ISOLEVEL level,
        ULONG flags,
        ITransactionOptions *options,
        ULONG *trans_level);

    END_INTERFACE
} ITransactionLocalVtbl;

interface ITransactionLocal {
    CONST_VTBL ITransactionLocalVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionLocal_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionLocal_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionLocal_Release(This) (This)->lpVtbl->Release(This)
/*** ITransaction methods ***/
#define ITransactionLocal_Commit(This,fRetaining,grfTC,grfRM) (This)->lpVtbl->Commit(This,fRetaining,grfTC,grfRM)
#define ITransactionLocal_Abort(This,pboidReason,fRetaining,fAsync) (This)->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync)
#define ITransactionLocal_GetTransactionInfo(This,pinfo) (This)->lpVtbl->GetTransactionInfo(This,pinfo)
/*** ITransactionLocal methods ***/
#define ITransactionLocal_GetOptionsObject(This,options) (This)->lpVtbl->GetOptionsObject(This,options)
#define ITransactionLocal_StartTransaction(This,level,flags,options,trans_level) (This)->lpVtbl->StartTransaction(This,level,flags,options,trans_level)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransactionLocal_QueryInterface(ITransactionLocal* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransactionLocal_AddRef(ITransactionLocal* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransactionLocal_Release(ITransactionLocal* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransaction methods ***/
static __WIDL_INLINE HRESULT ITransactionLocal_Commit(ITransactionLocal* This,BOOL fRetaining,DWORD grfTC,DWORD grfRM) {
    return This->lpVtbl->Commit(This,fRetaining,grfTC,grfRM);
}
static __WIDL_INLINE HRESULT ITransactionLocal_Abort(ITransactionLocal* This,BOID *pboidReason,BOOL fRetaining,BOOL fAsync) {
    return This->lpVtbl->Abort(This,pboidReason,fRetaining,fAsync);
}
static __WIDL_INLINE HRESULT ITransactionLocal_GetTransactionInfo(ITransactionLocal* This,XACTTRANSINFO *pinfo) {
    return This->lpVtbl->GetTransactionInfo(This,pinfo);
}
/*** ITransactionLocal methods ***/
static __WIDL_INLINE HRESULT ITransactionLocal_GetOptionsObject(ITransactionLocal* This,ITransactionOptions **options) {
    return This->lpVtbl->GetOptionsObject(This,options);
}
static __WIDL_INLINE HRESULT ITransactionLocal_StartTransaction(ITransactionLocal* This,ISOLEVEL level,ULONG flags,ITransactionOptions *options,ULONG *trans_level) {
    return This->lpVtbl->StartTransaction(This,level,flags,options,trans_level);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ITransactionLocal_RemoteGetOptionsObject_Proxy(
    ITransactionLocal* This,
    ITransactionOptions **options,
    IErrorInfo **info);
void __RPC_STUB ITransactionLocal_RemoteGetOptionsObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITransactionLocal_RemoteStartTransaction_Proxy(
    ITransactionLocal* This,
    ISOLEVEL level,
    ULONG flags,
    ITransactionOptions *options,
    ULONG *trans_level,
    IErrorInfo **info);
void __RPC_STUB ITransactionLocal_RemoteStartTransaction_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ITransactionLocal_GetOptionsObject_Proxy(
    ITransactionLocal* This,
    ITransactionOptions **options);
HRESULT __RPC_STUB ITransactionLocal_GetOptionsObject_Stub(
    ITransactionLocal* This,
    ITransactionOptions **options,
    IErrorInfo **info);
HRESULT CALLBACK ITransactionLocal_StartTransaction_Proxy(
    ITransactionLocal* This,
    ISOLEVEL level,
    ULONG flags,
    ITransactionOptions *options,
    ULONG *trans_level);
HRESULT __RPC_STUB ITransactionLocal_StartTransaction_Stub(
    ITransactionLocal* This,
    ISOLEVEL level,
    ULONG flags,
    ITransactionOptions *options,
    ULONG *trans_level,
    IErrorInfo **info);

#endif  /* __ITransactionLocal_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionObject interface
 */
#ifndef __ITransactionObject_INTERFACE_DEFINED__
#define __ITransactionObject_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionObject, 0x0c733a60, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a60-2a1c-11ce-ade5-00aa0044773d")
ITransactionObject : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetTransactionObject(
        ULONG level,
        ITransaction **transaction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionObject, 0x0c733a60, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ITransactionObjectVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransactionObject methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTransactionObject)(
        ITransactionObject *This,
        ULONG level,
        ITransaction **transaction);

    END_INTERFACE
} ITransactionObjectVtbl;

interface ITransactionObject {
    CONST_VTBL ITransactionObjectVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionObject_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionObject methods ***/
#define ITransactionObject_GetTransactionObject(This,level,transaction) (This)->lpVtbl->GetTransactionObject(This,level,transaction)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ITransactionObject_QueryInterface(ITransactionObject* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ITransactionObject_AddRef(ITransactionObject* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ITransactionObject_Release(ITransactionObject* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionObject methods ***/
static __WIDL_INLINE HRESULT ITransactionObject_GetTransactionObject(ITransactionObject* This,ULONG level,ITransaction **transaction) {
    return This->lpVtbl->GetTransactionObject(This,level,transaction);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ITransactionObject_RemoteGetTransactionObject_Proxy(
    ITransactionObject* This,
    ULONG level,
    ITransaction **transaction,
    IErrorInfo **info);
void __RPC_STUB ITransactionObject_RemoteGetTransactionObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ITransactionObject_GetTransactionObject_Proxy(
    ITransactionObject* This,
    ULONG level,
    ITransaction **transaction);
HRESULT __RPC_STUB ITransactionObject_GetTransactionObject_Stub(
    ITransactionObject* This,
    ULONG level,
    ITransaction **transaction,
    IErrorInfo **info);

#endif  /* __ITransactionObject_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICommandWithParameters interface
 */
#ifndef __ICommandWithParameters_INTERFACE_DEFINED__
#define __ICommandWithParameters_INTERFACE_DEFINED__

typedef struct tagDBPARAMBINDINFO {
    LPOLESTR pwszDataSourceType;
    LPOLESTR pwszName;
    DBLENGTH ulParamSize;
    DBPARAMFLAGS dwFlags;
    BYTE bPrecision;
    BYTE bScale;
} DBPARAMBINDINFO;
DEFINE_GUID(IID_ICommandWithParameters, 0x0c733a64, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c733a64-2a1c-11ce-ade5-00aa0044773d")
ICommandWithParameters : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetParameterInfo(
        DB_UPARAMS *uparams,
        DBPARAMINFO **info,
        OLECHAR **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE MapParameterNames(
        DB_UPARAMS uparams,
        LPCWSTR names[],
        DB_LPARAMS ordinals[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetParameterInfo(
        DB_UPARAMS uparams,
        const DB_UPARAMS ordinals[],
        const DBPARAMBINDINFO bindinfo[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommandWithParameters, 0x0c733a64, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d)
#endif
#else
typedef struct ICommandWithParametersVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICommandWithParameters methods ***/
    HRESULT (STDMETHODCALLTYPE *GetParameterInfo)(
        ICommandWithParameters *This,
        DB_UPARAMS *uparams,
        DBPARAMINFO **info,
        OLECHAR **buffer);

    HRESULT (STDMETHODCALLTYPE *MapParameterNames)(
        ICommandWithParameters *This,
        DB_UPARAMS uparams,
        LPCWSTR names[],
        DB_LPARAMS ordinals[]);

    HRESULT (STDMETHODCALLTYPE *SetParameterInfo)(
        ICommandWithParameters *This,
        DB_UPARAMS uparams,
        const DB_UPARAMS ordinals[],
        const DBPARAMBINDINFO bindinfo[]);

    END_INTERFACE
} ICommandWithParametersVtbl;

interface ICommandWithParameters {
    CONST_VTBL ICommandWithParametersVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICommandWithParameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommandWithParameters_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommandWithParameters_Release(This) (This)->lpVtbl->Release(This)
/*** ICommandWithParameters methods ***/
#define ICommandWithParameters_GetParameterInfo(This,uparams,info,buffer) (This)->lpVtbl->GetParameterInfo(This,uparams,info,buffer)
#define ICommandWithParameters_MapParameterNames(This,uparams,names,ordinals) (This)->lpVtbl->MapParameterNames(This,uparams,names,ordinals)
#define ICommandWithParameters_SetParameterInfo(This,uparams,ordinals,bindinfo) (This)->lpVtbl->SetParameterInfo(This,uparams,ordinals,bindinfo)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT ICommandWithParameters_QueryInterface(ICommandWithParameters* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG ICommandWithParameters_AddRef(ICommandWithParameters* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG ICommandWithParameters_Release(ICommandWithParameters* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommandWithParameters methods ***/
static __WIDL_INLINE HRESULT ICommandWithParameters_GetParameterInfo(ICommandWithParameters* This,DB_UPARAMS *uparams,DBPARAMINFO **info,OLECHAR **buffer) {
    return This->lpVtbl->GetParameterInfo(This,uparams,info,buffer);
}
static __WIDL_INLINE HRESULT ICommandWithParameters_MapParameterNames(ICommandWithParameters* This,DB_UPARAMS uparams,LPCWSTR names[],DB_LPARAMS ordinals[]) {
    return This->lpVtbl->MapParameterNames(This,uparams,names,ordinals);
}
static __WIDL_INLINE HRESULT ICommandWithParameters_SetParameterInfo(ICommandWithParameters* This,DB_UPARAMS uparams,const DB_UPARAMS ordinals[],const DBPARAMBINDINFO bindinfo[]) {
    return This->lpVtbl->SetParameterInfo(This,uparams,ordinals,bindinfo);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteGetParameterInfo_Proxy(
    ICommandWithParameters* This,
    DB_UPARAMS *uparams,
    DBPARAMINFO **param_info,
    DBBYTEOFFSET **offsets,
    DBLENGTH *buff_len,
    OLECHAR **buffer,
    IErrorInfo **error);
void __RPC_STUB ICommandWithParameters_RemoteGetParameterInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteMapParameterNames_Proxy(
    ICommandWithParameters* This,
    DB_UPARAMS uparams,
    LPCOLESTR *names,
    DB_LPARAMS *ordinals,
    IErrorInfo **error);
void __RPC_STUB ICommandWithParameters_RemoteMapParameterNames_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteSetParameterInfo_Proxy(
    ICommandWithParameters* This,
    DB_UPARAMS uparams,
    const DB_UPARAMS *ordinals,
    const DBPARAMBINDINFO *bindinfo,
    IErrorInfo **error);
void __RPC_STUB ICommandWithParameters_RemoteSetParameterInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICommandWithParameters_GetParameterInfo_Proxy(
    ICommandWithParameters* This,
    DB_UPARAMS *uparams,
    DBPARAMINFO **info,
    OLECHAR **buffer);
HRESULT __RPC_STUB ICommandWithParameters_GetParameterInfo_Stub(
    ICommandWithParameters* This,
    DB_UPARAMS *uparams,
    DBPARAMINFO **param_info,
    DBBYTEOFFSET **offsets,
    DBLENGTH *buff_len,
    OLECHAR **buffer,
    IErrorInfo **error);
HRESULT CALLBACK ICommandWithParameters_MapParameterNames_Proxy(
    ICommandWithParameters* This,
    DB_UPARAMS uparams,
    LPCWSTR names[],
    DB_LPARAMS ordinals[]);
HRESULT __RPC_STUB ICommandWithParameters_MapParameterNames_Stub(
    ICommandWithParameters* This,
    DB_UPARAMS uparams,
    LPCOLESTR *names,
    DB_LPARAMS *ordinals,
    IErrorInfo **error);
HRESULT CALLBACK ICommandWithParameters_SetParameterInfo_Proxy(
    ICommandWithParameters* This,
    DB_UPARAMS uparams,
    const DB_UPARAMS ordinals[],
    const DBPARAMBINDINFO bindinfo[]);
HRESULT __RPC_STUB ICommandWithParameters_SetParameterInfo_Stub(
    ICommandWithParameters* This,
    DB_UPARAMS uparams,
    const DB_UPARAMS *ordinals,
    const DBPARAMBINDINFO *bindinfo,
    IErrorInfo **error);

#endif  /* __ICommandWithParameters_INTERFACE_DEFINED__ */

#include <accctrl.h>
#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 /* __oledb_h__ */
