//-----------------------------------------------------------------------------
// File:			dbs.idl
//
// Copyright:		Copyright (c) Microsoft Corporation          
//
// Contents: 		OLE/DB structure definititions
//
// Comments: 		
//
//-----------------------------------------------------------------------------

[
    uuid(0c733a80-2a1c-11ce-ade5-00aa0044773d),
    pointer_default(unique)
]

interface DBStructureDefinitions {

	//
	//	A DBID is the way a particular column is identified.
	//	It consists of a GUID followed by either a LONG or a Unicode
	//	string.
	//
cpp_quote("#ifndef UNALIGNED")
cpp_quote("#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)")
cpp_quote("#define UNALIGNED __unaligned")
cpp_quote("#else")
cpp_quote("#define UNALIGNED")
cpp_quote("#endif")
cpp_quote("#endif //UNALIGNED")

cpp_quote("#undef OLEDBDECLSPEC")
cpp_quote("#if _MSC_VER >= 1100 && (!defined(SHx) || (defined(SHx) && _MSC_VER >= 1200))")
cpp_quote("#define OLEDBDECLSPEC __declspec(selectany)")
cpp_quote("#else")
cpp_quote("#define OLEDBDECLSPEC ")
cpp_quote("#endif //_MSC_VER")

typedef DWORD DBKIND;

enum DBKINDENUM {
	DBKIND_GUID_NAME,
	DBKIND_GUID_PROPID,
	DBKIND_NAME,
	DBKIND_PGUID_NAME,
	DBKIND_PGUID_PROPID,
	DBKIND_PROPID,
	DBKIND_GUID,
};

typedef struct tagDBID {
	[switch_type(DBKIND),switch_is(eKind)] union {
		[case(DBKIND_GUID_NAME, DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_NAME, DBKIND_PROPID)] GUID guid;
		[case(DBKIND_PGUID_NAME, DBKIND_PGUID_PROPID)] GUID *pguid;
		[default] ;
	} uGuid;
	DBKIND	eKind;
	[switch_type(DBKIND),switch_is(eKind)] union {
		[case(DBKIND_GUID_NAME, DBKIND_NAME, DBKIND_PGUID_NAME)] LPOLESTR pwszName;
		[case(DBKIND_GUID_PROPID, DBKIND_PGUID_PROPID, DBKIND_PROPID, DBKIND_GUID)] ULONG ulPropid;
		[default] ;
	} uName;
} DBID;

	//
	//	DB_NUMERIC type
	//

typedef struct tagDB_NUMERIC {
	BYTE	precision;		// not to exceed 28
	BYTE	scale;
	BYTE	sign;
	BYTE	val[16];
} DB_NUMERIC;

	//
	// DECIMAL and ULONGLONG definitions, just in case
	//

cpp_quote("#ifndef _ULONGLONG_")
cpp_quote("typedef hyper LONGLONG;")
cpp_quote("")
cpp_quote("typedef MIDL_uhyper ULONGLONG;")
cpp_quote("")
cpp_quote("typedef LONGLONG __RPC_FAR *PLONGLONG;")
cpp_quote("")
cpp_quote("typedef ULONGLONG __RPC_FAR *PULONGLONG;")
cpp_quote("")
cpp_quote("#endif // _ULONGLONG_")
cpp_quote("#ifndef DECIMAL_NEG")
cpp_quote("#ifndef DECIMAL_SETZERO")
cpp_quote("typedef struct tagDEC {")
cpp_quote("    USHORT wReserved;")
cpp_quote("    union {")
cpp_quote("        struct {")
cpp_quote("            BYTE scale;")
cpp_quote("            BYTE sign;")
cpp_quote("        };")
cpp_quote("        USHORT signscale;")
cpp_quote("    };")
cpp_quote("    ULONG Hi32;")
cpp_quote("    union {")
cpp_quote("        struct {")
cpp_quote("#ifdef _MAC")
cpp_quote("            ULONG Mid32;")
cpp_quote("            ULONG Lo32;")
cpp_quote("#else")
cpp_quote("            ULONG Lo32;")
cpp_quote("            ULONG Mid32;")
cpp_quote("#endif")
cpp_quote("        };")
cpp_quote("        ULONGLONG Lo64;")
cpp_quote("    };")
cpp_quote("} DECIMAL;")
cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
cpp_quote("#define DECIMAL_SETZERO(dec) {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}")
cpp_quote("#endif // DECIMAL_SETZERO")
cpp_quote("#endif // DECIMAL_NEG")


	//
	//	DBVECTOR type
	//

typedef struct tagDBVECTOR {
	DBLENGTH size;
	[size_is((ULONG)size)] void * ptr;
} DBVECTOR;

	//
	//	DBDATE, DBTIME, and DBTIMESTAMP
	//

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;

cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
cpp_quote("#if !defined(_WINBASE_) && !defined(_FILETIME_)")
cpp_quote("#define _FILETIME_")
cpp_quote("typedef struct _FILETIME {")
cpp_quote("		DWORD dwLowDateTime;")
cpp_quote("		DWORD dwHighDateTime;")
cpp_quote("     }	FILETIME;")
cpp_quote("#endif // !_FILETIME")

typedef signed char SBYTE;

typedef struct tagDB_VARNUMERIC
	    {
	    BYTE  precision;
	    SBYTE  scale;
	    BYTE  sign;
	    BYTE  val[];
	    } DB_VARNUMERIC;

cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

// VERSION 2.1
cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
typedef struct _SEC_OBJECT_ELEMENT {
	GUID		guidObjectType;
	DBID		ObjectID;
}  SEC_OBJECT_ELEMENT;

typedef struct _SEC_OBJECT {
	DWORD				cObjects;
	[size_is(cObjects)] SEC_OBJECT_ELEMENT	*prgObjects;
}  SEC_OBJECT;

typedef struct tagDBIMPLICITSESSION {
	IUnknown	*pUnkOuter;	
	IID			*piid;		
	IUnknown	*pSession;	
} DBIMPLICITSESSION;
cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

	//
	//	DBTYPE -- data type indicators
	//

typedef WORD DBTYPE;

enum DBTYPEENUM {
	// The following values exactly match VARENUM in OLE Automation and may
	// be used in VARIANT
	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_UI1			= 17,
	DBTYPE_ARRAY		= 0x2000,
	DBTYPE_BYREF		= 0x4000,

	// The following values exactly match VARENUM in OLE Automation but cannot
	// be used in VARIANT
	DBTYPE_I1			= 16,
	DBTYPE_UI2			= 18,
	DBTYPE_UI4			= 19,
	DBTYPE_I8			= 20,
	DBTYPE_UI8			= 21,
	DBTYPE_GUID			= 72,
	DBTYPE_VECTOR		= 0x1000,
	DBTYPE_RESERVED 	= 0x8000,

	// The following values are not in VARENUM in OLE
	DBTYPE_BYTES		= 128,
	DBTYPE_STR			= 129,
	DBTYPE_WSTR			= 130,
	DBTYPE_NUMERIC		= 131,
	DBTYPE_UDT			= 132,
	DBTYPE_DBDATE		= 133,
	DBTYPE_DBTIME		= 134,
	DBTYPE_DBTIMESTAMP	= 135,
};

cpp_quote("// Introduce some new DBTYPTE value to support 64bits ColumnsRowset")
cpp_quote("#ifdef _WIN64")
cpp_quote("#define	DBTYPEFOR_DBLENGTH		DBTYPE_UI8")
cpp_quote("#define	DBTYPEFOR_DBROWCOUNT	DBTYPE_I8")
cpp_quote("#define	DBTYPEFOR_DBORDINAL		DBTYPE_UI8")
cpp_quote("#else")
cpp_quote("#define	DBTYPEFOR_DBLENGTH		DBTYPE_UI4")
cpp_quote("#define	DBTYPEFOR_DBROWCOUNT	DBTYPE_I4")
cpp_quote("#define	DBTYPEFOR_DBORDINAL		DBTYPE_UI4")
cpp_quote("#endif")

cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
enum DBTYPEENUM15 {
	DBTYPE_HCHAPTER		= 136,
};
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBTYPEENUM20 {
	DBTYPE_FILETIME 	= 64,
	DBTYPE_PROPVARIANT	= 138,
	DBTYPE_VARNUMERIC	= 139,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

	//
	//	DBBINDING -- describes the relationship between a field and its value
	//

typedef DWORD DBPART;

enum DBPARTENUM {
	DBPART_INVALID	= 0x0,
	DBPART_VALUE	= 0x1,
	DBPART_LENGTH	= 0x2,
	DBPART_STATUS	= 0x4,
};

typedef DWORD DBPARAMIO;

enum DBPARAMIOENUM {
	DBPARAMIO_NOTPARAM	= 0x00,
	DBPARAMIO_INPUT		= 0x01,
	DBPARAMIO_OUTPUT	= 0x02,
};

// VERSION 1.5
cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
typedef DWORD DBBINDFLAG;

enum DBBINDFLAGENUM {
	 DBBINDFLAG_HTML = 0x01,
};
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

typedef DWORD DBMEMOWNER;

enum DBMEMOWNERENUM {
	DBMEMOWNER_CLIENTOWNED		= 0x0,
	DBMEMOWNER_PROVIDEROWNED	= 0x1,
};

typedef struct tagDBOBJECT {
	DWORD dwFlags;
	IID iid;
} DBOBJECT;

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,
};

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBSTATUSENUM20 {
	MDSTATUS_S_CELLEMPTY			= 14,
	DBSTATUS_S_IGNORE				= 15,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

// VERSION 2.1
cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
enum DBSTATUSENUM21 {
		DBSTATUS_E_DOESNOTEXIST		= 16,	
		DBSTATUS_E_INVALIDURL		= 17,	
		DBSTATUS_E_RESOURCELOCKED	= 18,	
		DBSTATUS_E_RESOURCEEXISTS	= 19,	
		DBSTATUS_E_CANNOTCOMPLETE		= 20,	
		DBSTATUS_E_VOLUMENOTFOUND	= 21,	
		DBSTATUS_E_OUTOFSPACE		= 22,	
		DBSTATUS_S_CANNOTDELETESOURCE= 23,	
		DBSTATUS_E_READONLY			= 24,
		DBSTATUS_E_RESOURCEOUTOFSCOPE = 25,	
		DBSTATUS_S_ALREADYEXISTS	=26,
};

typedef DWORD DBBINDURLFLAG;

enum DBBINDURLFLAGENUM {
    DBBINDURLFLAG_READ	                = 0x00000001L,
    DBBINDURLFLAG_WRITE	                = 0x00000002L, 
    DBBINDURLFLAG_READWRITE	            = 0x00000003L, 
    DBBINDURLFLAG_SHARE_DENY_READ			= 0x00000004L,
    DBBINDURLFLAG_SHARE_DENY_WRITE		= 0x00000008L, 
    DBBINDURLFLAG_SHARE_EXCLUSIVE			= 0x0000000CL, 
    DBBINDURLFLAG_SHARE_DENY_NONE			= 0x00000010L,
	DBBINDURLFLAG_ASYNCHRONOUS	        = 0x00001000L,
	DBBINDURLFLAG_COLLECTION				= 0x00002000L,
    DBBINDURLFLAG_DELAYFETCHSTREAM	    = 0x00004000L,
    DBBINDURLFLAG_DELAYFETCHCOLUMNS	    = 0x00008000L,	
    DBBINDURLFLAG_RECURSIVE	            = 0x00400000L,
    DBBINDURLFLAG_OUTPUT					= 0x00800000L,
	DBBINDURLFLAG_WAITFORINIT			    = 0x01000000L,
	DBBINDURLFLAG_OPENIFEXISTS			= 0x02000000L,
	DBBINDURLFLAG_OVERWRITE				= 0x04000000L,
	DBBINDURLFLAG_ISSTRUCTUREDDOCUMENT	= 0x08000000L,
    };

typedef DWORD DBBINDURLSTATUS;

enum DBBINDURLSTATUSENUM {
	DBBINDURLSTATUS_S_OK                     = 0x00000000L,
    DBBINDURLSTATUS_S_DENYNOTSUPPORTED       = 0x00000001L,
    DBBINDURLSTATUS_S_DENYTYPENOTSUPPORTED   = 0x00000004L,
    DBBINDURLSTATUS_S_REDIRECTED             = 0x00000008L,	
    };


cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

cpp_quote("//@@@+ V2.5")
cpp_quote("#if( OLEDBVER >= 0x0250 )")
enum DBSTATUSENUM25 {
		DBSTATUS_E_CANCELED		= 27,	
		DBSTATUS_E_NOTCOLLECTION	=28,
};
cpp_quote("#endif // OLEDBVER >= 0x0250")
cpp_quote("//@@@- V2.5")

typedef struct tagDBBINDEXT {
	[size_is((ULONG)ulExtension)] 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;


	//
	//	ROWSTATUS values
	//

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,
};

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBROWSTATUSENUM20 {
	DBROWSTATUS_S_NOCHANGE = 20,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
enum DBSTATUSENUM26 {
	DBSTATUS_S_ROWSETCOLUMN = 29
};

cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")

	//
	//	HACCESSOR and related definitions
	//

typedef ULONG_PTR HACCESSOR;

cpp_quote("#define DB_NULL_HACCESSOR 0x00 // deprecated; use DB_INVALID_HACCESSOR instead")
cpp_quote("#define DB_INVALID_HACCESSOR 0x00")

	//
	//	HROW and related definitions
	//

typedef ULONG_PTR HROW;

cpp_quote("#define DB_NULL_HROW 0x00")

// PPP -- until HWATCHREGION is gone from the two V1.0 fn's...
//cpp_quote("//@@@+ V2.0")
//cpp_quote("#if( OLEDBVER >= 0x0200 )")

	//
	//	HWATCHREGION and related definitions
	//

typedef ULONG_PTR HWATCHREGION;

cpp_quote("#define DBWATCHREGION_NULL NULL")

//cpp_quote("#endif // OLEDBVER >= 0x0200")
//cpp_quote("//@@@- V2.0")

	//
	//	HCHAPTER and related definitions
	//

typedef ULONG_PTR HCHAPTER;

cpp_quote("#define DB_NULL_HCHAPTER 0x00")
cpp_quote("#define DB_INVALID_HCHAPTER 0x00	// deprecated; use DB_NULL_HCHAPTER instead")

	//
	//	DBFAILUREINFO -- info on error rows
	//

typedef struct tagDBFAILUREINFO {
	HROW	    hRow;
	DBORDINAL	iColumn;
	HRESULT	    failure;
} DBFAILUREINFO;

	//
	//	DBCOLUMNFLAGS -- describe column characteristics
	//

typedef DWORD DBCOLUMNFLAGS;

enum DBCOLUMNFLAGSENUM {
	DBCOLUMNFLAGS_ISBOOKMARK	= 0x0001,
	DBCOLUMNFLAGS_MAYDEFER		= 0x0002,
	DBCOLUMNFLAGS_WRITE			= 0x0004,
	DBCOLUMNFLAGS_WRITEUNKNOWN	= 0x0008,
	DBCOLUMNFLAGS_ISFIXEDLENGTH	= 0x0010,
	DBCOLUMNFLAGS_ISNULLABLE	= 0x0020,
	DBCOLUMNFLAGS_MAYBENULL		= 0x0040,
	DBCOLUMNFLAGS_ISLONG		= 0x0080,
	DBCOLUMNFLAGS_ISROWID		= 0x0100,
	DBCOLUMNFLAGS_ISROWVER		= 0x0200,
	DBCOLUMNFLAGS_CACHEDEFERRED	= 0x1000,
};

cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBCOLUMNFLAGSENUM20 {
	DBCOLUMNFLAGS_SCALEISNEGATIVE = 0x4000,
	DBCOLUMNFLAGS_RESERVED        = 0x8000,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

// deprecated
cpp_quote("//@@@+ deprecated")
cpp_quote("#ifdef deprecated")
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBCOLUMNFLAGSDEPRECATED {
	DBCOLUMNFLAGS_KEYCOLUMN       = 0x8000 // return this information using IColumnsRowset
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")
cpp_quote("#endif // deprecated")
cpp_quote("//@@@- deprecated")

// VERSION 1.5
cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
enum DBCOLUMNFLAGS15ENUM {
	DBCOLUMNFLAGS_ISCHAPTER		= 0x2000,
};
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
enum DBCOLUMNFLAGSENUM21 {
	DBCOLUMNFLAGS_ISROWURL = 0x10000,	
	DBCOLUMNFLAGS_ISDEFAULTSTREAM = 0x20000,	
	DBCOLUMNFLAGS_ISCOLLECTION = 0x40000,	
};
cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
enum DBCOLUMNFLAGSENUM26 {
	DBCOLUMNFLAGS_ISSTREAM = 0x80000,
	DBCOLUMNFLAGS_ISROWSET = 0x100000,
	DBCOLUMNFLAGS_ISROW = 0x200000,
	DBCOLUMNFLAGS_ROWSPECIFICCOLUMN = 0x400000,
};

enum DBTABLESTATISTICSTYPE26 {
	DBSTAT_HISTOGRAM = 0x0001,
	DBSTAT_COLUMN_CARDINALITY = 0x0002,
	DBSTAT_TUPLE_CARDINALITY = 0x0004,
};

cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")
	//
	//	DBCOLUMNINFO struct
	//

typedef struct tagDBCOLUMNINFO {
	LPOLESTR			pwszName;
	ITypeInfo *			pTypeInfo;
	DBORDINAL			iOrdinal;
	DBCOLUMNFLAGS		dwFlags;
	DBLENGTH			ulColumnSize;
	DBTYPE				wType;
	BYTE				bPrecision;
	BYTE				bScale;
	DBID 				columnid;
} DBCOLUMNINFO;

	//
	//	Predefined bookmark values
	//

typedef enum tagDBBOOKMARK {
	DBBMK_INVALID = 0,
	DBBMK_FIRST,
	DBBMK_LAST
} DBBOOKMARK;

cpp_quote("#define STD_BOOKMARKLENGTH 1")

	//
	//	Comparison of GUIDs
	//

cpp_quote("#ifdef __cplusplus")
cpp_quote("inline BOOL IsEqualGUIDBase(const GUID &rguid1, const GUID &rguid2)")
cpp_quote("{ return !memcmp(&(rguid1.Data2), &(rguid2.Data2), sizeof(GUID) - sizeof(rguid1.Data1)); }")
cpp_quote("#else // !__cplusplus")
cpp_quote("#define IsEqualGuidBase(rguid1, rguid2) (!memcmp(&((rguid1).Data2), &((rguid2).Data2), sizeof(GUID) - sizeof((rguid1).Data1)))")
cpp_quote("#endif // __cplusplus")

	//
	//	DB_INVALIDCOLUMN define
	//

cpp_quote("#ifdef _WIN64")
cpp_quote("")
cpp_quote("#define DB_INVALIDCOLUMN _UI64_MAX")
cpp_quote("")
cpp_quote("#else")
cpp_quote("")
cpp_quote("#define DB_INVALIDCOLUMN ULONG_MAX")
cpp_quote("")
cpp_quote("#endif	// _WIN64")

	//
	//	Predefined DBID's
	//

cpp_quote("#define DBCIDGUID   {0x0C733A81L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}")
cpp_quote("#define DB_NULLGUID {0x00000000L,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}")

cpp_quote("#ifdef DBINITCONSTANTS")

cpp_quote("extern const OLEDBDECLSPEC DBID DB_NULLID                      = {DB_NULLGUID, 0, (LPOLESTR)0};")

cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_IDNAME                = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)2};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_NAME                  = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)3};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_NUMBER                = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)4};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_TYPE                  = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)5};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_PRECISION             = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)7};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_SCALE                 = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)8};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_FLAGS                 = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)9};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_BASECOLUMNNAME        = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)10};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_BASETABLENAME         = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)11};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_COLLATINGSEQUENCE     = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)12};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_COMPUTEMODE           = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)13};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_DEFAULTVALUE          = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)14};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_DOMAINNAME            = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)15};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_HASDEFAULT            = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)16};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_ISAUTOINCREMENT       = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)17};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_ISCASESENSITIVE       = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)18};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_ISSEARCHABLE          = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)20};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_ISUNIQUE              = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)21};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_BASECATALOGNAME       = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)23};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_BASESCHEMANAME        = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)24};")

cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_GUID                  = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)29};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_PROPID                = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)30};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_TYPEINFO              = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)31};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_DOMAINCATALOG         = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)32};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_DOMAINSCHEMA          = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)33};")

cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_DATETIMEPRECISION     = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)34};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_NUMERICPRECISIONRADIX = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)35};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_OCTETLENGTH           = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)36};")

cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_COLUMNSIZE            = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)37};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_CLSID                 = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)38};")

cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")

cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_MAYSORT               = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)39};")

cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

cpp_quote("#else // !DBINITCONSTANTS")

cpp_quote("extern const DBID DB_NULLID;")

cpp_quote("extern const DBID DBCOLUMN_IDNAME;")
cpp_quote("extern const DBID DBCOLUMN_NAME;")
cpp_quote("extern const DBID DBCOLUMN_NUMBER;")
cpp_quote("extern const DBID DBCOLUMN_TYPE;")
cpp_quote("extern const DBID DBCOLUMN_PRECISION;")
cpp_quote("extern const DBID DBCOLUMN_SCALE;")
cpp_quote("extern const DBID DBCOLUMN_FLAGS;")
cpp_quote("extern const DBID DBCOLUMN_BASECOLUMNNAME;")
cpp_quote("extern const DBID DBCOLUMN_BASETABLENAME;")
cpp_quote("extern const DBID DBCOLUMN_COLLATINGSEQUENCE;")
cpp_quote("extern const DBID DBCOLUMN_COMPUTEMODE;")
cpp_quote("extern const DBID DBCOLUMN_DEFAULTVALUE;")
cpp_quote("extern const DBID DBCOLUMN_DOMAINNAME;")
cpp_quote("extern const DBID DBCOLUMN_HASDEFAULT;")
cpp_quote("extern const DBID DBCOLUMN_ISAUTOINCREMENT;")
cpp_quote("extern const DBID DBCOLUMN_ISCASESENSITIVE;")
cpp_quote("extern const DBID DBCOLUMN_ISSEARCHABLE;")
cpp_quote("extern const DBID DBCOLUMN_ISUNIQUE;")
cpp_quote("extern const DBID DBCOLUMN_BASECATALOGNAME;")
cpp_quote("extern const DBID DBCOLUMN_BASESCHEMANAME;")

cpp_quote("extern const DBID DBCOLUMN_GUID;")
cpp_quote("extern const DBID DBCOLUMN_PROPID;")
cpp_quote("extern const DBID DBCOLUMN_TYPEINFO;")
cpp_quote("extern const DBID DBCOLUMN_DOMAINCATALOG;")
cpp_quote("extern const DBID DBCOLUMN_DOMAINSCHEMA;")

cpp_quote("extern const DBID DBCOLUMN_DATETIMEPRECISION;")
cpp_quote("extern const DBID DBCOLUMN_NUMERICPRECISIONRADIX;")
cpp_quote("extern const DBID DBCOLUMN_OCTETLENGTH;")

cpp_quote("extern const DBID DBCOLUMN_COLUMNSIZE;")
cpp_quote("extern const DBID DBCOLUMN_CLSID;")

cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")

cpp_quote("extern const DBID DBCOLUMN_MAYSORT;")

cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

cpp_quote("#endif // DBINITCONSTANTS")

	//
	//	Well-known GUIDs
	//

