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

#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

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

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

#ifndef __oledb_h__
#define __oledb_h__

/* Forward declarations */

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#ifndef __IRowsetNotify_FWD_DEFINED__
#define __IRowsetNotify_FWD_DEFINED__
typedef interface IRowsetNotify IRowsetNotify;
#endif

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

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

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

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

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

/* Headers for imported files */

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

#ifdef __cplusplus
extern "C" {
#endif

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

typedef ULONG_PTR DBBYTEOFFSET;
typedef LONG_PTR DBROWOFFSET;
typedef LONG_PTR DBROWCOUNT;
typedef ULONG_PTR DBCOUNTITEM;
typedef ULONG_PTR DBLENGTH;
typedef ULONG_PTR DBORDINAL;
typedef DWORD DBREASON;
typedef DWORD DBEVENTPHASE;
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 DWORD DBKIND;
enum DBKINDENUM {
    DBKIND_GUID_NAME = 0,
    DBKIND_GUID_PROPID = 1,
    DBKIND_NAME = 2,
    DBKIND_PGUID_NAME = 3,
    DBKIND_PGUID_PROPID = 4,
    DBKIND_PROPID = 5,
    DBKIND_GUID = 6
};

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

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

enum DBTYPEENUM15 {
    DBTYPE_HCHAPTER = 136
};

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

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

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 DECLSPEC_HIDDEN;     \
        EXTERN_C const GUID name =                    \
	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
#else
#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        const GUID name DECLSPEC_HIDDEN;      \
        const GUID name =                             \
	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
#endif
#else
#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
    EXTERN_C const GUID name DECLSPEC_HIDDEN
#endif
DEFINE_DBGUID(DB_NULLGUID,       0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
DEFINE_DBGUID(DBPROPSET_DBINIT,  0xc8b522bc, 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 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)
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;
/*****************************************************************************
 * IAccessor interface
 */
#ifndef __IAccessor_INTERFACE_DEFINED__
#define __IAccessor_INTERFACE_DEFINED__

typedef DWORD DBACCESSORFLAGS;
typedef DWORD DBBINDSTATUS;
DEFINE_GUID(IID_IAccessor, 0x0c733a8c, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 FORCEINLINE HRESULT IAccessor_QueryInterface(IAccessor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IAccessor_AddRef(IAccessor* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IAccessor_Release(IAccessor* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessor methods ***/
static FORCEINLINE HRESULT IAccessor_AddRefAccessor(IAccessor* This,HACCESSOR hAccessor,DBREFCOUNT *pcRefCount) {
    return This->lpVtbl->AddRefAccessor(This,hAccessor,pcRefCount);
}
static FORCEINLINE 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 FORCEINLINE HRESULT IAccessor_GetBindings(IAccessor* This,HACCESSOR hAccessor,DBACCESSORFLAGS *pdwAccessorFlags,DBCOUNTITEM *pcBindings,DBBINDING **prgBindings) {
    return This->lpVtbl->GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings);
}
static FORCEINLINE 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 FORCEINLINE HRESULT IRowset_QueryInterface(IRowset* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IRowset_AddRef(IRowset* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IRowset_Release(IRowset* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowset methods ***/
static FORCEINLINE HRESULT IRowset_AddRefRows(IRowset* This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) {
    return This->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus);
}
static FORCEINLINE HRESULT IRowset_GetData(IRowset* This,HROW hRow,HACCESSOR hAccessor,void *pData) {
    return This->lpVtbl->GetData(This,hRow,hAccessor,pData);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IRowset_RestartPosition(IRowset* This,HCHAPTER hReserved) {
    return This->lpVtbl->RestartPosition(This,hReserved);
}
#endif
#endif

#endif

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

#endif  /* __IRowset_INTERFACE_DEFINED__ */

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

DEFINE_GUID(IID_IRowsetInfo, 0x0c733a55, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 FORCEINLINE HRESULT IRowsetInfo_QueryInterface(IRowsetInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IRowsetInfo_AddRef(IRowsetInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IRowsetInfo_Release(IRowsetInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowsetInfo methods ***/
static FORCEINLINE 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 FORCEINLINE HRESULT IRowsetInfo_GetReferencedRowset(IRowsetInfo* This,DBORDINAL iOrdinal,REFIID riid,IUnknown **ppReferencedRowset) {
    return This->lpVtbl->GetReferencedRowset(This,iOrdinal,riid,ppReferencedRowset);
}
static FORCEINLINE 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 FORCEINLINE HRESULT IRowsetLocate_QueryInterface(IRowsetLocate* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IRowsetLocate_AddRef(IRowsetLocate* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IRowsetLocate_Release(IRowsetLocate* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowset methods ***/
static FORCEINLINE HRESULT IRowsetLocate_AddRefRows(IRowsetLocate* This,DBCOUNTITEM cRows,const HROW rghRows[],DBREFCOUNT rgRefCounts[],DBROWSTATUS rgRowStatus[]) {
    return This->lpVtbl->AddRefRows(This,cRows,rghRows,rgRefCounts,rgRowStatus);
}
static FORCEINLINE HRESULT IRowsetLocate_GetData(IRowsetLocate* This,HROW hRow,HACCESSOR hAccessor,void *pData) {
    return This->lpVtbl->GetData(This,hRow,hAccessor,pData);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IRowsetLocate_RestartPosition(IRowsetLocate* This,HCHAPTER hReserved) {
    return This->lpVtbl->RestartPosition(This,hReserved);
}
/*** IRowsetLocate methods ***/
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE 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

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

#endif  /* __IRowsetLocate_INTERFACE_DEFINED__ */

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

DEFINE_GUID(IID_ICommand, 0x0c733a63, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 FORCEINLINE HRESULT ICommand_QueryInterface(ICommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICommand_AddRef(ICommand* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICommand_Release(ICommand* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommand methods ***/
static FORCEINLINE HRESULT ICommand_Cancel(ICommand* This) {
    return This->lpVtbl->Cancel(This);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT ICommandText_QueryInterface(ICommandText* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICommandText_AddRef(ICommandText* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICommandText_Release(ICommandText* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommand methods ***/
static FORCEINLINE HRESULT ICommandText_Cancel(ICommandText* This) {
    return This->lpVtbl->Cancel(This);
}
static FORCEINLINE 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 FORCEINLINE HRESULT ICommandText_GetDBSession(ICommandText* This,REFIID riid,IUnknown **ppSession) {
    return This->lpVtbl->GetDBSession(This,riid,ppSession);
}
/*** ICommandText methods ***/
static FORCEINLINE HRESULT ICommandText_GetCommandText(ICommandText* This,GUID *pguidDialect,LPOLESTR *ppwszCommand) {
    return This->lpVtbl->GetCommandText(This,pguidDialect,ppwszCommand);
}
static FORCEINLINE 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__ */

/*****************************************************************************
 * 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 FORCEINLINE HRESULT IDBCreateCommand_QueryInterface(IDBCreateCommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDBCreateCommand_AddRef(IDBCreateCommand* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDBCreateCommand_Release(IDBCreateCommand* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBCreateCommand methods ***/
static FORCEINLINE 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 FORCEINLINE HRESULT IDBCreateSession_QueryInterface(IDBCreateSession* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDBCreateSession_AddRef(IDBCreateSession* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDBCreateSession_Release(IDBCreateSession* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBCreateSession methods ***/
static FORCEINLINE 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__ */

/*****************************************************************************
 * 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 FORCEINLINE HRESULT IDBProperties_QueryInterface(IDBProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDBProperties_AddRef(IDBProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDBProperties_Release(IDBProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBProperties methods ***/
static FORCEINLINE HRESULT IDBProperties_GetProperties(IDBProperties* This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) {
    return This->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IDBInitialize_QueryInterface(IDBInitialize* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDBInitialize_AddRef(IDBInitialize* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDBInitialize_Release(IDBInitialize* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBInitialize methods ***/
static FORCEINLINE HRESULT IDBInitialize_Initialize(IDBInitialize* This) {
    return This->lpVtbl->Initialize(This);
}
static FORCEINLINE 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 FORCEINLINE HRESULT IDBDataSourceAdmin_QueryInterface(IDBDataSourceAdmin* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDBDataSourceAdmin_AddRef(IDBDataSourceAdmin* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDBDataSourceAdmin_Release(IDBDataSourceAdmin* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBDataSourceAdmin methods ***/
static FORCEINLINE 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 FORCEINLINE HRESULT IDBDataSourceAdmin_DestroyDataSource(IDBDataSourceAdmin* This) {
    return This->lpVtbl->DestroyDataSource(This);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IDBAsynchNotify_QueryInterface(IDBAsynchNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDBAsynchNotify_AddRef(IDBAsynchNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDBAsynchNotify_Release(IDBAsynchNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBAsynchNotify methods ***/
static FORCEINLINE HRESULT IDBAsynchNotify_OnLowResource(IDBAsynchNotify* This,DB_DWRESERVE dwReserved) {
    return This->lpVtbl->OnLowResource(This,dwReserved);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IDBAsynchStatus_QueryInterface(IDBAsynchStatus* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDBAsynchStatus_AddRef(IDBAsynchStatus* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDBAsynchStatus_Release(IDBAsynchStatus* This) {
    return This->lpVtbl->Release(This);
}
/*** IDBAsynchStatus methods ***/
static FORCEINLINE HRESULT IDBAsynchStatus_Abort(IDBAsynchStatus* This,HCHAPTER hChapter,DBASYNCHOP eOperation) {
    return This->lpVtbl->Abort(This,hChapter,eOperation);
}
static FORCEINLINE 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 FORCEINLINE HRESULT ISessionProperties_QueryInterface(ISessionProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISessionProperties_AddRef(ISessionProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISessionProperties_Release(ISessionProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** ISessionProperties methods ***/
static FORCEINLINE HRESULT ISessionProperties_GetProperties(ISessionProperties* This,ULONG cPropertyIDSets,const DBPROPIDSET rgPropertyIDSets[],ULONG *pcPropertySets,DBPROPSET **prgPropertySets) {
    return This->lpVtbl->GetProperties(This,cPropertyIDSets,rgPropertyIDSets,pcPropertySets,prgPropertySets);
}
static FORCEINLINE 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 FORCEINLINE HRESULT IRowsetNotify_QueryInterface(IRowsetNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IRowsetNotify_AddRef(IRowsetNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IRowsetNotify_Release(IRowsetNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowsetNotify methods ***/
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IOpenRowset_QueryInterface(IOpenRowset* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IOpenRowset_AddRef(IOpenRowset* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IOpenRowset_Release(IOpenRowset* This) {
    return This->lpVtbl->Release(This);
}
/*** IOpenRowset methods ***/
static FORCEINLINE 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 FORCEINLINE HRESULT IRow_QueryInterface(IRow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IRow_AddRef(IRow* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IRow_Release(IRow* This) {
    return This->lpVtbl->Release(This);
}
/*** IRow methods ***/
static FORCEINLINE HRESULT IRow_GetColumns(IRow* This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]) {
    return This->lpVtbl->GetColumns(This,cColumns,rgColumns);
}
static FORCEINLINE HRESULT IRow_GetSourceRowset(IRow* This,REFIID riid,IUnknown **ppRowset,HROW *phRow) {
    return This->lpVtbl->GetSourceRowset(This,riid,ppRowset,phRow);
}
static FORCEINLINE 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

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

#endif  /* __IRow_INTERFACE_DEFINED__ */

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

DEFINE_GUID(IID_IRowChange, 0x0c733ab5, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 FORCEINLINE HRESULT IRowChange_QueryInterface(IRowChange* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IRowChange_AddRef(IRowChange* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IRowChange_Release(IRowChange* This) {
    return This->lpVtbl->Release(This);
}
/*** IRowChange methods ***/
static FORCEINLINE HRESULT IRowChange_SetColumns(IRowChange* This,DBORDINAL cColumns,DBCOLUMNACCESS rgColumns[]) {
    return This->lpVtbl->SetColumns(This,cColumns,rgColumns);
}
#endif
#endif

#endif


#endif  /* __IRowChange_INTERFACE_DEFINED__ */

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

DEFINE_GUID(IID_IBindResource, 0x0c733ab1, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 FORCEINLINE HRESULT IBindResource_QueryInterface(IBindResource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBindResource_AddRef(IBindResource* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBindResource_Release(IBindResource* This) {
    return This->lpVtbl->Release(This);
}
/*** IBindResource methods ***/
static FORCEINLINE 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 FORCEINLINE HRESULT ICreateRow_QueryInterface(ICreateRow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICreateRow_AddRef(ICreateRow* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICreateRow_Release(ICreateRow* This) {
    return This->lpVtbl->Release(This);
}
/*** ICreateRow methods ***/
static FORCEINLINE 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__ */

#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__ */
