#define INITGUID
#include <guiddef.h>


typedef enum tagDBCOLKIND
{
    DBCOLKIND_GUID_NAME = 0,
    DBCOLKIND_GUID_NUMBER = 1,
    DBCOLKIND_NAME = 2
} DBCOLKIND;

typedef struct tagDBCOLUMNID
{
    GUID guid;
    DBCOLKIND dwKind;
    union
    {
        long lNumber;
        wchar_t* lpdbsz;
    };
} DBCOLUMNID;

#define DBCIDGUID {0xfe284700L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}
#define DBBMKGUID {0xf6304bb0L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}

#define DECLARE_COLUMNID    EXTERN_C const DBCOLUMNID DECLSPEC_SELECTANY

DECLARE_COLUMNID COLUMNID_INVALID         = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, -1};
DECLARE_COLUMNID COLUMN_AUTOINCREMENT     = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 0};
DECLARE_COLUMNID COLUMN_BASECOLUMNNAME    = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 1};
DECLARE_COLUMNID COLUMN_BASENAME          = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 2};
DECLARE_COLUMNID COLUMN_BINARYCOMPARABLE  = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 3};
DECLARE_COLUMNID COLUMN_BINDTYPE          = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 4};
DECLARE_COLUMNID COLUMN_CASESENSITIVE     = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 5};
DECLARE_COLUMNID COLUMN_COLLATINGORDER    = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 6};
DECLARE_COLUMNID COLUMN_COLUMNID          = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 7};
DECLARE_COLUMNID COLUMN_CURSORCOLUMN      = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 8};
DECLARE_COLUMNID COLUMN_DATACOLUMN        = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 9};
DECLARE_COLUMNID COLUMN_DEFAULTVALUE      = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 10};
DECLARE_COLUMNID COLUMN_ENTRYIDMAXLENGTH  = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 11};
DECLARE_COLUMNID COLUMN_FIXED             = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 12};
DECLARE_COLUMNID COLUMN_HASDEFAULT        = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 13};
DECLARE_COLUMNID COLUMN_MAXLENGTH         = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 14};
DECLARE_COLUMNID COLUMN_MULTIVALUED       = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 15};
DECLARE_COLUMNID COLUMN_NAME              = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 16};
DECLARE_COLUMNID COLUMN_NULLABLE          = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 17};
DECLARE_COLUMNID COLUMN_PHYSICALSORT      = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 18};
DECLARE_COLUMNID COLUMN_NUMBER            = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 19};
DECLARE_COLUMNID COLUMN_ROWENTRYID        = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 20};
DECLARE_COLUMNID COLUMN_SCALE             = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 21};
DECLARE_COLUMNID COLUMN_SEARCHABLE        = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 22};
DECLARE_COLUMNID COLUMN_TYPE              = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 23};
DECLARE_COLUMNID COLUMN_UNIQUE            = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 24};
DECLARE_COLUMNID COLUMN_UPDATABLE         = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 25};
DECLARE_COLUMNID COLUMN_VERSION           = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 26};
DECLARE_COLUMNID COLUMN_STATUS            = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 27};

DECLARE_COLUMNID COLUMN_BMKTEMPORARY      = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 0};
DECLARE_COLUMNID COLUMN_BMKTEMPORARYREL   = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 1};
DECLARE_COLUMNID COLUMN_BMKCURSOR         = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 2};
DECLARE_COLUMNID COLUMN_BMKCURSORREL      = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 3};
DECLARE_COLUMNID COLUMN_BMKSESSION        = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 4};
DECLARE_COLUMNID COLUMN_BMKSESSIONREL     = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 5};
DECLARE_COLUMNID COLUMN_BMKPERSIST        = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 6};
DECLARE_COLUMNID COLUMN_BMKPERSISTREL     = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 7};


#define DECLARE_BYTE    EXTERN_C const unsigned char DECLSPEC_SELECTANY

DECLARE_BYTE DBBMK_INVALID   = 0x0;
DECLARE_BYTE DBBMK_CURRENT   = 0x1;
DECLARE_BYTE DBBMK_BEGINNING = 0x2;
DECLARE_BYTE DBBMK_END       = 0x3;