cpp_quote("#ifdef DBINITCONSTANTS")
cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_FUNCTIONS                    = {0xa07ccd07,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_ACTIONS                      = {0xa07ccd08,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_COMMANDS                     = {0xa07ccd09,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_SETS						 = {0xa07ccd0b,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};")
cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")

cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLES_INFO                   = {0xc8b522e0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDGUID_MDX                             = {0xa07cccd0,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_MDX                             = {0xa07cccd0,0x8148,0x11d0,{0x87,0xbb,0x00,0xc0,0x4f,0xc3,0x39,0x42}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_CUBES                         = {0xc8b522d8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_DIMENSIONS                    = {0xc8b522d9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_HIERARCHIES                   = {0xc8b522da,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_LEVELS                        = {0xc8b522db,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_MEASURES                      = {0xc8b522dc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_PROPERTIES                    = {0xc8b522dd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID MDSCHEMA_MEMBERS                       = {0xc8b522de,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_BASETABLEVERSION				= {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)40};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_KEYCOLUMN						= {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)41};")
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
cpp_quote("#define DBGUID_ROWURL   {0x0C733AB6L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}")
cpp_quote("#define DBGUID_ROWDEFAULTSTREAM   {0x0C733AB7L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_TRUSTEE					= {0xc8b522e1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_TABLE 						= {0xc8b522e2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_COLUMN 						= {0xc8b522e4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_DATABASE					= {0xc8b522e5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_PROCEDURE 					= {0xc8b522e6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_VIEW	 					= {0xc8b522e7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_SCHEMA						= {0xc8b522e8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_DOMAIN	 					= {0xc8b522e9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_COLLATION 					= {0xc8b522ea,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_TRUSTEE	 					= {0xc8b522eb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_SCHEMAROWSET				= {0xc8b522ec,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_CHARACTERSET	 			= {0xc8b522ed,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBOBJECT_TRANSLATION 				= {0xc8b522ee,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_TRUSTEE 					= {0xc8b522ef,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_COLUMNALL 					= {0xc8b522f0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_INDEXALL 					= {0xc8b522f1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_TABLEALL 					= {0xc8b522f2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_TRUSTEEALL					= {0xc8b522f3,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_CONSTRAINTALL				= {0xc8b522fa,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_DSO							= {0xc8b522f4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_SESSION						= {0xc8b522f5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_ROWSET						= {0xc8b522f6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_ROW							= {0xc8b522f7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_COMMAND						= {0xc8b522f8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_STREAM						= {0xc8b522f9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_ROWURL		         = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)0};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_PARSENAME            = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)2};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_PARENTNAME           = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)3};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_ABSOLUTEPARSENAME    = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)4};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_ISHIDDEN             = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)5};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_ISREADONLY           = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)6};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_CONTENTTYPE          = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)7};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_CONTENTCLASS         = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)8};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_CONTENTLANGUAGE      = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)9};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_CREATIONTIME         = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)10};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_LASTACCESSTIME       = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)11};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_LASTWRITETIME        = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)12};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_STREAMSIZE           = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)13};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_ISCOLLECTION         = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)14};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_ISSTRUCTUREDDOCUMENT = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)15};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_DEFAULTDOCUMENT      = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)16};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_DISPLAYNAME          = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)17};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_ISROOT               = {DBGUID_ROWURL, DBKIND_GUID_PROPID, (LPOLESTR)18};")
cpp_quote("extern const OLEDBDECLSPEC DBID DBROWCOL_DEFAULTSTREAM        = {DBGUID_ROWDEFAULTSTREAM, DBKIND_GUID_PROPID, (LPOLESTR)0};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_CONTAINEROBJECT        = {0xc8b522fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_ASSERTIONS                    = {0xc8b52210,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_CATALOGS                      = {0xc8b52211,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_CHARACTER_SETS                = {0xc8b52212,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_COLLATIONS                    = {0xc8b52213,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_COLUMNS                       = {0xc8b52214,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_CHECK_CONSTRAINTS             = {0xc8b52215,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE       = {0xc8b52216,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE        = {0xc8b52217,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_KEY_COLUMN_USAGE              = {0xc8b52218,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS       = {0xc8b52219,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLE_CONSTRAINTS             = {0xc8b5221a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_COLUMN_DOMAIN_USAGE           = {0xc8b5221b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_INDEXES                       = {0xc8b5221e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_COLUMN_PRIVILEGES             = {0xc8b52221,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLE_PRIVILEGES              = {0xc8b52222,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_USAGE_PRIVILEGES              = {0xc8b52223,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_PROCEDURES                    = {0xc8b52224,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_SCHEMATA                      = {0xc8b52225,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_SQL_LANGUAGES                 = {0xc8b52226,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_STATISTICS                    = {0xc8b52227,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLES                        = {0xc8b52229,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_TRANSLATIONS                  = {0xc8b5222a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_PROVIDER_TYPES                = {0xc8b5222c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_VIEWS                         = {0xc8b5222d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_VIEW_COLUMN_USAGE             = {0xc8b5222e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_VIEW_TABLE_USAGE              = {0xc8b5222f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_PROCEDURE_PARAMETERS          = {0xc8b522b8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_FOREIGN_KEYS                  = {0xc8b522c4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_PRIMARY_KEYS                  = {0xc8b522c5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_PROCEDURE_COLUMNS             = {0xc8b522c9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("extern const OLEDBDECLSPEC GUID DBCOL_SELFCOLUMNS                      = {0xc8b52231,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBCOL_SPECIALCOL                       = {0xc8b52232,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("extern const OLEDBDECLSPEC GUID PSGUID_QUERY                           = {0x49691c90,0x7e17,0x101a,{0xa9,0x1c,0x08,0x00,0x2b,0x2e,0xcd,0xa9}};")

cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_COLUMN                       = {0xc8b522b9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCE                   = {0xc8b522ba,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCEINFO               = {0xc8b522bb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_DBINIT                       = {0xc8b522bc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_INDEX                        = {0xc8b522bd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_ROWSET                       = {0xc8b522be,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_TABLE                        = {0xc8b522bf,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCEALL                = {0xc8b522c0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_DATASOURCEINFOALL            = {0xc8b522c1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_ROWSETALL                    = {0xc8b522c2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_SESSION                      = {0xc8b522c6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_SESSIONALL                   = {0xc8b522c7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_DBINITALL                    = {0xc8b522ca,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_PROPERTIESINERROR            = {0xc8b522d4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_VIEW                         = {0xc8b522df,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

cpp_quote("//@@@+ V2.5")
cpp_quote("#if( OLEDBVER >= 0x0250 )")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_VIEWALL                      = {0xc8b522fc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("#endif // OLEDBVER >= 0x0250")																
cpp_quote("//@@@- V2.5")

cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")

cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_STREAM                       = {0xc8b522fd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBPROPSET_STREAMALL                    = {0xc8b522fe,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_TABLE_STATISTICS 			  = {0xc8b522ff,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE 	  = {0xc8b52301,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_HISTOGRAM_ROWSET				  = {0xc8b52300,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

// Note that propid 42 is reserved for DBCOLUMN_HASCHILDROWSET in oledbnew.h
cpp_quote("extern const OLEDBDECLSPEC DBID DBCOLUMN_DERIVEDCOLUMNNAME             = {DBCIDGUID, DBKIND_GUID_PROPID, (LPOLESTR)43};")

cpp_quote("#endif // OLEDBVER >= 0x0260")																
cpp_quote("//@@@- V2.6")

cpp_quote("// DBGUID_DBSQL is deprecated; use DBGUID_DEFAULT instead")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_DBSQL                           = {0xc8b521fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_DEFAULT                         = {0xc8b521fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_SQL                             = {0xc8b522d7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("#else // !DBINITCONSTANTS")

cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
cpp_quote("extern const GUID DBSCHEMA_TABLES_INFO;")
cpp_quote("extern const GUID MDGUID_MDX;")
cpp_quote("extern const GUID DBGUID_MDX;")
cpp_quote("extern const GUID MDSCHEMA_CUBES;")
cpp_quote("extern const GUID MDSCHEMA_DIMENSIONS;")
cpp_quote("extern const GUID MDSCHEMA_HIERARCHIES;")
cpp_quote("extern const GUID MDSCHEMA_LEVELS;")
cpp_quote("extern const GUID MDSCHEMA_MEASURES;")
cpp_quote("extern const GUID MDSCHEMA_PROPERTIES;")
cpp_quote("extern const GUID MDSCHEMA_MEMBERS;")
cpp_quote("extern const DBID DBCOLUMN_BASETABLEVERSION;")
cpp_quote("extern const DBID DBCOLUMN_KEYCOLUMN;")
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
cpp_quote("extern const GUID DBPROPSET_TRUSTEE;")
cpp_quote("extern const GUID DBOBJECT_TABLE;")
cpp_quote("extern const GUID DBOBJECT_COLUMN;")
cpp_quote("extern const GUID DBOBJECT_DATABASE;")
cpp_quote("extern const GUID DBOBJECT_PROCEDURE;")
cpp_quote("extern const GUID DBOBJECT_VIEW;")
cpp_quote("extern const GUID DBOBJECT_SCHEMA;")
cpp_quote("extern const GUID DBOBJECT_DOMAIN;")
cpp_quote("extern const GUID DBOBJECT_COLLATION;")
cpp_quote("extern const GUID DBOBJECT_TRUSTEE;")
cpp_quote("extern const GUID DBOBJECT_SCHEMAROWSET;")
cpp_quote("extern const GUID DBOBJECT_CHARACTERSET;")
cpp_quote("extern const GUID DBOBJECT_TRANSLATION;")
cpp_quote("extern const GUID DBSCHEMA_TRUSTEE;") 
cpp_quote("extern const GUID DBPROPSET_COLUMNALL;")
cpp_quote("extern const GUID DBPROPSET_INDEXALL;")
cpp_quote("extern const GUID DBPROPSET_TABLEALL;")
cpp_quote("extern const GUID DBPROPSET_TRUSTEEALL;")
cpp_quote("extern const GUID DBPROPSET_CONSTRAINTALL;")
cpp_quote("extern const GUID DBGUID_DSO;    ")
cpp_quote("extern const GUID DBGUID_SESSION;")
cpp_quote("extern const GUID DBGUID_ROWSET; ")
cpp_quote("extern const GUID DBGUID_ROW;    ")
cpp_quote("extern const GUID DBGUID_COMMAND;")
cpp_quote("extern const GUID DBGUID_STREAM; ")
cpp_quote("extern const DBID DBROWCOL_ROWURL;		        ")
cpp_quote("extern const DBID DBROWCOL_PARSENAME;            ")
cpp_quote("extern const DBID DBROWCOL_PARENTNAME;           ")
cpp_quote("extern const DBID DBROWCOL_ABSOLUTEPARSENAME;    ")
cpp_quote("extern const DBID DBROWCOL_ISHIDDEN;             ")
cpp_quote("extern const DBID DBROWCOL_ISREADONLY;           ")
cpp_quote("extern const DBID DBROWCOL_CONTENTTYPE;          ")
cpp_quote("extern const DBID DBROWCOL_CONTENTCLASS;         ")
cpp_quote("extern const DBID DBROWCOL_CONTENTLANGUAGE;      ")
cpp_quote("extern const DBID DBROWCOL_CREATIONTIME;         ")
cpp_quote("extern const DBID DBROWCOL_LASTACCESSTIME;       ")
cpp_quote("extern const DBID DBROWCOL_LASTWRITETIME;        ")
cpp_quote("extern const DBID DBROWCOL_STREAMSIZE;           ")
cpp_quote("extern const DBID DBROWCOL_ISCOLLECTION;         ")
cpp_quote("extern const DBID DBROWCOL_ISSTRUCTUREDDOCUMENT; ")
cpp_quote("extern const DBID DBROWCOL_DEFAULTDOCUMENT;      ")
cpp_quote("extern const DBID DBROWCOL_DISPLAYNAME;          ")
cpp_quote("extern const DBID DBROWCOL_ISROOT;               ")
cpp_quote("extern const DBID DBROWCOL_DEFAULTSTREAM;        ")
cpp_quote("extern const GUID DBGUID_CONTAINEROBJECT;")
cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

cpp_quote("extern const GUID DBSCHEMA_ASSERTIONS;")
cpp_quote("extern const GUID DBSCHEMA_CATALOGS;")
cpp_quote("extern const GUID DBSCHEMA_CHARACTER_SETS;")
cpp_quote("extern const GUID DBSCHEMA_COLLATIONS;")
cpp_quote("extern const GUID DBSCHEMA_COLUMNS;")
cpp_quote("extern const GUID DBSCHEMA_CHECK_CONSTRAINTS;")
cpp_quote("extern const GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE;")
cpp_quote("extern const GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE;")
cpp_quote("extern const GUID DBSCHEMA_KEY_COLUMN_USAGE;")
cpp_quote("extern const GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS;")
cpp_quote("extern const GUID DBSCHEMA_TABLE_CONSTRAINTS;")
cpp_quote("extern const GUID DBSCHEMA_COLUMN_DOMAIN_USAGE;")
cpp_quote("extern const GUID DBSCHEMA_INDEXES;")
cpp_quote("extern const GUID DBSCHEMA_COLUMN_PRIVILEGES;")
cpp_quote("extern const GUID DBSCHEMA_TABLE_PRIVILEGES;")
cpp_quote("extern const GUID DBSCHEMA_USAGE_PRIVILEGES;")
cpp_quote("extern const GUID DBSCHEMA_PROCEDURES;")
cpp_quote("extern const GUID DBSCHEMA_SCHEMATA;")
cpp_quote("extern const GUID DBSCHEMA_SQL_LANGUAGES;")
cpp_quote("extern const GUID DBSCHEMA_STATISTICS;")
cpp_quote("extern const GUID DBSCHEMA_TABLES;")
cpp_quote("extern const GUID DBSCHEMA_TRANSLATIONS;")
cpp_quote("extern const GUID DBSCHEMA_PROVIDER_TYPES;")
cpp_quote("extern const GUID DBSCHEMA_VIEWS;")
cpp_quote("extern const GUID DBSCHEMA_VIEW_COLUMN_USAGE;")
cpp_quote("extern const GUID DBSCHEMA_VIEW_TABLE_USAGE;")
cpp_quote("extern const GUID DBSCHEMA_PROCEDURE_PARAMETERS;")
cpp_quote("extern const GUID DBSCHEMA_FOREIGN_KEYS;")
cpp_quote("extern const GUID DBSCHEMA_PRIMARY_KEYS;")
cpp_quote("extern const GUID DBSCHEMA_PROCEDURE_COLUMNS;")

cpp_quote("extern const GUID DBCOL_SELFCOLUMNS;")
cpp_quote("extern const GUID DBCOL_SPECIALCOL;")

cpp_quote("extern const GUID PSGUID_QUERY;")

cpp_quote("extern const GUID DBPROPSET_COLUMN;")
cpp_quote("extern const GUID DBPROPSET_DATASOURCE;")
cpp_quote("extern const GUID DBPROPSET_DATASOURCEINFO;")
cpp_quote("extern const GUID DBPROPSET_DBINIT;")
cpp_quote("extern const GUID DBPROPSET_INDEX;")
cpp_quote("extern const GUID DBPROPSET_ROWSET;")
cpp_quote("extern const GUID DBPROPSET_TABLE;")
cpp_quote("extern const GUID DBPROPSET_DATASOURCEALL;")
cpp_quote("extern const GUID DBPROPSET_DATASOURCEINFOALL;")
cpp_quote("extern const GUID DBPROPSET_ROWSETALL;")
cpp_quote("extern const GUID DBPROPSET_SESSION;")
cpp_quote("extern const GUID DBPROPSET_SESSIONALL;")
cpp_quote("extern const GUID DBPROPSET_DBINITALL;")
cpp_quote("extern const GUID DBPROPSET_PROPERTIESINERROR;")

cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
cpp_quote("extern const GUID DBPROPSET_VIEW;")
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

cpp_quote("//@@@+ V2.5")
cpp_quote("#if( OLEDBVER >= 0x0250 )")
cpp_quote("extern const GUID DBPROPSET_VIEWALL;")
cpp_quote("#endif // OLEDBVER >= 0x0250")
cpp_quote("//@@@- V2.5")

cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
cpp_quote("extern const GUID DBPROPSET_STREAM;")
cpp_quote("extern const GUID DBPROPSET_STREAMALL;")

cpp_quote("extern const GUID DBSCHEMA_TABLE_STATISTICS;")
cpp_quote("extern const GUID DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE;")

cpp_quote("extern const GUID DBGUID_HISTOGRAM_ROWSET;")

cpp_quote("extern const DBID DBCOLUMN_DERIVEDCOLUMNNAME;")

cpp_quote("extern const GUID MDSCHEMA_FUNCTIONS;")
cpp_quote("extern const GUID MDSCHEMA_ACTIONS;")
cpp_quote("extern const GUID MDSCHEMA_COMMANDS;")
cpp_quote("extern const GUID MDSCHEMA_SETS;")

cpp_quote("#endif // OLEDBVER >= 0x0260")																
cpp_quote("//@@@- V2.6")

cpp_quote("// DBGUID_DBSQL is deprecated; use DBGUID_DEFAULT instead")
cpp_quote("extern const GUID DBGUID_DBSQL;")
cpp_quote("extern const GUID DBGUID_DEFAULT;")
cpp_quote("extern const GUID DBGUID_SQL;")

cpp_quote("#endif // DBINITCONSTANTS")

	//
	//	DBPROPID's
	//

enum DBPROPENUM {
	DBPROP_ABORTPRESERVE                         = 0x00000002L,
	DBPROP_ACTIVESESSIONS                        = 0x00000003L,
	DBPROP_APPENDONLY                            = 0x000000bbL,
	DBPROP_ASYNCTXNABORT                         = 0x000000a8L,
	DBPROP_ASYNCTXNCOMMIT                        = 0x00000004L,
	DBPROP_AUTH_CACHE_AUTHINFO                   = 0x00000005L,
	DBPROP_AUTH_ENCRYPT_PASSWORD                 = 0x00000006L,
	DBPROP_AUTH_INTEGRATED                       = 0x00000007L,
	DBPROP_AUTH_MASK_PASSWORD                    = 0x00000008L,
	DBPROP_AUTH_PASSWORD                         = 0x00000009L,
	DBPROP_AUTH_PERSIST_ENCRYPTED                = 0x0000000aL,
	DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO       = 0x0000000bL,
	DBPROP_AUTH_USERID                           = 0x0000000cL,
	DBPROP_BLOCKINGSTORAGEOBJECTS                = 0x0000000dL,
	DBPROP_BOOKMARKS                             = 0x0000000eL,
	DBPROP_BOOKMARKSKIPPED                       = 0x0000000fL,
	DBPROP_BOOKMARKTYPE                          = 0x00000010L,
	DBPROP_BYREFACCESSORS                        = 0x00000078L,
	DBPROP_CACHEDEFERRED                         = 0x00000011L,
	DBPROP_CANFETCHBACKWARDS                     = 0x00000012L,
	DBPROP_CANHOLDROWS                           = 0x00000013L,
	DBPROP_CANSCROLLBACKWARDS                    = 0x00000015L,
	DBPROP_CATALOGLOCATION                       = 0x00000016L,
	DBPROP_CATALOGTERM                           = 0x00000017L,
	DBPROP_CATALOGUSAGE                          = 0x00000018L,
	DBPROP_CHANGEINSERTEDROWS                    = 0x000000bcL,
	DBPROP_COL_AUTOINCREMENT                     = 0x0000001aL,
	DBPROP_COL_DEFAULT                           = 0x0000001bL,
	DBPROP_COL_DESCRIPTION                       = 0x0000001cL,
	DBPROP_COL_FIXEDLENGTH                       = 0x000000a7L,
	DBPROP_COL_NULLABLE                          = 0x0000001dL,
	DBPROP_COL_PRIMARYKEY                        = 0x0000001eL,
	DBPROP_COL_UNIQUE                            = 0x0000001fL,
	DBPROP_COLUMNDEFINITION                      = 0x00000020L,
	DBPROP_COLUMNRESTRICT                        = 0x00000021L,
	DBPROP_COMMANDTIMEOUT                        = 0x00000022L,
	DBPROP_COMMITPRESERVE                        = 0x00000023L,
	DBPROP_CONCATNULLBEHAVIOR                    = 0x00000024L,
	DBPROP_CURRENTCATALOG                        = 0x00000025L,
	DBPROP_DATASOURCENAME                        = 0x00000026L,
	DBPROP_DATASOURCEREADONLY                    = 0x00000027L,
	DBPROP_DBMSNAME                              = 0x00000028L,
	DBPROP_DBMSVER                               = 0x00000029L,
	DBPROP_DEFERRED                              = 0x0000002aL,
	DBPROP_DELAYSTORAGEOBJECTS                   = 0x0000002bL,
	DBPROP_DSOTHREADMODEL                        = 0x000000a9L,
	DBPROP_GROUPBY                               = 0x0000002cL,
	DBPROP_HETEROGENEOUSTABLES                   = 0x0000002dL,
	DBPROP_IAccessor                             = 0x00000079L,
	DBPROP_IColumnsInfo                          = 0x0000007aL,
	DBPROP_IColumnsRowset                        = 0x0000007bL,
	DBPROP_IConnectionPointContainer             = 0x0000007cL,
	DBPROP_IConvertType                          = 0x000000c2L,
	DBPROP_IRowset                               = 0x0000007eL,
	DBPROP_IRowsetChange                         = 0x0000007fL,
	DBPROP_IRowsetIdentity                       = 0x00000080L,
	DBPROP_IRowsetIndex                          = 0x0000009fL,
	DBPROP_IRowsetInfo                           = 0x00000081L,
	DBPROP_IRowsetLocate                         = 0x00000082L,
	DBPROP_IRowsetResynch                        = 0x00000084L,
	DBPROP_IRowsetScroll                         = 0x00000085L,
	DBPROP_IRowsetUpdate                         = 0x00000086L,
	DBPROP_ISupportErrorInfo                     = 0x00000087L,
	DBPROP_ILockBytes                            = 0x00000088L,
	DBPROP_ISequentialStream                     = 0x00000089L,
	DBPROP_IStorage                              = 0x0000008aL,
	DBPROP_IStream                               = 0x0000008bL,
	DBPROP_IDENTIFIERCASE                        = 0x0000002eL,
	DBPROP_IMMOBILEROWS                          = 0x0000002fL,
	DBPROP_INDEX_AUTOUPDATE                      = 0x00000030L,
	DBPROP_INDEX_CLUSTERED                       = 0x00000031L,
	DBPROP_INDEX_FILLFACTOR                      = 0x00000032L,
	DBPROP_INDEX_INITIALSIZE                     = 0x00000033L,
	DBPROP_INDEX_NULLCOLLATION                   = 0x00000034L,
	DBPROP_INDEX_NULLS                           = 0x00000035L,
	DBPROP_INDEX_PRIMARYKEY                      = 0x00000036L,
	DBPROP_INDEX_SORTBOOKMARKS                   = 0x00000037L,
	DBPROP_INDEX_TEMPINDEX                       = 0x000000a3L,
	DBPROP_INDEX_TYPE                            = 0x00000038L,
	DBPROP_INDEX_UNIQUE                          = 0x00000039L,
	DBPROP_INIT_DATASOURCE                       = 0x0000003bL,
	DBPROP_INIT_HWND                             = 0x0000003cL,
	DBPROP_INIT_IMPERSONATION_LEVEL              = 0x0000003dL,
	DBPROP_INIT_LCID                             = 0x000000baL,
	DBPROP_INIT_LOCATION                         = 0x0000003eL,
	DBPROP_INIT_MODE                             = 0x0000003fL,
	DBPROP_INIT_PROMPT                           = 0x00000040L,
	DBPROP_INIT_PROTECTION_LEVEL                 = 0x00000041L,
	DBPROP_INIT_PROVIDERSTRING                   = 0x000000a0L,
	DBPROP_INIT_TIMEOUT                          = 0x00000042L,
	DBPROP_LITERALBOOKMARKS                      = 0x00000043L,
	DBPROP_LITERALIDENTITY                       = 0x00000044L,
	DBPROP_MAXINDEXSIZE                          = 0x00000046L,
	DBPROP_MAXOPENROWS                           = 0x00000047L,
	DBPROP_MAXPENDINGROWS                        = 0x00000048L,
	DBPROP_MAXROWS                               = 0x00000049L,
	DBPROP_MAXROWSIZE                            = 0x0000004aL,
	DBPROP_MAXROWSIZEINCLUDESBLOB                = 0x0000004bL,
	DBPROP_MAXTABLESINSELECT                     = 0x0000004cL,
	DBPROP_MAYWRITECOLUMN                        = 0x0000004dL,
	DBPROP_MEMORYUSAGE                           = 0x0000004eL,
	DBPROP_MULTIPLEPARAMSETS                     = 0x000000bfL,
	DBPROP_MULTIPLERESULTS                       = 0x000000c4L,
	DBPROP_MULTIPLESTORAGEOBJECTS                = 0x00000050L,
	DBPROP_MULTITABLEUPDATE                      = 0x00000051L,
	DBPROP_NOTIFICATIONGRANULARITY               = 0x000000c6L,
	DBPROP_NOTIFICATIONPHASES                    = 0x00000052L,

	DBPROP_NOTIFYCOLUMNSET                       = 0x000000abL,
	DBPROP_NOTIFYROWDELETE                       = 0x000000adL,
	DBPROP_NOTIFYROWFIRSTCHANGE                  = 0x000000aeL,
	DBPROP_NOTIFYROWINSERT                       = 0x000000afL,
	DBPROP_NOTIFYROWRESYNCH                      = 0x000000b1L,
	DBPROP_NOTIFYROWSETCHANGED                   = 0x000000d3L,
	DBPROP_NOTIFYROWSETRELEASE                   = 0x000000b2L,
	DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE       = 0x000000b3L,
	DBPROP_NOTIFYROWUNDOCHANGE                   = 0x000000b4L,
	DBPROP_NOTIFYROWUNDODELETE                   = 0x000000b5L,
	DBPROP_NOTIFYROWUNDOINSERT                   = 0x000000b6L,
	DBPROP_NOTIFYROWUPDATE                       = 0x000000b7L,
	DBPROP_NULLCOLLATION                         = 0x00000053L,
	DBPROP_OLEOBJECTS                            = 0x00000054L,
	DBPROP_ORDERBYCOLUMNSINSELECT                = 0x00000055L,
	DBPROP_ORDEREDBOOKMARKS                      = 0x00000056L,
	DBPROP_OTHERINSERT                           = 0x00000057L,
	DBPROP_OTHERUPDATEDELETE                     = 0x00000058L,
	DBPROP_OUTPUTPARAMETERAVAILABILITY           = 0x000000b8L,
	DBPROP_OWNINSERT                             = 0x00000059L,
	DBPROP_OWNUPDATEDELETE                       = 0x0000005aL,
	DBPROP_PERSISTENTIDTYPE                      = 0x000000b9L,
	DBPROP_PREPAREABORTBEHAVIOR                  = 0x0000005bL,
	DBPROP_PREPARECOMMITBEHAVIOR                 = 0x0000005cL,
	DBPROP_PROCEDURETERM                         = 0x0000005dL,
	DBPROP_PROVIDERNAME                      = 0x00000060L,
	DBPROP_PROVIDEROLEDBVER                      = 0x00000061L,
	DBPROP_PROVIDERVER                           = 0x00000062L,
	DBPROP_QUICKRESTART                          = 0x00000063L,
	DBPROP_QUOTEDIDENTIFIERCASE                  = 0x00000064L,
	DBPROP_REENTRANTEVENTS                       = 0x00000065L,
	DBPROP_REMOVEDELETED                         = 0x00000066L,
	DBPROP_REPORTMULTIPLECHANGES                 = 0x00000067L,
	DBPROP_RETURNPENDINGINSERTS                  = 0x000000bdL,
	DBPROP_ROWRESTRICT                           = 0x00000068L,
	DBPROP_ROWSETCONVERSIONSONCOMMAND            = 0x000000c0L,
	DBPROP_ROWTHREADMODEL                        = 0x00000069L,
	DBPROP_SCHEMATERM                            = 0x0000006aL,
	DBPROP_SCHEMAUSAGE                           = 0x0000006bL,
	DBPROP_SERVERCURSOR                          = 0x0000006cL,
	DBPROP_SESS_AUTOCOMMITISOLEVELS              = 0x000000beL,
	DBPROP_SQLSUPPORT                            = 0x0000006dL,
	DBPROP_STRONGIDENTITY                        = 0x00000077L,
	DBPROP_STRUCTUREDSTORAGE                     = 0x0000006fL,
	DBPROP_SUBQUERIES                            = 0x00000070L,
	DBPROP_SUPPORTEDTXNDDL                       = 0x000000a1L,
	DBPROP_SUPPORTEDTXNISOLEVELS                 = 0x00000071L,
	DBPROP_SUPPORTEDTXNISORETAIN                 = 0x00000072L,
	DBPROP_TABLETERM                             = 0x00000073L,
	DBPROP_TBL_TEMPTABLE                         = 0x0000008cL,
	DBPROP_TRANSACTEDOBJECT                      = 0x00000074L,
	DBPROP_UPDATABILITY                          = 0x00000075L,
	DBPROP_USERNAME                              = 0x00000076L,
};

cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
enum DBPROPENUM15 {
	DBPROP_FILTERCOMPAREOPS                      = 0x000000d1L,
	DBPROP_FINDCOMPAREOPS                        = 0x000000d2L,
	DBPROP_IChapteredRowset                      = 0x000000caL,
	DBPROP_IDBAsynchStatus                       = 0x000000cbL,
	DBPROP_IRowsetFind                           = 0x000000ccL,
	DBPROP_IRowsetView                           = 0x000000d4L,
	DBPROP_IViewChapter                          = 0x000000d5L,
	DBPROP_IViewFilter                           = 0x000000d6L,
	DBPROP_IViewRowset                           = 0x000000d7L,
	DBPROP_IViewSort                             = 0x000000d8L,
	DBPROP_INIT_ASYNCH                           = 0x000000c8L,
	DBPROP_MAXOPENCHAPTERS                       = 0x000000c7L,
	DBPROP_MAXORSINFILTER                        = 0x000000cdL,
	DBPROP_MAXSORTCOLUMNS                        = 0x000000ceL,
	DBPROP_ROWSET_ASYNCH                         = 0x000000c9L,
	DBPROP_SORTONINDEX                           = 0x000000cfL,	
};
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
cpp_quote("#define DBPROP_PROVIDERFILENAME DBPROP_PROVIDERNAME")
cpp_quote("#define DBPROP_SERVER_NAME DBPROP_SERVERNAME")

enum DBPROPENUM20 {
	DBPROP_IMultipleResults                      = 0x000000d9L,
	DBPROP_DATASOURCE_TYPE                       = 0x000000fbL,
	MDPROP_AXES                                  = 0x000000fcL,
	MDPROP_FLATTENING_SUPPORT                    = 0x000000fdL,
	MDPROP_MDX_JOINCUBES                         = 0x000000feL,
	MDPROP_NAMED_LEVELS                          = 0x000000ffL,
	MDPROP_RANGEROWSET                           = 0x00000100L,
	MDPROP_MDX_SLICER                            = 0x000000daL,
	MDPROP_MDX_CUBEQUALIFICATION				 = 0x000000dbL,
	MDPROP_MDX_OUTERREFERENCE					 = 0x000000dcL,
	MDPROP_MDX_QUERYBYPROPERTY					 = 0x000000ddL,
	MDPROP_MDX_CASESUPPORT						 = 0x000000deL,
	MDPROP_MDX_STRING_COMPOP					 = 0x000000e0L,
	MDPROP_MDX_DESCFLAGS						 = 0x000000e1L,
	MDPROP_MDX_SET_FUNCTIONS					 = 0x000000e2L,
	MDPROP_MDX_MEMBER_FUNCTIONS					 = 0x000000e3L,
	MDPROP_MDX_NUMERIC_FUNCTIONS				 = 0x000000e4L,
	MDPROP_MDX_FORMULAS							 = 0x000000e5L,
	MDPROP_AGGREGATECELL_UPDATE				 	 = 0x000000e6L,
	MDPROP_MDX_AGGREGATECELL_UPDATE				 = MDPROP_AGGREGATECELL_UPDATE,	
	MDPROP_MDX_OBJQUALIFICATION					 = 0x00000105L,
	MDPROP_MDX_NONMEASURE_EXPRESSIONS			 = 0x00000106L,
	DBPROP_ACCESSORDER							 = 0x000000e7L,
	DBPROP_BOOKMARKINFO							 = 0x000000e8L,
	DBPROP_INIT_CATALOG      					 = 0x000000e9L,
	DBPROP_ROW_BULKOPS							 = 0x000000eaL,
	DBPROP_PROVIDERFRIENDLYNAME					 = 0x000000ebL,
	DBPROP_LOCKMODE								 = 0x000000ecL,
	DBPROP_MULTIPLECONNECTIONS					 = 0x000000edL,
	DBPROP_UNIQUEROWS                            = 0x000000eeL,
	DBPROP_SERVERDATAONINSERT                    = 0x000000efL,
	DBPROP_STORAGEFLAGS							 = 0x000000f0L,
	DBPROP_CONNECTIONSTATUS						 = 0x000000f4L,
	DBPROP_ALTERCOLUMN							 = 0x000000f5L,
	DBPROP_COLUMNLCID							 = 0x000000f6L,
	DBPROP_RESETDATASOURCE						 = 0x000000f7L,	
	DBPROP_INIT_OLEDBSERVICES					 = 0x000000f8L,	
	DBPROP_IRowsetRefresh						 = 0x000000f9L,	
	DBPROP_SERVERNAME							 = 0x000000faL,	
	DBPROP_IParentRowset						 = 0x00000101L,	
	DBPROP_HIDDENCOLUMNS						 = 0x00000102L,
	DBPROP_PROVIDERMEMORY						 = 0x00000103L,
	DBPROP_CLIENTCURSOR							 = 0x00000104L,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

// VERSION 2.1
cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
enum DBPROPENUM21 {
	DBPROP_TRUSTEE_USERNAME						= 0x000000f1L,
	DBPROP_TRUSTEE_AUTHENTICATION				= 0x000000f2L,
	DBPROP_TRUSTEE_NEWAUTHENTICATION			= 0x000000f3L,	
	DBPROP_IRow									= 0x00000107L,	
	DBPROP_IRowChange							= 0x00000108L,	
	DBPROP_IRowSchemaChange						= 0x00000109L,	
	DBPROP_IGetRow								= 0x0000010aL,	
	DBPROP_IScopedOperations					= 0x0000010bL,	
	DBPROP_IBindResource						= 0x0000010cL,	
	DBPROP_ICreateRow							= 0x0000010dL,	
	DBPROP_INIT_BINDFLAGS						= 0x0000010eL,	
	DBPROP_INIT_LOCKOWNER						= 0x0000010fL,		
	DBPROP_GENERATEURL							= 0x00000111L,	
	DBPROP_IDBBinderProperties					= 0x00000112L,	
	DBPROP_IColumnsInfo2						= 0x00000113L,	
	DBPROP_IRegisterProvider					= 0x00000114L,	
	DBPROP_IGetSession							= 0x00000115L,	
	DBPROP_IGetSourceRow						= 0x00000116L,	
	DBPROP_IRowsetCurrentIndex  				= 0x00000117L,
	DBPROP_OPENROWSETSUPPORT					= 0x00000118L,
	DBPROP_COL_ISLONG							= 0x00000119L,
};
cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

// VERSION 2.5
cpp_quote("//@@@+ V2.5")
cpp_quote("#if( OLEDBVER >= 0x0250 )")
enum DBPROPENUM25 {
	DBPROP_COL_SEED								 = 0x0000011aL,
	DBPROP_COL_INCREMENT						 = 0x0000011bL,
	DBPROP_INIT_GENERALTIMEOUT					 = 0x0000011cL,	
	DBPROP_COMSERVICES						 	 = 0x0000011dL,
};
cpp_quote("#endif // OLEDBVER >= 0x0250")
cpp_quote("//@@@- V2.5")

// VERSION 2.6
cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
enum DBPROPENUM26 {
	DBPROP_OUTPUTSTREAM							 = 0x0000011eL,
	DBPROP_OUTPUTENCODING						 = 0x0000011fL,
	DBPROP_TABLESTATISTICS 						 = 0x00000120L,
	DBPROP_SKIPROWCOUNTRESULTS					 = 0x00000123L,
	DBPROP_IRowsetBookmark						 = 0x00000124L,
	MDPROP_VISUALMODE							 = 0x00000125L,
};
cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")

//+
//
//	DBPROP_IPersistFile   -- reserved for future = 0x121L,
//	DBPROP_IPersistStream -- reserved for future = 0x122L,
//
// Next free value:                                0x00000126L
//-

// deprecated
cpp_quote("//@@@+ deprecated")
cpp_quote("#ifdef deprecated")
enum DBPROPENUMDEPRECATED {
	DBPROP_IRowsetExactScroll                    = 0x0000009aL,
	DBPROP_MARSHALLABLE                          = 0x000000c5L,
	DBPROP_FILTEROPS                             = 0x000000d0L,
};
cpp_quote("#endif // deprecated")
cpp_quote("//@@@- deprecated")

	//
	//	Property value defines
	//

cpp_quote("#define DBPROPVAL_BMK_NUMERIC							 0x00000001L")
cpp_quote("#define DBPROPVAL_BMK_KEY								 0x00000002L")

cpp_quote("#define DBPROPVAL_CL_START                                0x00000001L")
cpp_quote("#define DBPROPVAL_CL_END                                  0x00000002L")

cpp_quote("#define DBPROPVAL_CU_DML_STATEMENTS						 0x00000001L")
cpp_quote("#define DBPROPVAL_CU_TABLE_DEFINITION					 0x00000002L")
cpp_quote("#define DBPROPVAL_CU_INDEX_DEFINITION					 0x00000004L")
cpp_quote("#define DBPROPVAL_CU_PRIVILEGE_DEFINITION				 0x00000008L")

cpp_quote("#define DBPROPVAL_CD_NOTNULL								 0x00000001L")

cpp_quote("#define DBPROPVAL_CB_NULL								 0x00000001L")
cpp_quote("#define DBPROPVAL_CB_NON_NULL							 0x00000002L")

cpp_quote("#define DBPROPVAL_FU_NOT_SUPPORTED						 0x00000001L")
cpp_quote("#define DBPROPVAL_FU_COLUMN								 0x00000002L")
cpp_quote("#define DBPROPVAL_FU_TABLE								 0x00000004L")
cpp_quote("#define DBPROPVAL_FU_CATALOG								 0x00000008L")

cpp_quote("#define DBPROPVAL_GB_NOT_SUPPORTED						 0x00000001L")
cpp_quote("#define DBPROPVAL_GB_EQUALS_SELECT						 0x00000002L")
cpp_quote("#define DBPROPVAL_GB_CONTAINS_SELECT						 0x00000004L")
cpp_quote("#define DBPROPVAL_GB_NO_RELATION							 0x00000008L")

cpp_quote("#define DBPROPVAL_HT_DIFFERENT_CATALOGS					 0x00000001L")
cpp_quote("#define DBPROPVAL_HT_DIFFERENT_PROVIDERS					 0x00000002L")

cpp_quote("#define DBPROPVAL_IC_UPPER								 0x00000001L")
cpp_quote("#define DBPROPVAL_IC_LOWER								 0x00000002L")
cpp_quote("#define DBPROPVAL_IC_SENSITIVE							 0x00000004L")
cpp_quote("#define DBPROPVAL_IC_MIXED								 0x00000008L")

// deprecated
cpp_quote("//@@@+ deprecated")
cpp_quote("#ifdef deprecated")
cpp_quote("#define DBPROPVAL_LM_NONE								 0x00000001L")
cpp_quote("#define DBPROPVAL_LM_READ								 0x00000002L")
cpp_quote("#define DBPROPVAL_LM_INTENT								 0x00000004L")
cpp_quote("#define DBPROPVAL_LM_RITE								 0x00000008L")
cpp_quote("#endif // deprecated")
cpp_quote("//@@@- deprecated")

cpp_quote("#define DBPROPVAL_NP_OKTODO								 0x00000001L")
cpp_quote("#define DBPROPVAL_NP_ABOUTTODO							 0x00000002L")
cpp_quote("#define DBPROPVAL_NP_SYNCHAFTER							 0x00000004L")
cpp_quote("#define DBPROPVAL_NP_FAILEDTODO							 0x00000008L")
cpp_quote("#define DBPROPVAL_NP_DIDEVENT							 0x00000010L")

cpp_quote("#define DBPROPVAL_NC_END									 0x00000001L")
cpp_quote("#define DBPROPVAL_NC_HIGH								 0x00000002L")
cpp_quote("#define DBPROPVAL_NC_LOW									 0x00000004L")
cpp_quote("#define DBPROPVAL_NC_START								 0x00000008L")

cpp_quote("#define DBPROPVAL_OO_BLOB								 0x00000001L")
cpp_quote("#define DBPROPVAL_OO_IPERSIST							 0x00000002L")

cpp_quote("#define DBPROPVAL_CB_DELETE								 0x00000001L")
cpp_quote("#define DBPROPVAL_CB_PRESERVE							 0x00000002L")

cpp_quote("#define DBPROPVAL_SU_DML_STATEMENTS						 0x00000001L")
cpp_quote("#define DBPROPVAL_SU_TABLE_DEFINITION					 0x00000002L")
cpp_quote("#define DBPROPVAL_SU_INDEX_DEFINITION					 0x00000004L")
cpp_quote("#define DBPROPVAL_SU_PRIVILEGE_DEFINITION				 0x00000008L")

cpp_quote("#define DBPROPVAL_SQ_CORRELATEDSUBQUERIES				 0x00000001L")
cpp_quote("#define DBPROPVAL_SQ_COMPARISON							 0x00000002L")
cpp_quote("#define DBPROPVAL_SQ_EXISTS								 0x00000004L")
cpp_quote("#define DBPROPVAL_SQ_IN									 0x00000008L")
cpp_quote("#define DBPROPVAL_SQ_QUANTIFIED							 0x00000010L")
cpp_quote("#define DBPROPVAL_SQ_TABLE								 0x00000020L")

cpp_quote("#define DBPROPVAL_SS_ISEQUENTIALSTREAM					 0x00000001L")
cpp_quote("#define DBPROPVAL_SS_ISTREAM								 0x00000002L")
cpp_quote("#define DBPROPVAL_SS_ISTORAGE							 0x00000004L")
cpp_quote("#define DBPROPVAL_SS_ILOCKBYTES							 0x00000008L")

cpp_quote("#define DBPROPVAL_TI_CHAOS								 0x00000010L")
cpp_quote("#define DBPROPVAL_TI_READUNCOMMITTED						 0x00000100L")
cpp_quote("#define DBPROPVAL_TI_BROWSE								 0x00000100L")
cpp_quote("#define DBPROPVAL_TI_CURSORSTABILITY						 0x00001000L")
cpp_quote("#define DBPROPVAL_TI_READCOMMITTED						 0x00001000L")
cpp_quote("#define DBPROPVAL_TI_REPEATABLEREAD						 0x00010000L")
cpp_quote("#define DBPROPVAL_TI_SERIALIZABLE						 0x00100000L")
cpp_quote("#define DBPROPVAL_TI_ISOLATED							 0x00100000L")

cpp_quote("#define DBPROPVAL_TR_COMMIT_DC							 0x00000001L")
cpp_quote("#define DBPROPVAL_TR_COMMIT								 0x00000002L")
cpp_quote("#define DBPROPVAL_TR_COMMIT_NO							 0x00000004L")
cpp_quote("#define DBPROPVAL_TR_ABORT_DC							 0x00000008L")
cpp_quote("#define DBPROPVAL_TR_ABORT								 0x00000010L")
cpp_quote("#define DBPROPVAL_TR_ABORT_NO							 0x00000020L")
cpp_quote("#define DBPROPVAL_TR_DONTCARE							 0x00000040L")
cpp_quote("#define DBPROPVAL_TR_BOTH								 0x00000080L")
cpp_quote("#define DBPROPVAL_TR_NONE								 0x00000100L")
cpp_quote("#define DBPROPVAL_TR_OPTIMISTIC							 0x00000200L")

cpp_quote("#define DBPROPVAL_RT_FREETHREAD							 0x00000001L")
cpp_quote("#define DBPROPVAL_RT_APTMTTHREAD							 0x00000002L")
cpp_quote("#define DBPROPVAL_RT_SINGLETHREAD						 0x00000004L")

cpp_quote("#define DBPROPVAL_UP_CHANGE								 0x00000001L")
cpp_quote("#define DBPROPVAL_UP_DELETE								 0x00000002L")
cpp_quote("#define DBPROPVAL_UP_INSERT								 0x00000004L")

cpp_quote("#define DBPROPVAL_SQL_NONE								 0x00000000L")
cpp_quote("#define DBPROPVAL_SQL_ODBC_MINIMUM						 0x00000001L")
cpp_quote("#define DBPROPVAL_SQL_ODBC_CORE							 0x00000002L")
cpp_quote("#define DBPROPVAL_SQL_ODBC_EXTENDED						 0x00000004L")
cpp_quote("#define DBPROPVAL_SQL_ANSI89_IEF							 0x00000008L")
cpp_quote("#define DBPROPVAL_SQL_ANSI92_ENTRY						 0x00000010L")
cpp_quote("#define DBPROPVAL_SQL_FIPS_TRANSITIONAL					 0x00000020L")
cpp_quote("#define DBPROPVAL_SQL_ANSI92_INTERMEDIATE				 0x00000040L")
cpp_quote("#define DBPROPVAL_SQL_ANSI92_FULL						 0x00000080L")
cpp_quote("#define DBPROPVAL_SQL_ESCAPECLAUSES						 0x00000100L")

cpp_quote("#define DBPROPVAL_IT_BTREE                                0x00000001L")
cpp_quote("#define DBPROPVAL_IT_HASH                                 0x00000002L")
cpp_quote("#define DBPROPVAL_IT_CONTENT                              0x00000003L")
cpp_quote("#define DBPROPVAL_IT_OTHER                                0x00000004L")

cpp_quote("#define DBPROPVAL_IN_DISALLOWNULL                         0x00000001L")
cpp_quote("#define DBPROPVAL_IN_IGNORENULL                           0x00000002L")
cpp_quote("#define DBPROPVAL_IN_IGNOREANYNULL                        0x00000004L")

cpp_quote("#define DBPROPVAL_TC_NONE                                 0x00000000L")
cpp_quote("#define DBPROPVAL_TC_DML                                  0x00000001L")
cpp_quote("#define DBPROPVAL_TC_DDL_COMMIT                           0x00000002L")
cpp_quote("#define DBPROPVAL_TC_DDL_IGNORE                           0x00000004L")
cpp_quote("#define DBPROPVAL_TC_ALL                                  0x00000008L")

cpp_quote("#define DBPROPVAL_NP_OKTODO                               0x00000001L")
cpp_quote("#define DBPROPVAL_NP_ABOUTTODO                            0x00000002L")
cpp_quote("#define DBPROPVAL_NP_SYNCHAFTER                           0x00000004L")

cpp_quote("#define DBPROPVAL_OA_NOTSUPPORTED                         0x00000001L")
cpp_quote("#define DBPROPVAL_OA_ATEXECUTE                            0x00000002L")
cpp_quote("#define DBPROPVAL_OA_ATROWRELEASE                         0x00000004L")

cpp_quote("#define DBPROPVAL_MR_NOTSUPPORTED                         0x00000000L")
cpp_quote("#define DBPROPVAL_MR_SUPPORTED                            0x00000001L")
cpp_quote("#define DBPROPVAL_MR_CONCURRENT                           0x00000002L")

cpp_quote("#define DBPROPVAL_PT_GUID_NAME                            0x00000001L")
cpp_quote("#define DBPROPVAL_PT_GUID_PROPID                          0x00000002L")
cpp_quote("#define DBPROPVAL_PT_NAME                                 0x00000004L")
cpp_quote("#define DBPROPVAL_PT_GUID                                 0x00000008L")
cpp_quote("#define DBPROPVAL_PT_PROPID								 0x00000010L")
cpp_quote("#define DBPROPVAL_PT_PGUID_NAME                           0x00000020L")
cpp_quote("#define DBPROPVAL_PT_PGUID_PROPID						 0x00000040L")

cpp_quote("#define DBPROPVAL_NT_SINGLEROW                            0x00000001L")
cpp_quote("#define DBPROPVAL_NT_MULTIPLEROWS                         0x00000002L")

// VERSION 1.5
cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")

cpp_quote("#define DBPROPVAL_ASYNCH_INITIALIZE                       0x00000001L")
cpp_quote("#define DBPROPVAL_ASYNCH_SEQUENTIALPOPULATION             0x00000002L")
cpp_quote("#define DBPROPVAL_ASYNCH_RANDOMPOPULATION                 0x00000004L")

cpp_quote("#define DBPROPVAL_OP_EQUAL                                0x00000001L")
cpp_quote("#define DBPROPVAL_OP_RELATIVE                             0x00000002L")
cpp_quote("#define DBPROPVAL_OP_STRING                               0x00000004L")

cpp_quote("#define DBPROPVAL_CO_EQUALITY                             0x00000001L")
cpp_quote("#define DBPROPVAL_CO_STRING                               0x00000002L")
cpp_quote("#define DBPROPVAL_CO_CASESENSITIVE                        0x00000004L")
cpp_quote("#define DBPROPVAL_CO_CASEINSENSITIVE                      0x00000008L")
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")

cpp_quote("#define DBPROPVAL_CO_CONTAINS		                     0x00000010L")
cpp_quote("#define DBPROPVAL_CO_BEGINSWITH		                     0x00000020L")

cpp_quote("#define DBPROPVAL_ASYNCH_BACKGROUNDPOPULATION			0x00000008L")
cpp_quote("#define DBPROPVAL_ASYNCH_PREPOPULATE						0x00000010L")
cpp_quote("#define DBPROPVAL_ASYNCH_POPULATEONDEMAND				0x00000020L")

cpp_quote("#define DBPROPVAL_LM_NONE								 0x00000001L")
cpp_quote("#define DBPROPVAL_LM_SINGLEROW							 0x00000002L")

cpp_quote("#define DBPROPVAL_SQL_SUBMINIMUM 						 0x00000200L")

cpp_quote("#define DBPROPVAL_DST_TDP                                 0x00000001L")
cpp_quote("#define DBPROPVAL_DST_MDP                                 0x00000002L")
cpp_quote("#define DBPROPVAL_DST_TDPANDMDP                           0x00000003L")

cpp_quote("#define MDPROPVAL_AU_UNSUPPORTED                          0x00000000L")
cpp_quote("#define MDPROPVAL_AU_UNCHANGED                            0x00000001L")
cpp_quote("#define MDPROPVAL_AU_UNKNOWN                              0x00000002L")

cpp_quote("#define MDPROPVAL_MF_WITH_CALCMEMBERS                     0x00000001L")
cpp_quote("#define MDPROPVAL_MF_WITH_NAMEDSETS                       0x00000002L")
cpp_quote("#define MDPROPVAL_MF_CREATE_CALCMEMBERS                   0x00000004L")
cpp_quote("#define MDPROPVAL_MF_CREATE_NAMEDSETS                     0x00000008L")
cpp_quote("#define MDPROPVAL_MF_SCOPE_SESSION						 0x00000010L")
cpp_quote("#define MDPROPVAL_MF_SCOPE_GLOBAL                         0x00000020L")
cpp_quote("#define MDPROPVAL_MMF_COUSIN                              0x00000001L")
cpp_quote("#define MDPROPVAL_MMF_PARALLELPERIOD                      0x00000002L")
cpp_quote("#define MDPROPVAL_MMF_OPENINGPERIOD                       0x00000004L")
cpp_quote("#define MDPROPVAL_MMF_CLOSINGPERIOD                       0x00000008L")
cpp_quote("#define MDPROPVAL_MNF_MEDIAN								0x00000001L")
cpp_quote("#define MDPROPVAL_MNF_VAR								0x00000002L")
cpp_quote("#define MDPROPVAL_MNF_STDDEV								0x00000004L")
cpp_quote("#define MDPROPVAL_MNF_RANK								0x00000008L")
cpp_quote("#define MDPROPVAL_MNF_AGGREGATE							0x00000010L")
cpp_quote("#define MDPROPVAL_MNF_COVARIANCE							0x00000020L")
cpp_quote("#define MDPROPVAL_MNF_CORRELATION						0x00000040L")
cpp_quote("#define MDPROPVAL_MNF_LINREGSLOPE						0x00000080L")
cpp_quote("#define MDPROPVAL_MNF_LINREGVARIANCE						0x00000100L")
cpp_quote("#define MDPROPVAL_MNF_LINREG2							0x00000200L")
cpp_quote("#define MDPROPVAL_MNF_LINREGPOINT						0x00000400L")
cpp_quote("#define MDPROPVAL_MNF_DRILLDOWNLEVEL						0x00000800L")
cpp_quote("#define MDPROPVAL_MNF_DRILLDOWNMEMBERTOP					0x00001000L")
cpp_quote("#define MDPROPVAL_MNF_DRILLDOWNMEMBERBOTTOM				0x00002000L")
cpp_quote("#define MDPROPVAL_MNF_DRILLDOWNLEVELTOP					0x00004000L")
cpp_quote("#define MDPROPVAL_MNF_DRILLDOWNLEVELBOTTOM				0x00008000L")
cpp_quote("#define MDPROPVAL_MNF_DRILLUPMEMBER						0x00010000L")
cpp_quote("#define MDPROPVAL_MNF_DRILLUPLEVEL						0x00020000L")
cpp_quote("#define MDPROPVAL_MMF_COUSIN								0x00000001L")
cpp_quote("#define MDPROPVAL_MMF_PARALLELPERIOD						0x00000002L")
cpp_quote("#define MDPROPVAL_MMF_OPENINGPERIOD						0x00000004L")
cpp_quote("#define MDPROPVAL_MMF_CLOSINGPERIOD						0x00000008L")
cpp_quote("#define MDPROPVAL_MSF_TOPPERCENT							0x00000001L")
cpp_quote("#define MDPROPVAL_MSF_BOTTOMPERCENT						0x00000002L")
cpp_quote("#define MDPROPVAL_MSF_TOPSUM								0x00000004L")
cpp_quote("#define MDPROPVAL_MSF_BOTTOMSUM							0x00000008L")
cpp_quote("#define MDPROPVAL_MSF_PERIODSTODATE						0x00000010L")
cpp_quote("#define MDPROPVAL_MSF_LASTPERIODS						0x00000020L")
cpp_quote("#define MDPROPVAL_MSF_YTD								0x00000040L")
cpp_quote("#define MDPROPVAL_MSF_QTD								0x00000080L")
cpp_quote("#define MDPROPVAL_MSF_MTD								0x00000100L")
cpp_quote("#define MDPROPVAL_MSF_WTD								0x00000200L")
cpp_quote("#define MDPROPVAL_MSF_DRILLDOWNMEMBBER					0x00000400L")
cpp_quote("#define MDPROPVAL_MSF_DRILLDOWNLEVEL						0x00000800L")
cpp_quote("#define MDPROPVAL_MSF_DRILLDOWNMEMBERTOP					0x00001000L")
cpp_quote("#define MDPROPVAL_MSF_DRILLDOWNMEMBERBOTTOM				0x00002000L")
cpp_quote("#define MDPROPVAL_MSF_DRILLDOWNLEVELTOP					0x00004000L")
cpp_quote("#define MDPROPVAL_MSF_DRILLDOWNLEVELBOTTOM				0x00008000L")
cpp_quote("#define MDPROPVAL_MSF_DRILLUPMEMBER						0x00010000L")
cpp_quote("#define MDPROPVAL_MSF_DRILLUPLEVEL						0x00020000L")
cpp_quote("#define MDPROPVAL_MSF_TOGGLEDRILLSTATE					0x00040000L")

cpp_quote("// values for MDPROP_MDX_DESCFLAGS")
cpp_quote("#define MDPROPVAL_MD_SELF								0x00000001L")
cpp_quote("#define MDPROPVAL_MD_BEFORE								0x00000002L")
cpp_quote("#define MDPROPVAL_MD_AFTER								0x00000004L")
cpp_quote("// values for MDPROP_MDX_STRING_COMPOP")
cpp_quote("#define MDPROPVAL_MSC_LESSTHAN							0x00000001L")
cpp_quote("#define MDPROPVAL_MSC_GREATERTHAN						0x00000002L")
cpp_quote("#define MDPROPVAL_MSC_LESSTHANEQUAL						0x00000004L")
cpp_quote("#define MDPROPVAL_MSC_GREATERTHANEQUAL					0x00000008L")
cpp_quote("#define MDPROPVAL_MC_SINGLECASE							0x00000001L")
cpp_quote("#define MDPROPVAL_MC_SEARCHEDCASE						0x00000002L")
cpp_quote("#define MDPROPVAL_MOQ_OUTERREFERENCE						0x00000001L")
cpp_quote("#define MDPROPVAL_MOQ_DATASOURCE_CUBE					0x00000001L")
cpp_quote("#define MDPROPVAL_MOQ_CATALOG_CUBE						0x00000002L")
cpp_quote("#define MDPROPVAL_MOQ_SCHEMA_CUBE						0x00000004L")
cpp_quote("#define MDPROPVAL_MOQ_CUBE_DIM							0x00000008L")
cpp_quote("#define MDPROPVAL_MOQ_DIM_HIER							0x00000010L")
cpp_quote("#define MDPROPVAL_MOQ_DIMHIER_LEVEL						0x00000020L")
cpp_quote("#define MDPROPVAL_MOQ_LEVEL_MEMBER						0x00000040L")
cpp_quote("#define MDPROPVAL_MOQ_MEMBER_MEMBER						0x00000080L")
cpp_quote("#define MDPROPVAL_MOQ_DIMHIER_MEMBER						0x00000100L")
cpp_quote("#define MDPROPVAL_FS_FULL_SUPPORT						0x00000001L")
cpp_quote("#define MDPROPVAL_FS_GENERATED_COLUMN					0x00000002L")
cpp_quote("#define MDPROPVAL_FS_GENERATED_DIMENSION					0x00000003L")
cpp_quote("#define MDPROPVAL_FS_NO_SUPPORT							0x00000004L")
cpp_quote("#define MDPROPVAL_NL_NAMEDLEVELS							0x00000001L")
cpp_quote("#define MDPROPVAL_NL_NUMBEREDLEVELS						0x00000002L")
cpp_quote("#define MDPROPVAL_MJC_SINGLECUBE							0x00000001L")
cpp_quote("#define MDPROPVAL_MJC_MULTICUBES							0x00000002L")
cpp_quote("#define MDPROPVAL_MJC_IMPLICITCUBE						0x00000004L")
cpp_quote("#define MDPROPVAL_RR_NORANGEROWSET						0x00000001L")
cpp_quote("#define MDPROPVAL_RR_READONLY							0x00000002L")
cpp_quote("#define MDPROPVAL_RR_UPDATE								0x00000004L")
cpp_quote("#define MDPROPVAL_MS_MULTIPLETUPLES						0x00000001L")
cpp_quote("#define MDPROPVAL_MS_SINGLETUPLE						0x00000002L")
cpp_quote("#define MDPROPVAL_NME_ALLDIMENSIONS						0x00000000L")
cpp_quote("#define MDPROPVAL_NME_MEASURESONLY						0x00000001L")

cpp_quote("#define DBPROPVAL_AO_SEQUENTIAL							0x00000000L")
cpp_quote("#define DBPROPVAL_AO_SEQUENTIALSTORAGEOBJECTS			0x00000001L")
cpp_quote("#define DBPROPVAL_AO_RANDOM								0x00000002L")

cpp_quote("#define DBPROPVAL_BD_ROWSET								0x00000000L")
cpp_quote("#define DBPROPVAL_BD_INTRANSACTION						0x00000001L")
cpp_quote("#define DBPROPVAL_BD_XTRANSACTION						0x00000002L")
cpp_quote("#define DBPROPVAL_BD_REORGANIZATION						0x00000003L")

cpp_quote("#define BMK_DURABILITY_ROWSET							DBPROPVAL_BD_ROWSET")
cpp_quote("#define BMK_DURABILITY_INTRANSACTION						DBPROPVAL_BD_INTRANSACTION")
cpp_quote("#define BMK_DURABILITY_XTRANSACTION						DBPROPVAL_BD_XTRANSACTION")
cpp_quote("#define BMK_DURABILITY_REORGANIZATION					DBPROPVAL_BD_REORGANIZATION")

cpp_quote("#define DBPROPVAL_BO_NOLOG								0x00000000L")
cpp_quote("#define DBPROPVAL_BO_NOINDEXUPDATE						0x00000001L")
cpp_quote("#define DBPROPVAL_BO_REFINTEGRITY						0x00000002L")
cpp_quote("#if !defined(_WINBASE_)")
cpp_quote("#define OF_READ             0x00000000")
cpp_quote("#define OF_WRITE            0x00000001")
cpp_quote("#define OF_READWRITE        0x00000002")
cpp_quote("#define OF_SHARE_COMPAT     0x00000000")
cpp_quote("#define OF_SHARE_EXCLUSIVE  0x00000010")
cpp_quote("#define OF_SHARE_DENY_WRITE 0x00000020")
cpp_quote("#define OF_SHARE_DENY_READ  0x00000030")
cpp_quote("#define OF_SHARE_DENY_NONE  0x00000040")
cpp_quote("#define OF_PARSE            0x00000100")
cpp_quote("#define OF_DELETE           0x00000200")
cpp_quote("#define OF_VERIFY           0x00000400")
cpp_quote("#define OF_CANCEL           0x00000800")
cpp_quote("#define OF_CREATE           0x00001000")
cpp_quote("#define OF_PROMPT           0x00002000")
cpp_quote("#define OF_EXIST            0x00004000")
cpp_quote("#define OF_REOPEN           0x00008000")
cpp_quote("#endif // !_WINBASE_")
cpp_quote("#define DBPROPVAL_STGM_READ					OF_READ")
cpp_quote("#define DBPROPVAL_STGM_WRITE					OF_WRITE")
cpp_quote("#define DBPROPVAL_STGM_READWRITE				OF_READWRITE")
cpp_quote("#define DBPROPVAL_STGM_SHARE_DENY_NONE		OF_SHARE_DENY_NONE")
cpp_quote("#define DBPROPVAL_STGM_SHARE_DENY_READ		OF_SHARE_DENY_READ")
cpp_quote("#define DBPROPVAL_STGM_SHARE_DENY_WRITE		OF_SHARE_DENY_WRITE")
cpp_quote("#define DBPROPVAL_STGM_SHARE_EXCLUSIVE		OF_SHARE_EXCLUSIVE")
cpp_quote("#define DBPROPVAL_STGM_DIRECT				0x00010000")
cpp_quote("#define DBPROPVAL_STGM_TRANSACTED			0x00020000")
cpp_quote("#define DBPROPVAL_STGM_CREATE				OF_CREATE")
cpp_quote("#define DBPROPVAL_STGM_CONVERT				0x00040000")
cpp_quote("#define DBPROPVAL_STGM_FAILIFTHERE			0x00080000")
cpp_quote("#define DBPROPVAL_STGM_PRIORITY				0x00100000")
cpp_quote("#define DBPROPVAL_STGM_DELETEONRELEASE		0x00200000")
cpp_quote("#define DBPROPVAL_GB_COLLATE 				0x00000010L")
cpp_quote("#define DBPROPVAL_CS_UNINITIALIZED			0x00000000L")
cpp_quote("#define DBPROPVAL_CS_INITIALIZED				0x00000001L")
cpp_quote("#define DBPROPVAL_CS_COMMUNICATIONFAILURE	0x00000002L")

cpp_quote("#define DBPROPVAL_RD_RESETALL		0xffffffffL")
cpp_quote("#define DBPROPVAL_OS_RESOURCEPOOLING	0x00000001L")
cpp_quote("#define DBPROPVAL_OS_TXNENLISTMENT	0x00000002L")
cpp_quote("#define DBPROPVAL_OS_CLIENTCURSOR    0x00000004L")
cpp_quote("#define DBPROPVAL_OS_ENABLEALL		0xffffffffL")
cpp_quote("#define DBPROPVAL_BI_CROSSROWSET		0x00000001L")

cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

// VERSION 2.1
cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
cpp_quote("#define MDPROPVAL_NL_SCHEMAONLY                          0x00000004L")

cpp_quote("#define DBPROPVAL_OS_DISABLEALL	0x00000000L")

cpp_quote("#define DBPROPVAL_OO_ROWOBJECT							0x00000004L")
cpp_quote("#define DBPROPVAL_OO_SCOPED								0x00000008L")
cpp_quote("#define DBPROPVAL_OO_DIRECTBIND							0x00000010L")

cpp_quote("#define DBPROPVAL_DST_DOCSOURCE                          0x00000004L")

cpp_quote("#define DBPROPVAL_GU_NOTSUPPORTED                         0x00000001L")
cpp_quote("#define DBPROPVAL_GU_SUFFIX		                         0x00000002L")

cpp_quote("#define DB_BINDFLAGS_DELAYFETCHCOLUMNS                    0x00000001L")
cpp_quote("#define DB_BINDFLAGS_DELAYFETCHSTREAM                     0x00000002L")
cpp_quote("#define DB_BINDFLAGS_RECURSIVE		                     0x00000004L")
cpp_quote("#define DB_BINDFLAGS_OUTPUT								 0x00000008L")
cpp_quote("#define DB_BINDFLAGS_COLLECTION							 0x00000010L")
cpp_quote("#define DB_BINDFLAGS_OPENIFEXISTS						 0x00000020L")
cpp_quote("#define DB_BINDFLAGS_OVERWRITE							 0x00000040L")
cpp_quote("#define DB_BINDFLAGS_ISSTRUCTUREDDOCUMENT				 0x00000080L")

cpp_quote("#define DBPROPVAL_ORS_TABLE								 0x00000000L")
cpp_quote("#define DBPROPVAL_ORS_INDEX                               0x00000001L")
cpp_quote("#define DBPROPVAL_ORS_INTEGRATEDINDEX		             0x00000002L")

cpp_quote("#define DBPROPVAL_TC_DDL_LOCK							 0x00000010L")

cpp_quote("#define DBPROPVAL_ORS_STOREDPROC							 0x00000004L")

cpp_quote("#define DBPROPVAL_IN_ALLOWNULL	                         0x00000000L")

cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")


// VERSION 2.5
cpp_quote("//@@@+ V2.5")
cpp_quote("#if( OLEDBVER >= 0x0250 )")

cpp_quote("#define DBPROPVAL_OO_SINGLETON							0x00000020L")
cpp_quote("#define DBPROPVAL_OS_AGR_AFTERSESSION					0x00000008L")

cpp_quote("#define DBPROPVAL_CM_TRANSACTIONS						0x00000001L")
cpp_quote("#endif // OLEDBVER >= 0x0250")
cpp_quote("//@@@- V2.5")


// VERSION 2.6
cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")

cpp_quote("#define DBPROPVAL_TS_CARDINALITY							0x00000001L")
cpp_quote("#define DBPROPVAL_TS_HISTOGRAM							0x00000002L")

cpp_quote("#define DBPROPVAL_ORS_HISTOGRAM							0x00000008L")

cpp_quote("#define MDPROPVAL_VISUAL_MODE_DEFAULT					0x00000000L")
cpp_quote("#define MDPROPVAL_VISUAL_MODE_VISUAL						0x00000001L")
cpp_quote("#define MDPROPVAL_VISUAL_MODE_VISUAL_OFF					0x00000002L")

cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")


cpp_quote("#define DB_IMP_LEVEL_ANONYMOUS       0x00")
cpp_quote("#define DB_IMP_LEVEL_IDENTIFY        0x01")
cpp_quote("#define DB_IMP_LEVEL_IMPERSONATE     0x02")
cpp_quote("#define DB_IMP_LEVEL_DELEGATE        0x03")

cpp_quote("#define DBPROMPT_PROMPT              0x01")
cpp_quote("#define DBPROMPT_COMPLETE            0x02")
cpp_quote("#define DBPROMPT_COMPLETEREQUIRED    0x03")
cpp_quote("#define DBPROMPT_NOPROMPT            0x04")

cpp_quote("#define DB_PROT_LEVEL_NONE           0x00")
cpp_quote("#define DB_PROT_LEVEL_CONNECT        0x01")
cpp_quote("#define DB_PROT_LEVEL_CALL           0x02")
cpp_quote("#define DB_PROT_LEVEL_PKT            0x03")
cpp_quote("#define DB_PROT_LEVEL_PKT_INTEGRITY  0x04")
cpp_quote("#define DB_PROT_LEVEL_PKT_PRIVACY    0x05")

cpp_quote("#define DB_MODE_READ                 0x01")
cpp_quote("#define DB_MODE_WRITE                0x02")
cpp_quote("#define DB_MODE_READWRITE            0x03")
cpp_quote("#define DB_MODE_SHARE_DENY_READ      0x04")
cpp_quote("#define DB_MODE_SHARE_DENY_WRITE     0x08")
cpp_quote("#define DB_MODE_SHARE_EXCLUSIVE		0x0c")
cpp_quote("#define DB_MODE_SHARE_DENY_NONE		0x10")

cpp_quote("#define DBCOMPUTEMODE_COMPUTED       0x01")
cpp_quote("#define DBCOMPUTEMODE_DYNAMIC        0x02")
cpp_quote("#define DBCOMPUTEMODE_NOTCOMPUTED    0x03")

cpp_quote("#define DBPROPVAL_DF_INITIALLY_DEFERRED      0x01")
cpp_quote("#define DBPROPVAL_DF_INITIALLY_IMMEDIATE     0x02")
cpp_quote("#define DBPROPVAL_DF_NOT_DEFERRABLE		    0x03")

	//
	// DBPARAMS structure and related defintions
	//

typedef struct tagDBPARAMS {
	void * pData;
	DB_UPARAMS cParamSets;
	HACCESSOR hAccessor;
} DBPARAMS;

typedef DWORD DBPARAMFLAGS;

enum DBPARAMFLAGSENUM {
	DBPARAMFLAGS_ISINPUT		= 0x001,
	DBPARAMFLAGS_ISOUTPUT		= 0x002,
	DBPARAMFLAGS_ISSIGNED		= 0x010,
	DBPARAMFLAGS_ISNULLABLE		= 0x040,
	DBPARAMFLAGS_ISLONG			= 0x080,	
};

cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBPARAMFLAGSENUM20 {
	DBPARAMFLAGS_SCALEISNEGATIVE = 0x100,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

typedef struct tagDBPARAMINFO {
	DBPARAMFLAGS dwFlags;
	DBORDINAL iOrdinal;
	LPOLESTR pwszName;
	ITypeInfo * pTypeInfo;
	DBLENGTH ulParamSize;
	DBTYPE wType;
	BYTE bPrecision;
	BYTE bScale;
} DBPARAMINFO;

	//
	//	Property structs and related definitions
	//

typedef DWORD DBPROPID;

typedef struct tagDBPROPIDSET {
	[size_is(cPropertyIDs)] DBPROPID * rgPropertyIDs;
	ULONG cPropertyIDs;
	GUID guidPropertySet;
} DBPROPIDSET;

typedef DWORD DBPROPFLAGS;

enum DBPROPFLAGSENUM {
	DBPROPFLAGS_NOTSUPPORTED		= 0x0000,
	DBPROPFLAGS_COLUMN				= 0x0001,
	DBPROPFLAGS_DATASOURCE			= 0x0002,
	DBPROPFLAGS_DATASOURCECREATE	= 0x0004,
	DBPROPFLAGS_DATASOURCEINFO		= 0x0008,
	DBPROPFLAGS_DBINIT				= 0x0010,
	DBPROPFLAGS_INDEX				= 0x0020,
	DBPROPFLAGS_ROWSET				= 0x0040,
	DBPROPFLAGS_TABLE				= 0x0080,
	DBPROPFLAGS_COLUMNOK			= 0x0100,
	DBPROPFLAGS_READ				= 0x0200,
	DBPROPFLAGS_WRITE				= 0x0400,
	DBPROPFLAGS_REQUIRED			= 0x0800,
	DBPROPFLAGS_SESSION				= 0x1000,
};

cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
enum DBPROPFLAGSENUM21 {
	DBPROPFLAGS_TRUSTEE			= 0x2000,
};
cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

cpp_quote("//@@@+ V2.5")
cpp_quote("#if( OLEDBVER >= 0x0250 )")
enum DBPROPFLAGSENUM25 {
	DBPROPFLAGS_VIEW			= 0x4000,
};
cpp_quote("#endif // OLEDBVER >= 0x0250")
cpp_quote("//@@@- V2.5")

cpp_quote("//@@@+ V2.6")
cpp_quote("#if( OLEDBVER >= 0x0260 )")
enum DBPROPFLAGSENUM26 {
	DBPROPFLAGS_STREAM			= 0x8000,
};
cpp_quote("#endif // OLEDBVER >= 0x0260")
cpp_quote("//@@@- V2.6")

typedef struct tagDBPROPINFO {
	LPOLESTR pwszDescription;
	DBPROPID dwPropertyID;
	DBPROPFLAGS dwFlags;
	VARTYPE vtType;
	VARIANT vValues;
} DBPROPINFO;


typedef DBPROPINFO * PDBPROPINFO;

typedef struct tagDBPROPINFOSET
{
	[size_is(cPropertyInfos)] PDBPROPINFO rgPropertyInfos;
	ULONG cPropertyInfos;
	GUID guidPropertySet;
} DBPROPINFOSET;

typedef DWORD DBPROPOPTIONS;

cpp_quote("// DBPROPOPTIONS_SETIFCHEAP is deprecated; use DBPROPOPTIONS_OPTIONAL instead.")
enum DBPROPOPTIONSENUM {
	DBPROPOPTIONS_REQUIRED = 0x0000,
	DBPROPOPTIONS_SETIFCHEAP = 0x0001,
	DBPROPOPTIONS_OPTIONAL = 0x0001,
};

typedef DWORD DBPROPSTATUS;

enum DBPROPSTATUSENUM {
	DBPROPSTATUS_OK = 0,
	DBPROPSTATUS_NOTSUPPORTED = 1,
	DBPROPSTATUS_BADVALUE = 2,
	DBPROPSTATUS_BADOPTION = 3,
	DBPROPSTATUS_BADCOLUMN = 4,
	DBPROPSTATUS_NOTALLSETTABLE = 5,
	DBPROPSTATUS_NOTSETTABLE = 6,
	DBPROPSTATUS_NOTSET = 7,
	DBPROPSTATUS_CONFLICTING = 8,
};

cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")
enum DBPROPSTATUSENUM21 {
	DBPROPSTATUS_NOTAVAILABLE = 9,
};

cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

typedef struct tagDBPROP {
	DBPROPID dwPropertyID;
	DBPROPOPTIONS dwOptions;
	DBPROPSTATUS dwStatus;
	DBID colid;
	VARIANT vValue;
} DBPROP;

typedef struct tagDBPROPSET {
	[size_is(cProperties)] DBPROP * rgProperties;
	ULONG cProperties;
	GUID guidPropertySet;
} DBPROPSET;

	//
	//	Schema definitions
	//

cpp_quote("#define DBPARAMTYPE_INPUT			0x01")
cpp_quote("#define DBPARAMTYPE_INPUTOUTPUT		0x02")
cpp_quote("#define DBPARAMTYPE_OUTPUT			0x03")
cpp_quote("#define DBPARAMTYPE_RETURNVALUE		0x04")

cpp_quote("#define DB_PT_UNKNOWN				0x01")
cpp_quote("#define DB_PT_PROCEDURE				0x02")
cpp_quote("#define DB_PT_FUNCTION				0x03")

cpp_quote("#define DB_REMOTE					0x01")
cpp_quote("#define DB_LOCAL_SHARED				0x02")
cpp_quote("#define DB_LOCAL_EXCLUSIVE			0x03")

cpp_quote("#define DB_COLLATION_ASC				0x01")
cpp_quote("#define DB_COLLATION_DESC			0x02")

cpp_quote("#define DB_UNSEARCHABLE				0x01")
cpp_quote("#define DB_LIKE_ONLY					0x02")
cpp_quote("#define DB_ALL_EXCEPT_LIKE			0x03")
cpp_quote("#define DB_SEARCHABLE				0x04")

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")

cpp_quote("#define MDTREEOP_CHILDREN            0x01")
cpp_quote("#define MDTREEOP_SIBLINGS            0x02")
cpp_quote("#define MDTREEOP_PARENT              0x04")
cpp_quote("#define MDTREEOP_SELF                0x08")
cpp_quote("#define MDTREEOP_DESCENDANTS         0x10")
cpp_quote("#define MDTREEOP_ANCESTORS			0x20")

cpp_quote("#define MD_DIMTYPE_UNKNOWN           0x00")
cpp_quote("#define MD_DIMTYPE_TIME              0x01")
cpp_quote("#define MD_DIMTYPE_MEASURE           0x02")
cpp_quote("#define MD_DIMTYPE_OTHER             0x03")

cpp_quote("#define MDLEVEL_TYPE_UNKNOWN         0x0000")
cpp_quote("#define MDLEVEL_TYPE_REGULAR         0x0000")
cpp_quote("#define MDLEVEL_TYPE_ALL             0x0001")
cpp_quote("#define MDLEVEL_TYPE_CALCULATED      0x0002")
cpp_quote("#define MDLEVEL_TYPE_TIME            0x0004")
cpp_quote("#define MDLEVEL_TYPE_RESERVED1       0x0008")
cpp_quote("#define MDLEVEL_TYPE_TIME_YEARS      0x0014")
cpp_quote("#define MDLEVEL_TYPE_TIME_HALF_YEAR  0x0024")
cpp_quote("#define MDLEVEL_TYPE_TIME_QUARTERS   0x0044")
cpp_quote("#define MDLEVEL_TYPE_TIME_MONTHS     0x0084")
cpp_quote("#define MDLEVEL_TYPE_TIME_WEEKS      0x0104")
cpp_quote("#define MDLEVEL_TYPE_TIME_DAYS       0x0204")
cpp_quote("#define MDLEVEL_TYPE_TIME_HOURS      0x0304")
cpp_quote("#define MDLEVEL_TYPE_TIME_MINUTES    0x0404")
cpp_quote("#define MDLEVEL_TYPE_TIME_SECONDS    0x0804")
cpp_quote("#define MDLEVEL_TYPE_TIME_UNDEFINED  0x1004")

cpp_quote("#define MDMEASURE_AGGR_UNKNOWN       0x00")
cpp_quote("#define MDMEASURE_AGGR_SUM           0x01")
cpp_quote("#define MDMEASURE_AGGR_COUNT         0x02")
cpp_quote("#define MDMEASURE_AGGR_MIN           0x03")
cpp_quote("#define MDMEASURE_AGGR_MAX           0x04")
cpp_quote("#define MDMEASURE_AGGR_AVG           0x05")
cpp_quote("#define MDMEASURE_AGGR_VAR           0x06")
cpp_quote("#define MDMEASURE_AGGR_STD           0x07")
cpp_quote("#define MDMEASURE_AGGR_CALCULATED    0x7f")

cpp_quote("#define MDPROP_MEMBER                0x01")
cpp_quote("#define MDPROP_CELL                  0x02")

cpp_quote("#define MDMEMBER_TYPE_UNKNOWN        0x00")
cpp_quote("#define MDMEMBER_TYPE_REGULAR        0x01")
cpp_quote("#define MDMEMBER_TYPE_ALL            0x02")
cpp_quote("#define MDMEMBER_TYPE_MEASURE        0x03")
cpp_quote("#define MDMEMBER_TYPE_FORMULA        0x04")
cpp_quote("#define MDMEMBER_TYPE_RESERVE1       0x05")
cpp_quote("#define MDMEMBER_TYPE_RESERVE2       0x06")
cpp_quote("#define MDMEMBER_TYPE_RESERVE3       0x07")
cpp_quote("#define MDMEMBER_TYPE_RESERVE4       0x08")
cpp_quote("#define MDDISPINFO_DRILLED_DOWN				0x00010000")
cpp_quote("#define MDDISPINFO_PARENT_SAME_AS_PREV		0x00020000")

cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

	//
	//	Index column definition
	//

typedef DWORD DBINDEX_COL_ORDER;

enum DBINDEX_COL_ORDERENUM {
	DBINDEX_COL_ORDER_ASC,
	DBINDEX_COL_ORDER_DESC,
};

typedef struct tagDBINDEXCOLUMNDESC {
	DBID * pColumnID;
	DBINDEX_COL_ORDER eIndexColOrder;
} DBINDEXCOLUMNDESC;

	//
	//	Column description
	//

typedef struct tagDBCOLUMNDESC {
	LPOLESTR pwszTypeName;
	ITypeInfo * pTypeInfo;
	[size_is(cPropertySets)] DBPROPSET * rgPropertySets;
	CLSID * pclsid;
	ULONG cPropertySets;
	DBLENGTH ulColumnSize;
	DBID dbcid;
	DBTYPE wType;
	BYTE bPrecision;
	BYTE bScale;
} DBCOLUMNDESC;

	//
	//	Column Access
	//
cpp_quote("//@@@+ V2.1")
cpp_quote("#if( OLEDBVER >= 0x0210 )")

typedef struct tagDBCOLUMNACCESS {
	void* 			pData;
	DBID			columnid;
	DBLENGTH		cbDataLen;
	DBSTATUS		dwStatus;
	DBLENGTH		cbMaxLen;
	DB_DWRESERVE	dwReserved;
	DBTYPE			wType;				
	BYTE			bPrecision;
	BYTE			bScale;
} DBCOLUMNACCESS;

cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")

typedef DWORD DBCOLUMNDESCFLAGS;

enum DBCOLUMNDESCFLAGSENUM {
	DBCOLUMNDESCFLAGS_TYPENAME	= 0x0001,
	DBCOLUMNDESCFLAGS_ITYPEINFO	= 0x0002,
	DBCOLUMNDESCFLAGS_PROPERTIES= 0x0004,
	DBCOLUMNDESCFLAGS_CLSID		= 0x0008,
	DBCOLUMNDESCFLAGS_COLSIZE	= 0x0010,
	DBCOLUMNDESCFLAGS_DBCID		= 0x0020,
	DBCOLUMNDESCFLAGS_WTYPE		= 0x0040,
	DBCOLUMNDESCFLAGS_PRECISION	= 0x0080,
	DBCOLUMNDESCFLAGS_SCALE		= 0x0100,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")
	//
	// Notification events and reasons
	//

typedef DWORD DBEVENTPHASE;

enum DBEVENTPHASEENUM {
	DBEVENTPHASE_OKTODO,
	DBEVENTPHASE_ABOUTTODO,
	DBEVENTPHASE_SYNCHAFTER,
	DBEVENTPHASE_FAILEDTODO,
	DBEVENTPHASE_DIDEVENT
};

typedef DWORD DBREASON;

enum DBREASONENUM {
	DBREASON_ROWSET_FETCHPOSITIONCHANGE,
	DBREASON_ROWSET_RELEASE,
	DBREASON_COLUMN_SET,
	DBREASON_COLUMN_RECALCULATED,
	DBREASON_ROW_ACTIVATE,
	DBREASON_ROW_RELEASE,
	DBREASON_ROW_DELETE,
	DBREASON_ROW_FIRSTCHANGE,
	DBREASON_ROW_INSERT,
	DBREASON_ROW_RESYNCH,
	DBREASON_ROW_UNDOCHANGE,
	DBREASON_ROW_UNDOINSERT,
	DBREASON_ROW_UNDODELETE,
	DBREASON_ROW_UPDATE,
	DBREASON_ROWSET_CHANGED, 
};

// VERSION 1.5
cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")
enum DBREASONENUM15 {
	DBREASON_ROWPOSITION_CHANGED = DBREASON_ROWSET_CHANGED + 1,
	DBREASON_ROWPOSITION_CHAPTERCHANGED,
 	DBREASON_ROWPOSITION_CLEARED,
	DBREASON_ROW_ASYNCHINSERT,
};
cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

cpp_quote("//@@@+ V1.5")
cpp_quote("#if( OLEDBVER >= 0x0150 )")

	//
	//	Comparison operations
	//

typedef DWORD DBCOMPAREOP;

enum DBCOMPAREOPSENUM {
	DBCOMPAREOPS_LT = 0,
	DBCOMPAREOPS_LE = 1,
	DBCOMPAREOPS_EQ = 2,
	DBCOMPAREOPS_GE = 3,
	DBCOMPAREOPS_GT = 4,
	DBCOMPAREOPS_BEGINSWITH = 5,
	DBCOMPAREOPS_CONTAINS = 6,
	DBCOMPAREOPS_NE = 7,
	DBCOMPAREOPS_IGNORE = 8,
	DBCOMPAREOPS_CASESENSITIVE = 0x1000,
	DBCOMPAREOPS_CASEINSENSITIVE = 0x2000,
};

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBCOMPAREOPSENUM20 {
	DBCOMPAREOPS_NOTBEGINSWITH = 9,
	DBCOMPAREOPS_NOTCONTAINS = 10,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")
	//
	//	Asynch operations, status codes, and miscellaneous things
	//

typedef DWORD DBASYNCHOP;
enum DBASYNCHOPENUM {
	DBASYNCHOP_OPEN,
};

typedef DWORD DBASYNCHPHASE;
enum DBASYNCHPHASEENUM {
	DBASYNCHPHASE_INITIALIZATION,
	DBASYNCHPHASE_POPULATION,
	DBASYNCHPHASE_COMPLETE,
	DBASYNCHPHASE_CANCELED,
};

cpp_quote("#define DB_COUNTUNAVAILABLE -1")

cpp_quote("#endif // OLEDBVER >= 0x0150")
cpp_quote("//@@@- V1.5")

typedef DWORD DBSORT;

enum DBSORTENUM {
	DBSORT_ASCENDING = 0,
	DBSORT_DESCENDING,
};

	// ICommandPersist
	
cpp_quote("#if( OLEDBVER >= 0x0200 )")	
typedef DWORD DBCOMMANDPERSISTFLAG;

enum DBCOMMANDPERSISTFLAGENUM {
	DBCOMMANDPERSISTFLAG_NOSAVE	= 0x01,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

cpp_quote("#if( OLEDBVER >= 0x0210 )")	
	enum DBCOMMANDPERSISTFLAGENUM21 {
	DBCOMMANDPERSISTFLAG_DEFAULT	= 0x00,
	DBCOMMANDPERSISTFLAG_PERSISTVIEW = 0x02,
	DBCOMMANDPERSISTFLAG_PERSISTPROCEDURE = 0x04,
	};
typedef DWORD DBCONSTRAINTTYPE;

enum DBCONSTRAINTTYPEENUM {
		DBCONSTRAINTTYPE_UNIQUE = 0x0,
		DBCONSTRAINTTYPE_FOREIGNKEY = 0x1,
		DBCONSTRAINTTYPE_PRIMARYKEY = 0x2,
		DBCONSTRAINTTYPE_CHECK = 0x3
	};

typedef DWORD DBUPDELRULE;

enum DBUPDELRULEENUM {
		DBUPDELRULE_NOACTION = 0x0,
		DBUPDELRULE_CASCADE = 0x1,
		DBUPDELRULE_SETNULL = 0x2,
		DBUPDELRULE_SETDEFAULT = 0x3
	};

typedef DWORD DBMATCHTYPE;

enum DBMATCHTYPEENUM {
		DBMATCHTYPE_FULL = 0x0,
		DBMATCHTYPE_NONE = 0x1,
		DBMATCHTYPE_PARTIAL = 0x2
	};

typedef DWORD DBDEFERRABILITY;

enum DBDEFERRABILITYENUM {
		DBDEFERRABILITY_DEFERRED = 0x1,
		DBDEFERRABILITY_DEFERRABLE = 0x2
	};

typedef struct tagDBCONSTRAINTDESC {
		DBID * pConstraintID;
		DBCONSTRAINTTYPE ConstraintType;
		DBORDINAL cColumns;
		[size_is((ULONG)cColumns)] DBID * rgColumnList;
		DBID * pReferencedTableID;
		DBORDINAL cForeignKeyColumns;
		[size_is((ULONG)cForeignKeyColumns)] DBID * rgForeignKeyColumnList;
		OLECHAR * pwszConstraintText;
		DBUPDELRULE UpdateRule;
		DBUPDELRULE DeleteRule;
		DBMATCHTYPE MatchType;
		DBDEFERRABILITY Deferrability;
		DB_URESERVE cReserved;
		[size_is((ULONG)cReserved)] DBPROPSET * rgReserved;
} DBCONSTRAINTDESC;

cpp_quote("#endif // OLEDBVER >= 0x0210")
cpp_quote("//@@@- V2.1")

	//
	//	Tensor additions
	//

// VERSION 2.0
cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")

cpp_quote("#define MDFF_BOLD                    0x01")
cpp_quote("#define MDFF_ITALIC                  0x02")
cpp_quote("#define MDFF_UNDERLINE               0x04")
cpp_quote("#define MDFF_STRIKEOUT               0x08")

typedef struct tagMDAXISINFO {
	DBLENGTH    cbSize;
	DBCOUNTITEM iAxis;
	DBCOUNTITEM cDimensions;
	DBCOUNTITEM cCoordinates;
	DBORDINAL  *rgcColumns;
	LPOLESTR *rgpwszDimensionNames;
} MDAXISINFO;

cpp_quote("#define PMDAXISINFO_GETAT(rgAxisInfo, iAxis) ((MDAXISINFO *)(((BYTE *)(rgAxisInfo)) +((iAxis) * (rgAxisInfo)[0].cbSize)))")
cpp_quote("#define MDAXISINFO_GETAT(rgAxisInfo, iAxis) (*PMDAXISINFO_GETAT((rgAxisInfo), (iAxis)))")

cpp_quote("#define MDAXIS_COLUMNS               0x00000000")
cpp_quote("#define MDAXIS_ROWS                  0x00000001")
cpp_quote("#define MDAXIS_PAGES                 0x00000002")
cpp_quote("#define MDAXIS_SECTIONS              0x00000003")
cpp_quote("#define MDAXIS_CHAPTERS              0x00000004")
cpp_quote("#define MDAXIS_SLICERS               0xffffffff")

cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

	//
	// Interface remoting additions
	//

typedef struct tagRMTPACK {
	ISequentialStream * pISeqStream;
	ULONG cbData;
	ULONG cBSTR;
	[size_is(cBSTR)] BSTR * rgBSTR;
	ULONG cVARIANT;
	[size_is(cVARIANT)] VARIANT * rgVARIANT;
	ULONG cIDISPATCH;
	[size_is(cIDISPATCH)] IDispatch ** rgIDISPATCH;
	ULONG cIUNKNOWN;
	[size_is(cIUNKNOWN)] IUnknown ** rgIUNKNOWN;
	ULONG cPROPVARIANT;
	[size_is(cPROPVARIANT)] PROPVARIANT * rgPROPVARIANT;
	ULONG cArray;
	[size_is(cArray)] VARIANT * rgArray;
} RMTPACK;

}
