//-----------------------------------------------------------------------------
// File:			oledb.idl
//
// Copyright:		Copyright (c) Microsoft Corporation          
//
// Contents: 		Top level "container" for all OLE-DB related interfaces
//
// Comments: 		
//
//-----------------------------------------------------------------------------

cpp_quote("//+---------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("//  Microsoft OLE DB")
cpp_quote("//  Copyright (C) Microsoft Corporation, 1994 - 1999.")
cpp_quote("//")
cpp_quote("//----------------------------------------------------------------------------")
cpp_quote("")
cpp_quote("#ifdef _WIN64")
cpp_quote("#include <pshpack8.h>	// 8-byte structure packing")
cpp_quote("#else")
cpp_quote("#include <pshpack2.h>	// 2-byte structure packing")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("//")
cpp_quote("// OLEDBVER")
cpp_quote("//	OLE DB version number is 2.7 (0x0270); to force a particular version,")
cpp_quote("//	#define OLEDBVER as required before including this file.")
cpp_quote("//")
cpp_quote("")
cpp_quote("// If OLEDBVER is not defined, assume version 2.7")
cpp_quote("#ifndef OLEDBVER")
cpp_quote("#define OLEDBVER 0x0270")
cpp_quote("#endif")

cpp_quote("// If deprecated is defined - convert to oledb_deprecated and generate warning")
cpp_quote("#ifdef deprecated")
cpp_quote("#error deprecated defined ")
cpp_quote("#define oledb_deprecated")
cpp_quote("#undef deprecated")
cpp_quote("#endif")


import "wtypes.idl";
import "oaidl.idl";
import "ocidl.idl";
import "propidl.idl";

import "urlmon.idl";
// THe following is a trick to avoid "call_as" generating wrong proxy code by using 32 bit type on Win64
// 
#ifdef _WIN64
// 64bit data type as default.
cpp_quote("")
cpp_quote("#ifdef _WIN64")
cpp_quote("")
cpp_quote("// Length of a non-character object, size")
typedef ULONGLONG			DBLENGTH;
cpp_quote("")
cpp_quote("// Offset within a rowset")
typedef LONGLONG			DBROWOFFSET;
cpp_quote("")
cpp_quote("// Number of rows")
typedef LONGLONG			DBROWCOUNT;
cpp_quote("")
typedef ULONGLONG			DBCOUNTITEM;
cpp_quote("")
cpp_quote("// Ordinal (column number, etc.)")
typedef ULONGLONG			DBORDINAL;
cpp_quote("")
typedef LONGLONG			DB_LORDINAL;
cpp_quote("")
cpp_quote("// Bookmarks")
typedef ULONGLONG			DBBKMARK;
cpp_quote("// Offset in the buffer")
cpp_quote("")
typedef ULONGLONG			DBBYTEOFFSET;
cpp_quote("// Reference count of each row/accessor  handle")
cpp_quote("")
typedef ULONG				DBREFCOUNT;
cpp_quote("")
cpp_quote("// Parameters")
typedef ULONGLONG			DB_UPARAMS;
cpp_quote("")
typedef LONGLONG			DB_LPARAMS;
cpp_quote("")
cpp_quote("// hash values corresponding to the elements (bookmarks)")
typedef DWORDLONG			DBHASHVALUE;
cpp_quote("")
cpp_quote("// For reserve")
typedef DWORDLONG			DB_DWRESERVE;
cpp_quote("")
typedef LONGLONG				DB_LRESERVE;
cpp_quote("")
typedef ULONGLONG			DB_URESERVE;
cpp_quote("")
cpp_quote("#else //_WIN64")
cpp_quote("")
cpp_quote("// Length of a non-character object, size")
cpp_quote("typedef ULONG			DBLENGTH;")
cpp_quote("// Offset within a rowset")
cpp_quote("typedef LONG			DBROWOFFSET;")
cpp_quote("// Number of rows")
cpp_quote("typedef LONG			DBROWCOUNT;")
cpp_quote("typedef ULONG			DBCOUNTITEM;")
cpp_quote("// Ordinal (column number, etc.)")
cpp_quote("typedef ULONG			DBORDINAL;")
cpp_quote("typedef LONG			DB_LORDINAL;")
cpp_quote("// Bookmarks")
cpp_quote("typedef ULONG			DBBKMARK;")
cpp_quote("// Offset in the buffer")
cpp_quote("typedef ULONG			DBBYTEOFFSET; ")
cpp_quote("// Reference count of each row handle")
cpp_quote("typedef ULONG			DBREFCOUNT;")
cpp_quote("// Parameters")
cpp_quote("typedef ULONG			DB_UPARAMS;")
cpp_quote("typedef LONG			DB_LPARAMS;")
cpp_quote("// hash values corresponding to the elements (bookmarks)")
cpp_quote("typedef DWORD			DBHASHVALUE;")
cpp_quote("// For reserve")
cpp_quote("typedef DWORD			DB_DWRESERVE;")
cpp_quote("typedef LONG			DB_LRESERVE;")
cpp_quote("typedef ULONG			DB_URESERVE;")
cpp_quote("#endif	// _WIN64")

#else  //_WIN64
// 64bit data type as default.
cpp_quote("")
cpp_quote("#ifdef _WIN64")
cpp_quote("")
cpp_quote("// Length of a non-character object, size")
cpp_quote("typedef ULONGLONG			DBLENGTH;")
cpp_quote("")
cpp_quote("// Offset within a rowset")
cpp_quote("typedef LONGLONG				DBROWOFFSET;")
cpp_quote("")
cpp_quote("// Number of rows")
cpp_quote("typedef LONGLONG				DBROWCOUNT;")
cpp_quote("")
cpp_quote("typedef ULONGLONG			DBCOUNTITEM;")
cpp_quote("")
cpp_quote("// Ordinal (column number, etc.)")
cpp_quote("typedef ULONGLONG			DBORDINAL;")
cpp_quote("")
cpp_quote("typedef LONGLONG				DB_LORDINAL;")
cpp_quote("")
cpp_quote("// Bookmarks")
cpp_quote("typedef ULONGLONG			DBBKMARK;")
cpp_quote("// Offset in the buffer")
cpp_quote("")
cpp_quote("typedef ULONGLONG			DBBYTEOFFSET;") 
cpp_quote("// Reference count of each row/accessor  handle")
cpp_quote("")
cpp_quote("typedef ULONG				DBREFCOUNT;")
cpp_quote("")
cpp_quote("// Parameters")
cpp_quote("typedef ULONGLONG			DB_UPARAMS;")
cpp_quote("")
cpp_quote("typedef LONGLONG				DB_LPARAMS;")
cpp_quote("")
cpp_quote("// hash values corresponding to the elements (bookmarks)")
cpp_quote("typedef DWORDLONG			DBHASHVALUE;")
cpp_quote("")
cpp_quote("// For reserve")
cpp_quote("typedef DWORDLONG			DB_DWRESERVE;")
cpp_quote("")
cpp_quote("typedef LONGLONG				DB_LRESERVE;")
cpp_quote("")
cpp_quote("typedef ULONGLONG			DB_URESERVE;")
cpp_quote("")
cpp_quote("#else //_WIN64")
cpp_quote("")
cpp_quote("// Length of a non-character object, size")
typedef ULONG			DBLENGTH;
cpp_quote("// Offset within a rowset")
typedef LONG			DBROWOFFSET;
cpp_quote("// Number of rows")
typedef LONG			DBROWCOUNT;
typedef ULONG			DBCOUNTITEM;
cpp_quote("// Ordinal (column number, etc.)")
typedef ULONG			DBORDINAL;
typedef LONG			DB_LORDINAL;
cpp_quote("// Bookmarks")
typedef ULONG			DBBKMARK;
cpp_quote("// Offset in the buffer")
typedef ULONG			DBBYTEOFFSET; 
cpp_quote("// Reference count of each row handle")
typedef ULONG			DBREFCOUNT;
cpp_quote("// Parameters")
typedef ULONG			DB_UPARAMS;
typedef LONG			DB_LPARAMS;
cpp_quote("// hash values corresponding to the elements (bookmarks)")
typedef DWORD			DBHASHVALUE;
cpp_quote("// For reserve")
typedef DWORD			DB_DWRESERVE;
typedef LONG			DB_LRESERVE;
typedef ULONG			DB_URESERVE;
cpp_quote("#endif	// _WIN64")

#endif

#include "dbs.idl"

#include "access.idl"   // IAccessor                : IUnknown

#include "rstbas.idl"   // IRowset                  : IUnknown
#include "rstinf.idl"   // IRowsetInfo              : IUnknown
#include "rstloc.idl"   // IRowsetLocate            : IRowset
#include "rstres.idl"   // IRowsetResynch           : IRowset
#include "rstscr.idl"   // IRowsetScroll            : IRowsetLocate

// VERSION 1.5
cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
#include "chprst.idl"   // IChapteredRowset         : IUnknown
#include "rstfnd.idl"   // IRowsetFind              : IUnknown
#include "rowpos.idl"   // IRowPosition             : IUnknown
#include "rowpsc.idl"   // IRowPositionChange       : IUnknown

#include "vwrst.idl"    // IViewRowset              : IUnknown
#include "vwchp.idl"    // IViewChapter             : IUnknown
#include "vwsrt.idl"    // IViewSort                : IUnknown
#include "vwflt.idl"    // IViewFilter              : IUnknown
#include "rstvw.idl"    // IRowsetView              : IUnknown
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

// deprecated
cpp_quote("//@@@+ oledb_deprecated")
cpp_quote("#ifdef oledb_deprecated")
#include "rstxsc.idl"   // IRowsetExactScroll       : IRowsetScroll
cpp_quote("#endif // oledb_deprecated")
cpp_quote("//@@@- oledb_deprecated")

#include "rstchg.idl"   // IRowsetChange            : IUnknown
#include "rstupd.idl"   // IRowsetUpdate            : IRowsetChange

#include "rstidn.idl"   // IRowsetIdentity          : IUnknown
//#include "rstlkr.idl" // IRowsetLockRows          : IUnknown

#include "rstnot.idl"   // IRowsetNotify            : IUnknown
#include "rstind.idl"   // IRowsetIndex             : IUnknown
#include "cmdbas.idl"   // ICommand                 : IUnknown

#include "mulres.idl"   // IMultipleResults         : IUnknown

#include "cvttyp.idl"   // IConvertType             : IUnknown

#include "cmdpre.idl"   // ICommandPrepare          : IUnknown
#include "cmdprp.idl"   // ICommandProperties       : IUnknown
#include "cmdtxt.idl"   // ICommandText             : IUnknown

#include "cmdwpr.idl"   // ICommandWithParameters   : IUnknown

#include "colrst.idl"   // IColumnsRowset           : IUnknown
#include "colinf.idl"   // IColumnsInfo             : IUnknown

#include "dbccmd.idl"   // IDBCreateCommand         : IUnknown
#include "dbcses.idl"   // IDBCreateSession         : IUnknown
#include "srcrst.idl"   // ISourcesRowset           : IUnknown
#include "dbprop.idl"   // IDBProperties            : IUnknown
#include "dbinit.idl"   // IDBInitialize            : IUnknown
#include "dbinfo.idl"   // IDBInfo                  : IUnknown
#include "dbdsad.idl"   // IDBDataSourceAdmin       : IUnknown

// VERSION 1.5
cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
#include "asynot.idl"   // IDBAsynchNotify          : IUnknown
#include "asysta.idl"   // IDBAsynchStatus          : IUnknown
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

#include "sesprp.idl"   // ISessionProperties       : IUnknown

#include "inddef.idl"   // IIndexDefinition         : IUnknown
#include "tabdef.idl"   // ITableDefinition         : IUnknown

#include "opnrst.idl"   // IOpenRowset              : IUnknown

#include "dbsrst.idl"   // IDBSchemaRowset          : IUnknown

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
#include "mddset.idl"   // IMDDataset               : IUnknown
#include "mdfind.idl"   // IMDFind                  : IUnknown
#include "mdrrst.idl"   // IMDRangeRowset           : IUnknown
#include "alttab.idl"   // IAlterTable              : IUnknown
#include "altidx.idl"   // IAlterIndex              : IUnknown
#include "rstchpmb.idl" // IRowsetChapterMember     : IChapeteredRowset
#include "cmdprst.idl"  // ICommandPersist          : ICommand
#include "rstrfres.idl" // IRowsetRefresh           : IUnknown
#include "parrst.idl"   // IParentRowset            : IUnknown
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

#include "errrec.idl"   // IErrorRecords            : IUnknown
#include "errlup.idl"   // IErrorLookup             : IUnknown
#include "sqleri.idl"   // ISQLErrorInfo            : IUnknown

#include "getdts.idl"   // IGetDataSource           : IUnknown

// For ITransaction, ITransactionOptions
import "transact.idl";

#include "trnlcl.idl"   // ITransactionLocal        : ITransaction
#include "trnjoi.idl"   // ITransactionJoin         : IUnknown
#include "trnobj.idl"   // ITransactionObject       : IUnknown

// For ITrusteeAdmin, ITrusteeMemberAdmin, IObjectAccessControl, ISecurityInfo
// VERSION 2.1
cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
cpp_quote("#ifndef UNDER_CE")
#include "truadmin.idl"	// ITrusteeAdmin			: IUnknown
#include "trugpadm.idl"	// ITrusteeMemberAdmin		: IUnknown
#include "objactnl.idl"	// IObjectAccessControl		: IUnknown
#include "seurinfo.idl"	// ISecurityInfo			: IUnknown
cpp_quote("#endif // UNDER_CE")
#include "tbdefcnt.idl"	// ITableDefinitionWithConstraints			: ITableCreation
cpp_quote("#ifndef UNDER_CE")
#include "row.idl"		// IRow						: IUnknown
#include "rowchg.idl"	// IRowChange				: IUnknown
#include "rwschg.idl"	// IRowSchemaChange			: IRowsetChange
#include "getrow.idl"	// IGetRow					: IUnknown
#include "scpops.idl"	// IScopedOperations		: IBindResource
#include "binres.idl"	// IBindResource			: IUnknown
#include "crtrow.idl"	// ICreateRow				: IUnknown
#include "dbrtpr.idl"	// IDBResetProperties		: IUnknown
#include "clinf2.idl"	// IColumnsInfo2			: IColumnsInfo
#include "regprv.idl"	// IRegisterProvider		: IUnknown
cpp_quote("#endif // UNDER_CE")
#include "getses.idl"	// IGetSession				: IUnknown
#include "getsrw.idl"	// IGetSourceRow			: IUnknown
#include "tblcrt.idl"	// ITableCreation			: ITableDefinition
#include "rstcridx.idl"	// IRowsetCurrentIndex		: IRowsetIndex
cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

// VERSION 2.6
cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
#include "cmdstrm.idl"  // ICommandStream           : IUnknown
#include "rstbmrk.idl"  // IRowsetBookmark          : IUnknown
cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")

cpp_quote("//")
cpp_quote("// IID values")
cpp_quote("//")
cpp_quote("")
cpp_quote("// IID_IAccessor                 = {0x0c733a8c,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowset                   = {0x0c733a7c,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetInfo               = {0x0c733a55,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetLocate             = {0x0c733a7d,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetResynch            = {0x0c733a84,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetScroll             = {0x0c733a7e,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetChange             = {0x0c733a05,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetUpdate             = {0x0c733a6d,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetIdentity           = {0x0c733a09,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetNotify             = {0x0c733a83,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetIndex              = {0x0c733a82,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ICommand                  = {0x0c733a63,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IMultipleResults          = {0x0c733a90,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IConvertType              = {0x0c733a88,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ICommandPrepare           = {0x0c733a26,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ICommandProperties        = {0x0c733a79,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ICommandText              = {0x0c733a27,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ICommandWithParameters    = {0x0c733a64,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IColumnsRowset            = {0x0c733a10,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IColumnsInfo              = {0x0c733a11,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBCreateCommand          = {0x0c733a1d,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBCreateSession          = {0x0c733a5d,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ISourcesRowset            = {0x0c733a1e,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBProperties             = {0x0c733a8a,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBInitialize             = {0x0c733a8b,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBInfo                   = {0x0c733a89,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBDataSourceAdmin        = {0x0c733a7a,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ISessionProperties        = {0x0c733a85,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IIndexDefinition          = {0x0c733a68,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ITableDefinition          = {0x0c733a86,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IOpenRowset               = {0x0c733a69,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBSchemaRowset           = {0x0c733a7b,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IErrorRecords             = {0x0c733a67,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IErrorLookup              = {0x0c733a66,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ISQLErrorInfo             = {0x0c733a74,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IGetDataSource            = {0x0c733a75,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ITransactionLocal         = {0x0c733a5f,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ITransactionJoin          = {0x0c733a5e,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ITransactionObject        = {0x0c733a60,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")

// VERSION 1.5
cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
cpp_quote("//IID_IChapteredRowset           = {0x0c733a93,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IDBAsynchNotify            = {0x0c733a96,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IDBAsynchStatus            = {0x0c733a95,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IRowsetFind                = {0x0c733a9d,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IRowPosition               = {0x0c733a94,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IRowPositionChange         = {0x0997a571,0x126e,0x11d0,{0x9f,0x8a,0x00,0xa0,0xc9,0xa0,0x63,0x1e}}")
cpp_quote("//IID_IViewRowset                = {0x0c733a97,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IViewChapter               = {0x0c733a98,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IViewSort                  = {0x0c733a9a,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IViewFilter                = {0x0c733a9b,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("//IID_IRowsetView                = {0x0c733a99,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
cpp_quote("// IID_IMDDataset                = {0xa07cccd1,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}}")
cpp_quote("// IID_IMDFind                   = {0xa07cccd2,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}}")
cpp_quote("// IID_IMDRangeRowset            = {0x0c733aa0,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IAlterTable               = {0x0c733aa5,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IAlterIndex               = {0x0c733aa6,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ICommandPersist           = {0x0c733aa7,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetChapterMember      = {0x0c733aa8,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetRefresh            = {0x0c733aa9,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IParentRowset             = {0x0c733aaa,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("#endif // OLEDBVER >= 0x0200")   
cpp_quote("//@@@- V2.0")

cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
cpp_quote("// IID_ITrusteeAdmin				= {0c733aa1,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ITrusteeGroupAdmin		= {0c733aa2,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IObjectAccessControl		= {0c733aa3,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ISecurityInfo				= {0c733aa4,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRow						= {0c733ab4,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowChange				= {0c733ab5,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowSchemaChange			= {0c733aae,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IGetRow					= {0c733aaf,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IScopedOperations			= {0c733ab0,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IBindResource				= {0c733ab1,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ICreateRow				= {0c733ab2,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IDBResetProperties		= {0c733ab3,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IColumnsInfo2				= {0c733ab8,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRegisterProvider 		= {0c733ab9,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IGetSession		 		= {0c733aba,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IGetSourceRow		 		= {0c733abb,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_ITableCreation	 		= {0c733abc,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetCurrentIndex 		= {0c733abd,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
cpp_quote("// IID_ICommandStream 			= {0x0c733ac0,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("// IID_IRowsetBookmark 			= {0x0c733ac2,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}")
cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")

cpp_quote("#include <poppack.h>     // restore original structure packing")

