|
|
/*=--------------------------------------------------------------------------=
* ocdb.h *=--------------------------------------------------------------------------= * defines the interfaces and constants for use with the OLE Controls Data * binding interfaces. * * Copyright (c) 1994-1995 Microsoft Corporation, All Rights Reserved. * * * Note: This header file has been modified by Sheridan Software to resolve * name conflicts with other Microsoft header files. All defines, * enumerations and structures have been prefixed with "CURSOR_". * */ #ifndef __OCDB_H_
#undef Delete
#ifdef __cplusplus
extern "C" { #endif
/* CURSOR_LPDBSTRs are MultiByte in 16bits, and Unicode in 32bits.
*/ #if WIN16
#define CURSOR_LPDBSTR LPSTR
#define CURSOR_DBCHAR char
#define CURSOR_ldbstrlen(str) lstrlen(str)
#define CURSOR_ldbstrcpy(a, b) lstrcpy((a), (b))
#define CURSOR_ldbstrcpyn(a,b,n) lstrcpyn((a), (b), (n))
#define CURSOR_ldbstrcmp(a, b) lstrcmp((a), (b))
#define CURSOR_ldbstrcat(a, b) lstrcat((a), (b))
#define CURSOR_ldbstrcmpi(a,b) lstrcmpi((a),(b))
#define CURSOR_DBTEXT(quote) quote
#else
#define CURSOR_LPDBSTR LPWSTR
#define CURSOR_DBCHAR WCHAR
#define CURSOR_ldbstrlen(str) wcslen(str)
#define CURSOR_ldbstrcpy(a, b) wcscpy((a), (b))
#define CURSOR_ldbstrcpyn(a,b,n) wcsncpy((a), (b), (n))
#define CURSOR_ldbstrcmp(a, b) wcscmp((a), (b))
#define CURSOR_ldbstrcat(a, b) wcscat((a), (b))
#define CURSOR_ldbstrcmpi(a,b) wcsicmp((a),(b))
#define CURSOR_DBTEXT(quote) L##quote
#endif /* WIN16 */
typedef CURSOR_LPDBSTR FAR * CURSOR_LPLPDBSTR;
/* Many systems don't have BLOBs defined.
*/ #ifndef _tagCURSOR_BLOB_DEFINED
#define _tagCURSOR_BLOB_DEFINED
#define _CURSOR_BLOB_DEFINED
#define _CURSOR_LPBLOB_DEFINED
typedef struct tagCURSOR_BLOB {
ULONG cbSize; BYTE *pBlobData;
} CURSOR_BLOB, *CURSOR_LPBLOB;
#endif
/*----------------------------------------------------------------------------
* * dbvar.h * *---------------------------------------------------------------------------- */ #ifndef _CURSOR_DBCOLUMNID_DEFINED
#define _CURSOR_DBCOLUMNID_DEFINED
typedef enum tagCURSOR_DBCOLKIND { CURSOR_DBCOLKIND_GUID_NAME = 0, CURSOR_DBCOLKIND_GUID_NUMBER = 1, CURSOR_DBCOLKIND_NAME = 2 } CURSOR_DBCOLKIND;
#define CURSOR_GUID_NAMEONLY {0x88c8d398,0x863c,0x101b,{0xac,0x3b,0x00,0xaa,0x00,0x44,0x77,0x3d}}
#define CURSOR_GUID_NUMBERONLY {0x88c8d399,0x863c,0x101b,{0xac,0x3b,0x00,0xaa,0x00,0x44,0x77,0x3d}}
typedef struct tagCURSOR_DBCOLUMNID { GUID guid; CURSOR_DBCOLKIND dwKind; union { LONG lNumber; CURSOR_LPDBSTR lpdbsz; } ; } CURSOR_DBCOLUMNID; #endif /* ndef _CURSOR_COLUMNID_DEFINED */
#ifndef _CURSOR_DBVARENUM_DEFINED
#define _CURSOR_DBVARENUM_DEFINED
enum CURSOR_DBVARENUM { CURSOR_DBTYPE_EMPTY = 0, CURSOR_DBTYPE_NULL = 1, CURSOR_DBTYPE_I2 = 2, CURSOR_DBTYPE_I4 = 3, CURSOR_DBTYPE_I8 = 20, CURSOR_DBTYPE_R4 = 4, CURSOR_DBTYPE_R8 = 5, CURSOR_DBTYPE_CY = 6, CURSOR_DBTYPE_DATE = 7, CURSOR_DBTYPE_BOOL = 11, CURSOR_DBTYPE_HRESULT = 25, CURSOR_DBTYPE_LPSTR = 30, CURSOR_DBTYPE_LPWSTR = 31, CURSOR_DBTYPE_FILETIME = 64, CURSOR_DBTYPE_BLOB = 65, CURSOR_DBTYPE_UUID = 72, CURSOR_DBTYPE_DBEXPR = 503, CURSOR_DBTYPE_UI2 = 504, CURSOR_DBTYPE_UI4 = 505, CURSOR_DBTYPE_UI8 = 506, CURSOR_DBTYPE_COLUMNID = 507, CURSOR_DBTYPE_BYTES = 508, CURSOR_DBTYPE_CHARS = 509, CURSOR_DBTYPE_WCHARS = 510, CURSOR_DBTYPE_ANYVARIANT = 511 } ; #endif /* ndef _CURSOR_DBVARENUM_DEFINED */
#define CURSOR_DBTYPE_EXT 0x100
#define CURSOR_DBTYPE_VECTOR 0x1000
typedef struct tagCURSOR_DBVARIANT CURSOR_DBVARIANT;
struct FARSTRUCT tagCURSOR_DBVARIANT { VARTYPE vt; unsigned short wReserved1; unsigned short wReserved2; unsigned short wReserved3; union { unsigned char bVal; /* VT_UI1 */ short iVal; /* VT_I2 */ long lVal; /* VT_I4 */ float fltVal; /* VT_R4 */ double dblVal; /* VT_R8 */ #pragma warning(disable: 4237)
VARIANT_BOOL bool; /* (obsolete) */ #pragma warning(default: 4237)
VARIANT_BOOL boolVal; /* VT_BOOL */ SCODE scode; /* VT_ERROR */ CY cyVal; /* VT_CY */ DATE date; /* VT_DATE */ BSTR bstrVal; /* VT_BSTR */ IUnknown FAR* punkVal; /* VT_UNKNOWN */ IDispatch FAR* pdispVal; /* VT_DISPATCH */ SAFEARRAY FAR* parray; /* VT_ARRAY|* */ unsigned char FAR* pbVal; /* VT_BYREF|VT_UI1 */ short FAR* piVal; /* VT_BYREF|VT_I2 */ long FAR* plVal; /* VT_BYREF|VT_I4 */ float FAR* pfltVal; /* VT_BYREF|VT_R4 */ double FAR* pdblVal; /* VT_BYREF|VT_R8 */ VARIANT_BOOL FAR* pbool; /* VT_BYREF|VT_BOOL */ SCODE FAR* pscode; /* VT_BYREF|VT_ERROR */ CY FAR* pcyVal; /* VT_BYREF|VT_CY */ DATE FAR* pdate; /* VT_BYREF|VT_DATE */ BSTR FAR* pbstrVal; /* VT_BYREF|VT_BSTR */ IUnknown FAR* FAR* ppunkVal; /* VT_BYREF|VT_UNKNOWN */ IDispatch FAR* FAR* ppdispVal; /* VT_BYREF|VT_DISPATCH */ SAFEARRAY FAR* FAR* pparray; /* VT_BYREF|VT_ARRAY|* */ VARIANT FAR* pvarVal; /* VT_BYREF|VT_VARIANT */ void FAR* byref; /* Generic ByRef */ // types new to CURSOR_DBVARIANTs
//
CURSOR_BLOB blob; /* VT_BLOB */ CURSOR_DBCOLUMNID *pColumnid; /* CURSOR_DBTYPE_COLUMNID */ LPSTR pszVal; /* VT_LPSTR */ #if WIN32
LPWSTR pwszVal; /* VT_LPWSTR */ LPWSTR FAR *ppwszVal; /* VT_LPWSTR|VT_BYREF */ #endif /* WIN32 */
CURSOR_BLOB FAR *pblob; /* VT_BYREF|VT_BLOB */ CURSOR_DBCOLUMNID **ppColumnid; /* VT_BYREF|CURSOR_DBTYPE_COLUMNID */ CURSOR_DBVARIANT *pdbvarVal; /* VT_BYREF|CURSOR_DBTYPE_VARIANT */ } #if defined(NONAMELESSUNION) || (defined(_MAC) && !defined(__cplusplus) && !defined(_MSC_VER))
u #endif
; };
/*----------------------------------------------------------------------------
* * dbs.h * *---------------------------------------------------------------------------- */ typedef enum tagCURSOR_DBROWFETCH { CURSOR_DBROWFETCH_DEFAULT = 0, CURSOR_DBROWFETCH_CALLEEALLOCATES = 1, CURSOR_DBROWFETCH_FORCEREFRESH = 2 } CURSOR_DBROWFETCH;
typedef struct tagCURSOR_DBFETCHROWS { ULONG cRowsRequested; DWORD dwFlags; VOID HUGEP *pData; VOID HUGEP *pVarData; ULONG cbVarData; ULONG cRowsReturned; } CURSOR_DBFETCHROWS;
#define CURSOR_DB_NOMAXLENGTH (DWORD)0
#define CURSOR_DB_NOVALUE (DWORD)0xFFFFFFFF
#define CURSOR_DB_NULL (DWORD)0xFFFFFFFF
#define CURSOR_DB_EMPTY (DWORD)0xFFFFFFFE
#define CURSOR_DB_USEENTRYID (DWORD)0xFFFFFFFD
#define CURSOR_DB_CANTCOERCE (DWORD)0xFFFFFFFC
#define CURSOR_DB_TRUNCATED (DWORD)0xFFFFFFFB
#define CURSOR_DB_UNKNOWN (DWORD)0xFFFFFFFA
#define CURSOR_DB_NOINFO (DWORD)0xFFFFFFF9
typedef enum tagCURSOR_DBBINDING { CURSOR_DBBINDING_DEFAULT = 0, CURSOR_DBBINDING_VARIANT = 1, CURSOR_DBBINDING_ENTRYID = 2 } CURSOR_DBBINDING;
typedef enum tagCURSOR_DBBINDTYPE { CURSOR_DBBINDTYPE_DATA = 0, CURSOR_DBBINDTYPE_ENTRYID = 1, CURSOR_DBBDINTYPE_EITHER = 2, CURSOR_DBBINDTYPE_BOTH = 3 } CURSOR_DBBINDTYPE;
typedef struct tagCURSOR_DBCOLUMNBINDING { CURSOR_DBCOLUMNID columnID; ULONG obData; ULONG cbMaxLen; ULONG obVarDataLen; ULONG obInfo; DWORD dwBinding; DWORD dwDataType; } CURSOR_DBCOLUMNBINDING;
typedef struct tagCURSOR_DBBINDPARAMS { ULONG cbMaxLen; DWORD dwBinding; DWORD dwDataType; ULONG cbVarDataLen; DWORD dwInfo; void *pData; } CURSOR_DBBINDPARAMS;
#define CURSOR_CID_NUMBER_INVALID -1
#define CURSOR_CID_NUMBER_AUTOINCREMENT 0
#define CURSOR_CID_NUMBER_BASECOLUMNNAME 1
#define CURSOR_CID_NUMBER_BASENAME 2
#define CURSOR_CID_NUMBER_BINARYCOMPARABLE 3
#define CURSOR_CID_NUMBER_BINDTYPE 4
#define CURSOR_CID_NUMBER_CASESENSITIVE 5
#define CURSOR_CID_NUMBER_COLLATINGORDER 6
#define CURSOR_CID_NUMBER_COLUMNID 7
#define CURSOR_CID_NUMBER_CURSORCOLUMN 8
#define CURSOR_CID_NUMBER_DATACOLUMN 9
#define CURSOR_CID_NUMBER_DEFAULTVALUE 10
#define CURSOR_CID_NUMBER_ENTRYIDMAXLENGTH 11
#define CURSOR_CID_NUMBER_FIXED 12
#define CURSOR_CID_NUMBER_HASDEFAULT 13
#define CURSOR_CID_NUMBER_MAXLENGTH 14
#define CURSOR_CID_NUMBER_MULTIVALUED 15
#define CURSOR_CID_NUMBER_NAME 16
#define CURSOR_CID_NUMBER_NULLABLE 17
#define CURSOR_CID_NUMBER_PHYSICALSORT 18
#define CURSOR_CID_NUMBER_NUMBER 19
#define CURSOR_CID_NUMBER_ROWENTRYID 20
#define CURSOR_CID_NUMBER_SCALE 21
#define CURSOR_CID_NUMBER_SEARCHABLE 22
#define CURSOR_CID_NUMBER_TYPE 23
#define CURSOR_CID_NUMBER_UNIQUE 24
#define CURSOR_CID_NUMBER_UPDATABLE 25
#define CURSOR_CID_NUMBER_VERSION 26
#define CURSOR_CID_NUMBER_STATUS 27
/* c and C++ have different meanings for const.
*/ #ifdef __cplusplus
#define EXTERNAL_DEFN extern const
#else
#define EXTERNAL_DEFN const
#endif /* __cplusplus */
#define CURSOR_DBCIDGUID {0xfe284700L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}
#ifdef CURSOR_DBINITCONSTANTS
EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMNID_INVALID = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, -1}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_AUTOINCREMENT = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 0}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BASECOLUMNNAME = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 1}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BASENAME = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 2}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BINARYCOMPARABLE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 3}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BINDTYPE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 4}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_CASESENSITIVE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 5}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_COLLATINGORDER = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 6}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_COLUMNID = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 7}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_CURSORCOLUMN = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 8}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_DATACOLUMN = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 9}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_DEFAULTVALUE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 10}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_ENTRYIDMAXLENGTH = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 11}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_FIXED = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 12}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_HASDEFAULT = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 13}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_MAXLENGTH = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 14}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_MULTIVALUED = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 15}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_NAME = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 16}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_NULLABLE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 17}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_PHYSICALSORT = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 18}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_NUMBER = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 19}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_ROWENTRYID = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 20}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_SCALE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 21}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_SEARCHABLE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 22}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_TYPE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 23}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_UNIQUE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 24}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_UPDATABLE = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 25}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_VERSION = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 26}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_STATUS = {CURSOR_DBCIDGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 27}; #else
extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMNID_INVALID; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_AUTOINCREMENT; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BASECOLUMNNAME; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BASENAME; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BINARYCOMPARABLE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BINDTYPE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_CASESENSITIVE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_COLLATINGORDER; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_COLUMNID; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_CURSORCOLUMN; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_DATACOLUMN; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_DEFAULTVALUE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_ENTRYIDMAXLENGTH; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_FIXED; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_HASDEFAULT; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_MAXLENGTH; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_MULTIVALUED; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_NAME; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_NULLABLE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_PHYSICALSORT; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_NUMBER; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_ROWENTRYID; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_SCALE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_SEARCHABLE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_TYPE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_UNIQUE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_UPDATABLE; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_VERSION; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_STATUS; #endif
#define CURSOR_BMK_NUMBER_BMKTEMPORARY 0
#define CURSOR_BMK_NUMBER_BMKTEMPORARYREL 1
#define CURSOR_BMK_NUMBER_BMKCURSOR 2
#define CURSOR_BMK_NUMBER_BMKCURSORREL 3
#define CURSOR_BMK_NUMBER_BMKSESSION 4
#define CURSOR_BMK_NUMBER_BMKSESSIONREL 5
#define CURSOR_BMK_NUMBER_BMKPERSIST 6
#define CURSOR_BMK_NUMBER_BMKPERSISTREL 7
#define CURSOR_DBBMKGUID {0xf6304bb0L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}
#ifdef CURSOR_DBINITCONSTANTS
EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKTEMPORARY = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 0}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKTEMPORARYREL = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 1}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKCURSOR = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 2}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKCURSORREL = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 3}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKSESSION = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 4}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKSESSIONREL = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 5}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKPERSIST = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 6}; EXTERNAL_DEFN CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKPERSISTREL = {CURSOR_DBBMKGUID, CURSOR_DBCOLKIND_GUID_NUMBER, 7}; #else
extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKINVALID; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKTEMPORARY; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKTEMPORARYREL; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKCURSOR; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKCURSORREL; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKSESSION; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKSESSIONREL; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKPERSIST; extern const CURSOR_DBCOLUMNID NEAR CURSOR_COLUMN_BMKPERSISTREL; #endif
#define CURSOR_DB_BMK_SIZE sizeof(BYTE)
#ifdef CURSOR_DBINITCONSTANTS
EXTERNAL_DEFN BYTE NEAR CURSOR_DBBMK_INVALID = 0x0; EXTERNAL_DEFN BYTE NEAR CURSOR_DBBMK_CURRENT = 0x1; EXTERNAL_DEFN BYTE NEAR CURSOR_DBBMK_BEGINNING = 0x2; EXTERNAL_DEFN BYTE NEAR CURSOR_DBBMK_END = 0x3; #else
extern const BYTE NEAR CURSOR_DBBMK_INVALID; extern const BYTE NEAR CURSOR_DBBMK_CURRENT; extern const BYTE NEAR CURSOR_DBBMK_BEGINNING; extern const BYTE NEAR CURSOR_DBBMK_END; #endif
typedef enum tagCURSOR_DBCOLUMNBINDOPTS { CURSOR_DBCOLUMNBINDOPTS_REPLACE = 0, CURSOR_DBCOLUMNBINDOPTS_ADD = 1 } CURSOR_DBCOLUMNBINDOPTS;
typedef enum tagCURSOR_DBUPDATELOCK { CURSOR_DBUPDATELOCK_PESSIMISTIC = 0, CURSOR_DBUPDATELOCK_OPTIMISTIC = 1 } CURSOR_DBUPDATELOCK;
typedef enum tagCURSOR_DBCOLUMNDATA { CURSOR_DBCOLUMNDATA_UNCHANGED = 0, CURSOR_DBCOLUMNDATA_CHANGED = 1, CURSOR_DBCOLUMNDATA_UNKNOWN = 2 } CURSOR_DBCOLUMNDATA;
typedef enum tagCURSOR_DBROWACTION { CURSOR_DBROWACTION_IGNORE = 0, CURSOR_DBROWACTION_UPDATE = 1, CURSOR_DBROWACTION_DELETE = 2, CURSOR_DBROWACTION_ADD = 3, CURSOR_DBROWACTION_LOCK = 4, CURSOR_DBROWACTION_UNLOCK = 5 } CURSOR_DBROWACTION;
typedef enum tagCURSOR_DBUPDATEABLE { CURSOR_DBUPDATEABLE_UPDATEABLE = 0, CURSOR_DBUPDATEABLE_NOTUPDATEABLE = 1, CURSOR_DBUPDATEABLE_UNKNOWN = 2 } CURSOR_DBUPDATEABLE;
typedef struct tagCURSOR_DBROWSTATUS { HRESULT hrStatus; CURSOR_BLOB Bookmark; } CURSOR_DBROWSTATUS;
typedef enum tagCURSOR_DBEVENTWHATS { CURSOR_DBEVENT_CURRENT_ROW_CHANGED = 1, CURSOR_DBEVENT_CURRENT_ROW_DATA_CHANGED = 2, CURSOR_DBEVENT_NONCURRENT_ROW_DATA_CHANGED = 4, CURSOR_DBEVENT_SET_OF_COLUMNS_CHANGED = 8, CURSOR_DBEVENT_ORDER_OF_COLUMNS_CHANGED = 16, CURSOR_DBEVENT_SET_OF_ROWS_CHANGED = 32, CURSOR_DBEVENT_ORDER_OF_ROWS_CHANGED = 64, CURSOR_DBEVENT_METADATA_CHANGED = 128, CURSOR_DBEVENT_ASYNCH_OP_FINISHED = 256, CURSOR_DBEVENT_FIND_CRITERIA_CHANGED = 512, } CURSOR_DBEVENTWHATS;
typedef enum tagCURSOR_DBREASON { CURSOR_DBREASON_DELETED = 1, CURSOR_DBREASON_INSERTED = 2, CURSOR_DBREASON_MODIFIED = 3, CURSOR_DBREASON_REMOVEDFROMCURSOR = 4, CURSOR_DBREASON_MOVEDINCURSOR = 5, CURSOR_DBREASON_MOVE = 6, CURSOR_DBREASON_FIND = 7, CURSOR_DBREASON_NEWINDEX = 8, CURSOR_DBREASON_ROWFIXUP = 9, CURSOR_DBREASON_RECALC = 10, CURSOR_DBREASON_REFRESH = 11, CURSOR_DBREASON_NEWPARAMETERS = 12, CURSOR_DBREASON_SORTCHANGED = 13, CURSOR_DBREASON_FILTERCHANGED = 14, CURSOR_DBREASON_QUERYSPECCHANGED = 15, CURSOR_DBREASON_SEEK = 16, CURSOR_DBREASON_PERCENT = 17, CURSOR_DBREASON_FINDCRITERIACHANGED = 18, CURSOR_DBREASON_SETRANGECHANGED = 19, CURSOR_DBREASON_ADDNEW = 20, CURSOR_DBREASON_MOVEPERCENT = 21, CURSOR_DBREASON_BEGINTRANSACT = 22, CURSOR_DBREASON_ROLLBACK = 23, CURSOR_DBREASON_COMMIT = 24, CURSOR_DBREASON_CLOSE = 25, CURSOR_DBREASON_BULK_ERROR = 26, CURSOR_DBREASON_BULK_NOTTRANSACTABLE = 27, CURSOR_DBREASON_BULK_ABOUTTOEXECUTE = 28, CURSOR_DBREASON_CANCELUPDATE = 29, CURSOR_DBREASON_SETCOLUMN = 30, CURSOR_DBREASON_EDIT = 31 } CURSOR_DBREASON;
// Arg1 values for CURSOR_DBREASON_FIND
typedef enum tagCURSOR_DBFINDTYPES { CURSOR_DB_FINDFIRST = 1, CURSOR_DB_FINDLAST = 2, CURSOR_DB_FINDNEXT = 3, CURSOR_DB_FINDPRIOR = 4, CURSOR_DB_FIND = 5 } CURSOR_DBFINDTYPES;
typedef struct tagCURSOR_DBNOTIFYREASON { DWORD dwReason; CURSOR_DBVARIANT arg1; CURSOR_DBVARIANT arg2; } CURSOR_DBNOTIFYREASON;
#define CURSOR_DB_E_BADBINDINFO MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e00)
#define CURSOR_DB_E_BADBOOKMARK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e01)
#define CURSOR_DB_E_BADCOLUMNID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e02)
#define CURSOR_DB_E_BADCRITERIA MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e03)
#define CURSOR_DB_E_BADENTRYID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e04)
#define CURSOR_DB_E_BADFRACTION MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e05)
#define CURSOR_DB_E_BADINDEXID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e06)
#define CURSOR_DB_E_BADQUERYSPEC MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e07)
#define CURSOR_DB_E_BADSORTORDER MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e08)
#define CURSOR_DB_E_BADVALUES MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e09)
#define CURSOR_DB_E_CANTCOERCE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0a)
#define CURSOR_DB_E_CANTLOCK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0b)
#define CURSOR_DB_E_COLUMNUNAVAILABLE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0c)
#define CURSOR_DB_E_DATACHANGED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0d)
#define CURSOR_DB_E_INVALIDCOLUMNORDINAL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0e)
#define CURSOR_DB_E_INVALIDINTERFACE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0f)
#define CURSOR_DB_E_LOCKFAILED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e10)
#define CURSOR_DB_E_ROWDELETED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e11)
#define CURSOR_DB_E_ROWTOOSHORT MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e12)
#define CURSOR_DB_E_SCHEMAVIOLATION MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e13)
#define CURSOR_DB_E_SEEKKINDNOTSUPPORTED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e14)
#define CURSOR_DB_E_UPDATEINPROGRESS MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e15)
#define CURSOR_DB_E_USEENTRYID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e16)
#define CURSOR_DB_E_STATEERROR MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e17)
#define CURSOR_DB_E_BADFETCHINFO MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e18)
#define CURSOR_DB_E_NOASYNC MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e19)
#define CURSOR_DB_E_ENTRYIDOPEN MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e1a)
#define CURSOR_DB_E_BUFFERTOOSMALL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e1b)
#define CURSOR_DB_S_BUFFERTOOSMALL MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec0)
#define CURSOR_DB_S_CANCEL MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec1)
#define CURSOR_DB_S_DATACHANGED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec2)
#define CURSOR_DB_S_ENDOFCURSOR MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec3)
#define CURSOR_DB_S_ENDOFRESULTSET MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec4)
#define CURSOR_DB_S_OPERATIONCANCELLED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec5)
#define CURSOR_DB_S_QUERYINTERFACE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec6)
#define CURSOR_DB_S_WORKINGASYNC MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec7)
//#define CURSOR_DB_S_COULDNTCOERCE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec8)
#define CURSOR_DB_S_MOVEDTOFIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec9)
#define CURSOR_DB_S_CURRENTROWUNCHANGED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0eca)
#define CURSOR_DB_S_ROWADDED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecb)
#define CURSOR_DB_S_ROWUPDATED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecc)
#define CURSOR_DB_S_ROWDELETED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecd)
/*----------------------------------------------------------------------------
* * ICursor * *---------------------------------------------------------------------------- */ /* Forward declaration */ //typedef interface ICursor ICursor;
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ Language Binding */ //extern "C" const IID IID_ICursor;
interface ICursor : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetColumnsCursor ( REFIID riid, IUnknown **ppvColumnsCursor, ULONG *pcRows ) = 0;
virtual HRESULT STDMETHODCALLTYPE SetBindings ( ULONG cCol, CURSOR_DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBindings ( ULONG *pcCol, CURSOR_DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetNextRows ( LARGE_INTEGER udlRowsToSkip, CURSOR_DBFETCHROWS *pFetchParams ) = 0;
virtual HRESULT STDMETHODCALLTYPE Requery ( void ) = 0;
};
#else
/* C Language Binding */ //extern const IID IID_ICursor;
typedef struct ICursorVtbl {
HRESULT (STDMETHODCALLTYPE FAR *QueryInterface) ( ICursor FAR *this, REFIID riid, void **ppvObject );
ULONG (STDMETHODCALLTYPE FAR *AddRef) ( ICursor FAR *this );
ULONG (STDMETHODCALLTYPE FAR *Release) ( ICursor FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *GetColumnsCursor) ( ICursor FAR *this, REFIID riid, IUnknown **ppvColumnsCursor, ULONG *pcRows );
HRESULT (STDMETHODCALLTYPE FAR *SetBindings) ( ICursor FAR *this, ULONG cCol, CURSOR_DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetBindings) ( ICursor FAR *this, ULONG *pcCol, CURSOR_DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength );
HRESULT (STDMETHODCALLTYPE FAR *GetNextRows) ( ICursor FAR *this, LARGE_INTEGER udlRowsToSkip, CURSOR_DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *Requery) ( ICursor FAR *this );
} ICursorVtbl;
interface ICursor { ICursorVtbl FAR *lpVtbl; } ;
#ifdef COBJMACROS
#define ICursor_QueryInterface(pI, riid, ppvObject) \
(*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
#define ICursor_AddRef(pI) \
(*(pI)->lpVtbl->AddRef)((pI))
#define ICursor_Release(pI) \
(*(pI)->lpVtbl->Release)((pI))
#define ICursor_GetColumnsCursor(pI, riid, ppvColumnsCursor, pcRows) \
(*(pI)->lpVtbl->GetColumnsCursor)((pI), riid, ppvColumnsCursor, pcRows)
#define ICursor_SetBindings(pI, cCol, rgBoundColumns, cbRowLength, dwFlags) \
(*(pI)->lpVtbl->SetBindings)((pI), cCol, rgBoundColumns, cbRowLength, dwFlags)
#define ICursor_GetBindings(pI, pcCol, prgBoundColumns, pcbRowLength) \
(*(pI)->lpVtbl->GetBindings)((pI), pcCol, prgBoundColumns, pcbRowLength)
#define ICursor_GetNextRows(pI, udlRowsToSkip, pFetchParams) \
(*(pI)->lpVtbl->GetNextRows)((pI), udlRowsToSkip, pFetchParams)
#define ICursor_Requery(pI) \
(*(pI)->lpVtbl->Requery)((pI))
#endif /* COBJMACROS */
#endif
/*----------------------------------------------------------------------------
* * ICursorMove * *---------------------------------------------------------------------------- */ /* Forward declaration */ //typedef interface ICursorMove ICursorMove;
typedef enum tagCURSOR_DBCLONEOPTS { CURSOR_DBCLONEOPTS_DEFAULT = 0, CURSOR_DBCLONEOPTS_SAMEROW = 1 } CURSOR_DBCLONEOPTS;
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ Language Binding */ //extern "C" const IID IID_ICursorMove;
interface ICursorMove : public ICursor { public: virtual HRESULT STDMETHODCALLTYPE Move ( ULONG cbBookmark, void *pBookmark, LARGE_INTEGER dlOffset, CURSOR_DBFETCHROWS *pFetchParams ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBookmark ( CURSOR_DBCOLUMNID *pBookmarkType, ULONG cbMaxSize, ULONG *pcbBookmark, void *pBookmark ) = 0;
virtual HRESULT STDMETHODCALLTYPE Clone ( DWORD dwFlags, REFIID riid, IUnknown **ppvClonedCursor ) = 0;
};
#else
/* C Language Binding */ //extern const IID IID_ICursorMove;
typedef struct ICursorMoveVtbl {
HRESULT (STDMETHODCALLTYPE FAR *QueryInterface) ( ICursorMove FAR *this, REFIID riid, void **ppvObject );
ULONG (STDMETHODCALLTYPE FAR *AddRef) ( ICursorMove FAR *this );
ULONG (STDMETHODCALLTYPE FAR *Release) ( ICursorMove FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *GetColumnsCursor) ( ICursorMove FAR *this, REFIID riid, IUnknown **ppvColumnsCursor, ULONG *pcRows );
HRESULT (STDMETHODCALLTYPE FAR *SetBindings) ( ICursorMove FAR *this, ULONG cCol, CURSOR_DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetBindings) ( ICursorMove FAR *this, ULONG *pcCol, CURSOR_DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength );
HRESULT (STDMETHODCALLTYPE FAR *GetNextRows) ( ICursorMove FAR *this, LARGE_INTEGER udlRowsToSkip, CURSOR_DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *Requery) ( ICursorMove FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *Move) ( ICursorMove FAR *this, ULONG cbBookmark, void *pBookmark, LARGE_INTEGER dlOffset, CURSOR_DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *GetBookmark) ( ICursorMove FAR *this, CURSOR_DBCOLUMNID *pBookmarkType, ULONG cbMaxSize, ULONG *pcbBookmark, void *pBookmark );
HRESULT (STDMETHODCALLTYPE FAR *Clone) ( ICursorMove FAR *this, DWORD dwFlags, REFIID riid, IUnknown **ppvClonedCursor );
} ICursorMoveVtbl;
interface ICursorMove { ICursorMoveVtbl FAR *lpVtbl; } ;
#ifdef COBJMACROS
#define ICursorMove_QueryInterface(pI, riid, ppvObject) \
(*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
#define ICursorMove_AddRef(pI) \
(*(pI)->lpVtbl->AddRef)((pI))
#define ICursorMove_Release(pI) \
(*(pI)->lpVtbl->Release)((pI))
#define ICursorMove_GetColumnsCursor(pI, riid, ppvColumnsCursor, pcRows) \
(*(pI)->lpVtbl->GetColumnsCursor)((pI), riid, ppvColumnsCursor, pcRows)
#define ICursorMove_SetBindings(pI, cCol, rgBoundColumns, cbRowLength, dwFlags) \
(*(pI)->lpVtbl->SetBindings)((pI), cCol, rgBoundColumns, cbRowLength, dwFlags)
#define ICursorMove_GetBindings(pI, pcCol, prgBoundColumns, pcbRowLength) \
(*(pI)->lpVtbl->GetBindings)((pI), pcCol, prgBoundColumns, pcbRowLength)
#define ICursorMove_GetNextRows(pI, udlRowsToSkip, pFetchParams) \
(*(pI)->lpVtbl->GetNextRows)((pI), udlRowsToSkip, pFetchParams)
#define ICursorMove_Requery(pI) \
(*(pI)->lpVtbl->Requery)((pI))
#define ICursorMove_Move(pI, cbBookmark, pBookmark, dlOffset, pFetchParams) \
(*(pI)->lpVtbl->Move)((pI), cbBookmark, pBookmark, dlOffset, pFetchParams)
#define ICursorMove_GetBookmark(pI, pBookmarkType, cbMaxSize, pcbBookmark, pBookmark) \
(*(pI)->lpVtbl->GetBookmark)((pI), pBookmarkType, cbMaxSize, pcbBookmark, pBookmark)
#define ICursorMove_Clone(pI, dwFlags, riid, ppvClonedCursor) \
(*(pI)->lpVtbl->Clone)((pI), dwFlags, riid, ppvClonedCursor) #endif /* COBJMACROS */
#endif
/*----------------------------------------------------------------------------
* * ICursorScroll * *---------------------------------------------------------------------------- */ /* Forward declaration */ //typedef interface ICursorScroll ICursorScroll;
typedef enum tagCURSOR_DBCURSORPOPULATED { CURSOR_DBCURSORPOPULATED_FULLY = 0, CURSOR_DBCURSORPOPULATED_PARTIALLY = 1 } CURSOR_DBCURSORPOPULATED;
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ Language Binding */ //extern "C" const IID IID_ICursorScroll;
interface ICursorScroll : public ICursorMove { public: virtual HRESULT STDMETHODCALLTYPE Scroll ( ULONG ulNumerator, ULONG ulDenominator, CURSOR_DBFETCHROWS *pFetchParams ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetApproximatePosition ( ULONG cbBookmark, void *pBookmark, ULONG *pulNumerator, ULONG *pulDenominator ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetApproximateCount ( LARGE_INTEGER *pudlApproxCount, DWORD *pdwFullyPopulated ) = 0;
};
#else
/* C Language Binding */ //extern const IID IID_ICursorScroll;
typedef struct ICursorScrollVtbl {
HRESULT (STDMETHODCALLTYPE FAR *QueryInterface) ( ICursorScroll FAR *this, REFIID riid, void **ppvObject );
ULONG (STDMETHODCALLTYPE FAR *AddRef) ( ICursorScroll FAR *this );
ULONG (STDMETHODCALLTYPE FAR *Release) ( ICursorScroll FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *GetColumnsCursor) ( ICursorScroll FAR *this, REFIID riid, IUnknown **ppvColumnsCursor, ULONG *pcRows );
HRESULT (STDMETHODCALLTYPE FAR *SetBindings) ( ICursorScroll FAR *this, ULONG cCol, CURSOR_DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetBindings) ( ICursorScroll FAR *this, ULONG *pcCol, CURSOR_DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength );
HRESULT (STDMETHODCALLTYPE FAR *GetNextRows) ( ICursorScroll FAR *this, LARGE_INTEGER udlRowsToSkip, CURSOR_DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *Requery) ( ICursorScroll FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *Move) ( ICursorScroll FAR *this, ULONG cbBookmark, void *pBookmark, LARGE_INTEGER dlOffset, CURSOR_DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *GetBookmark) ( ICursorScroll FAR *this, CURSOR_DBCOLUMNID *pBookmarkType, ULONG cbMaxSize, ULONG *pcbBookmark, void *pBookmark );
HRESULT (STDMETHODCALLTYPE FAR *Clone) ( ICursorScroll FAR *this, DWORD dwFlags, REFIID riid, IUnknown **ppvClonedCursor );
HRESULT (STDMETHODCALLTYPE FAR *Scroll) ( ICursorScroll FAR *this, ULONG ulNumerator, ULONG ulDenominator, CURSOR_DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *GetApproximatePosition) ( ICursorScroll FAR *this, ULONG cbBookmark, void *pBookmark, ULONG *pulNumerator, ULONG *pulDenominator );
HRESULT (STDMETHODCALLTYPE FAR *GetApproximateCount) ( ICursorScroll FAR *this, LARGE_INTEGER *pudlApproxCount, DWORD *pdwFullyPopulated );
} ICursorScrollVtbl;
interface ICursorScroll { ICursorScrollVtbl FAR *lpVtbl; } ;
#ifdef COBJMACROS
#define ICursorScroll_QueryInterface(pI, riid, ppvObject) \
(*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
#define ICursorScroll_AddRef(pI) \
(*(pI)->lpVtbl->AddRef)((pI))
#define ICursorScroll_Release(pI) \
(*(pI)->lpVtbl->Release)((pI))
#define ICursorScroll_GetColumnsCursor(pI, riid, ppvColumnsCursor, pcRows) \
(*(pI)->lpVtbl->GetColumnsCursor)((pI), riid, ppvColumnsCursor, pcRows)
#define ICursorScroll_SetBindings(pI, cCol, rgBoundColumns, cbRowLength, dwFlags) \
(*(pI)->lpVtbl->SetBindings)((pI), cCol, rgBoundColumns, cbRowLength, dwFlags)
#define ICursorScroll_GetBindings(pI, pcCol, prgBoundColumns, pcbRowLength) \
(*(pI)->lpVtbl->GetBindings)((pI), pcCol, prgBoundColumns, pcbRowLength)
#define ICursorScroll_GetNextRows(pI, udlRowsToSkip, pFetchParams) \
(*(pI)->lpVtbl->GetNextRows)((pI), udlRowsToSkip, pFetchParams)
#define ICursorScroll_Requery(pI) \
(*(pI)->lpVtbl->Requery)((pI))
#define ICursorScroll_Move(pI, cbBookmark, pBookmark, dlOffset, pFetchParams) \
(*(pI)->lpVtbl->Move)((pI), cbBookmark, pBookmark, dlOffset, pFetchParams)
#define ICursorScroll_GetBookmark(pI, pBookmarkType, cbMaxSize, pcbBookmark, pBookmark) \
(*(pI)->lpVtbl->GetBookmark)((pI), pBookmarkType, cbMaxSize, pcbBookmark, pBookmark)
#define ICursorScroll_Clone(pI, dwFlags, riid, ppvClonedCursor) \
(*(pI)->lpVtbl->Clone)((pI), dwFlags, riid, ppvClonedCursor)
#define ICursorScroll_Scroll(pI, ulNumerator, ulDenominator, pFetchParams) \
(*(pI)->lpVtbl->Scroll)((pI), ulNumerator, ulDenominator, pFetchParams)
#define ICursorScroll_GetApproximatePosition(pI, cbBookmark, pBookmark, pulNumerator, pulDenominator) \
(*(pI)->lpVtbl->GetApproximatePosition)((pI), cbBookmark, pBookmark, pulNumerator, pulDenominator)
#define ICursorScroll_GetApproximateCount(pI, pudlApproxCount, pdwFullyPopulated) \
(*(pI)->lpVtbl->GetApproximateCount)((pI), pudlApproxCount, pdwFullyPopulated) #endif /* COBJMACROS */
#endif
/*----------------------------------------------------------------------------
* * ICursorUpdateARow * *---------------------------------------------------------------------------- */ /* Forward declaration */ //typedef interface ICursorUpdateARow ICursorUpdateARow;
typedef enum tagCURSOR_DBEDITMODE { CURSOR_DBEDITMODE_NONE = 1, CURSOR_DBEDITMODE_UPDATE = 2, CURSOR_DBEDITMODE_ADD = 3 } CURSOR_DBEDITMODE;
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ Language Binding */ //extern "C" const IID IID_ICursorUpdateARow;
interface ICursorUpdateARow : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE BeginUpdate ( DWORD dwFlags ) = 0;
virtual HRESULT STDMETHODCALLTYPE SetColumn ( CURSOR_DBCOLUMNID *pcid, CURSOR_DBBINDPARAMS *pBindParams ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetColumn ( CURSOR_DBCOLUMNID *pcid, CURSOR_DBBINDPARAMS *pBindParams, DWORD *pdwFlags ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetEditMode ( DWORD *pdwState ) = 0;
virtual HRESULT STDMETHODCALLTYPE Update ( CURSOR_DBCOLUMNID *pBookmarkType, ULONG *pcbBookmark, void **ppBookmark ) = 0;
virtual HRESULT STDMETHODCALLTYPE Cancel ( void ) = 0;
virtual HRESULT STDMETHODCALLTYPE Delete ( void ) = 0;
};
#else
/* C Language Binding */ //extern const IID IID_ICursorUpdateARow;
typedef struct ICursorUpdateARowVtbl {
HRESULT (STDMETHODCALLTYPE FAR *QueryInterface) ( ICursorUpdateARow FAR *this, REFIID riid, void **ppvObject );
ULONG (STDMETHODCALLTYPE FAR *AddRef) ( ICursorUpdateARow FAR *this );
ULONG (STDMETHODCALLTYPE FAR *Release) ( ICursorUpdateARow FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *BeginUpdate) ( ICursorUpdateARow FAR *this, DWORD dwFlags );
HRESULT (STDMETHODCALLTYPE FAR *SetColumn) ( ICursorUpdateARow FAR *this, CURSOR_DBCOLUMNID *pcid, CURSOR_DBBINDPARAMS *pBindParams );
HRESULT (STDMETHODCALLTYPE FAR *GetColumn) ( ICursorUpdateARow FAR *this, CURSOR_DBCOLUMNID *pcid, CURSOR_DBBINDPARAMS *pBindParams, DWORD *pdwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetEditMode) ( ICursorUpdateARow FAR *this, DWORD *pdwState );
HRESULT (STDMETHODCALLTYPE FAR *Update) ( ICursorUpdateARow FAR *this, CURSOR_DBCOLUMNID *pBookmarkType, ULONG *pcbBookmark, void **ppBookmark );
HRESULT (STDMETHODCALLTYPE FAR *Cancel) ( ICursorUpdateARow FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *Delete) ( ICursorUpdateARow FAR *this );
} ICursorUpdateARowVtbl;
interface ICursorUpdateARow { ICursorUpdateARowVtbl FAR *lpVtbl; } ;
#ifdef COBJMACROS
#define ICursorUpdateARow_QueryInterface(pI, riid, ppvObject) \
(*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
#define ICursorUpdateARow_AddRef(pI) \
(*(pI)->lpVtbl->AddRef)((pI))
#define ICursorUpdateARow_Release(pI) \
(*(pI)->lpVtbl->Release)((pI))
#define ICursorUpdateARow_BeginUpdate(pI, dwFlags) \
(*(pI)->lpVtbl->BeginUpdate)((pI), dwFlags)
#define ICursorUpdateARow_SetColumn(pI, pcid, pBindParams) \
(*(pI)->lpVtbl->SetColumn)((pI), pcid, pBindParams)
#define ICursorUpdateARow_GetColumn(pI, pcid, pBindParams, pdwFlags) \
(*(pI)->lpVtbl->GetColumn)((pI), pcid, pBindParams, pdwFlags)
#define ICursorUpdateARow_GetEditMode(pI, pdwState) \
(*(pI)->lpVtbl->GetEditMode)((pI), pdwState)
#define ICursorUpdateARow_Update(pI, pBookmarkType, pcbBookmark, ppBookmark) \
(*(pI)->lpVtbl->Update)((pI), pBookmarkType, pcbBookmark, ppBookmark)
#define ICursorUpdateARow_Cancel(pI) \
(*(pI)->lpVtbl->Cancel)((pI))
#define ICursorUpdateARow_Delete(pI) \
(*(pI)->lpVtbl->Delete)((pI))
#endif /* COBJMACROS */
#endif
/*----------------------------------------------------------------------------
* * ICursorFind * *---------------------------------------------------------------------------- */ /* Forward declaration */ //typedef interface ICursorFind ICursorFind;
typedef enum tagCURSOR_DBFINDFLAGS { CURSOR_DBFINDFLAGS_FINDNEXT = 1, CURSOR_DBFINDFLAGS_FINDPRIOR = 2, CURSOR_DBFINDFLAGS_INCLUDECURRENT = 4 } CURSOR_DBFINDFLAGS;
typedef enum tagCURSOR_DBSEEKFLAGS { CURSOR_DBSEEK_LT = 1, CURSOR_DBSEEK_LE = 2, CURSOR_DBSEEK_EQ = 3, // EXACT EQUALITY
CURSOR_DBSEEK_GT = 4, CURSOR_DBSEEK_GE = 5, CURSOR_DBSEEK_PARTIALEQ = 6 // only for strings
} CURSOR_DBSEEKFLAGS;
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ Language Binding */ //extern "C" const IID IID_ICursorFind;
interface ICursorFind : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE FindByValues ( ULONG cbBookmark, LPVOID pBookmark, DWORD dwFindFlags, ULONG cValues, CURSOR_DBCOLUMNID rgColumns[], CURSOR_DBVARIANT rgValues[], DWORD rgdwSeekFlags[], CURSOR_DBFETCHROWS FAR * pFetchParams ) = 0; };
#else
/* C Language Binding */ //extern const IID IID_ICursorFind;
typedef struct ICursorFindVtbl {
HRESULT (STDMETHODCALLTYPE FAR *QueryInterface) ( ICursorFind FAR *this, REFIID riid, void **ppvObject );
ULONG (STDMETHODCALLTYPE FAR *AddRef) ( ICursorFind FAR *this );
ULONG (STDMETHODCALLTYPE FAR *Release) ( ICursorFind FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *FindByValues) ( ICursorFind FAR *this, ULONG cbBookmark, LPVOID pBookmark, DWORD dwFindFlags, ULONG cValues, CURSOR_DBCOLUMNID rgColumns[], CURSOR_DBVARIANT rgValues[], DWORD rgdwSeekFlags[], CURSOR_DBFETCHROWS FAR * pFetchParams );
} ICursorFindVtbl;
interface ICursorFind { ICursorFindVtbl FAR *lpVtbl; } ;
#ifdef COBJMACROS
#define ICursorFind_QueryInterface(pI, riid, ppvObject) \
(*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
#define ICursorFind_AddRef(pI) \
(*(pI)->lpVtbl->AddRef)((pI))
#define ICursorFind_Release(pI) \
(*(pI)->lpVtbl->Release)((pI))
#define ICursorFind_FindByValues(pI, cbB, pB, dwFF, cV, rgC, rgV, rgSF, pF) \
(*(pI)->lpVtbl->FindByValues)((pI), cbB, pB, dwFF, cB, rgC, rgV, rgSF, pF)
#endif /* COBJMACROS */
#endif
/*----------------------------------------------------------------------------
* * IEntryID * *---------------------------------------------------------------------------- */ /* Forward declaration */ //typedef interface IEntryID IEntryID;
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ Language Binding */ //extern "C" const IID IID_IEntryID;
interface IEntryID : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetInterface ( ULONG cbEntryID, void *pEntryID, DWORD dwFlags, REFIID riid, IUnknown **ppvObj ) = 0;
};
#else
/* C Language Binding */ //extern const IID IID_IEntryID;
typedef struct IEntryIDVtbl {
HRESULT (STDMETHODCALLTYPE FAR *QueryInterface) ( IEntryID FAR *this, REFIID riid, void **ppvObject );
ULONG (STDMETHODCALLTYPE FAR *AddRef) ( IEntryID FAR *this );
ULONG (STDMETHODCALLTYPE FAR *Release) ( IEntryID FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *GetInterface) ( IEntryID FAR *this, ULONG cbEntryID, void *pEntryID, REFIID riid, IUnknown **ppvObj );
} IEntryIDVtbl;
interface IEntryID { IEntryIDVtbl FAR *lpVtbl; } ;
#ifdef COBJMACROS
#define IEntryID_QueryInterface(pI, riid, ppvObject) \
(*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
#define IEntryID_AddRef(pI) \
(*(pI)->lpVtbl->AddRef)((pI))
#define IEntryID_Release(pI) \
(*(pI)->lpVtbl->Release)((pI))
#define IEntryID_GetInterface(pI, cbEntryID, pEntryID, riid, ppvObj) \
(*(pI)->lpVtbl->GetInterface)((pI), cbEntryID, pEntryID, riid, ppvObj) #endif /* COBJMACROS */
#endif
/*----------------------------------------------------------------------------
* * INotifyDBEvents * *---------------------------------------------------------------------------- */ /* Forward declaration */ //typedef interface INotifyDBEvents INotifyDBEvents;
#if defined(__cplusplus) && !defined(CINTERFACE)
/* C++ Language Binding */ //extern "C" const IID IID_INotifyDBEvents;
interface INotifyDBEvents : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE OKToDo ( DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE Cancelled ( DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE SyncBefore ( DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE AboutToDo ( DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE FailedToDo ( DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE SyncAfter ( DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE DidEvent ( DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] ) = 0;
};
#else
/* C Language Binding */ extern const IID IID_INotifyDBEvents;
typedef struct INotifyDBEventsVtbl {
HRESULT (STDMETHODCALLTYPE FAR *QueryInterface) ( INotifyDBEvents FAR *this, REFIID riid, void **ppvObject );
ULONG (STDMETHODCALLTYPE FAR *AddRef) ( INotifyDBEvents FAR *this );
ULONG (STDMETHODCALLTYPE FAR *Release) ( INotifyDBEvents FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *OKToDo) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *Cancelled) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *SyncBefore) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *AboutToDo) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *FailedToDo) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *SyncAfter) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *DidEvent) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, CURSOR_DBNOTIFYREASON rgReasons[] );
} INotifyDBEventsVtbl;
interface INotifyDBEvents { INotifyDBEventsVtbl FAR *lpVtbl; } ;
#ifdef COBJMACROS
#define INotifyDBEvents_QueryInterface(pI, riid, ppvObject) \
(*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
#define INotifyDBEvents_AddRef(pI) \
(*(pI)->lpVtbl->AddRef)((pI))
#define INotifyDBEvents_Release(pI) \
(*(pI)->lpVtbl->Release)((pI))
#define INotifyDBEvents_OKToDo(pI, dwEventWhat, cReasons, rgReasons) \
(*(pI)->lpVtbl->OKToDo)((pI), dwEventWhat, cReasons, rgReasons)
#define INotifyDBEvents_Cancelled(pI, dwEventWhat, cReasons, rgReasons) \
(*(pI)->lpVtbl->Cancelled)((pI), dwEventWhat, cReasons, rgReasons)
#define INotifyDBEvents_SyncBefore(pI, dwEventWhat, cReasons, rgReasons) \
(*(pI)->lpVtbl->SyncBefore)((pI), dwEventWhat, cReasons, rgReasons)
#define INotifyDBEvents_AboutToDo(pI, dwEventWhat, cReasons, rgReasons) \
(*(pI)->lpVtbl->AboutToDo)((pI), dwEventWhat, cReasons, rgReasons)
#define INotifyDBEvents_FailedToDo(pI, dwEventWhat, cReasons, rgReasons) \
(*(pI)->lpVtbl->FailedToDo)((pI), dwEventWhat, cReasons, rgReasons)
#define INotifyDBEvents_SyncAfter(pI, dwEventWhat, cReasons, rgReasons) \
(*(pI)->lpVtbl->SyncAfter)((pI), dwEventWhat, cReasons, rgReasons)
#define INotifyDBEvents_DidEvent(pI, dwEventWhat, cReasons, rgReasons) \
(*(pI)->lpVtbl->DidEvent)((pI), dwEventWhat, cReasons, rgReasons) #endif /* COBJMACROS */
#endif
#ifdef __cplusplus
} #endif
#define __OCDB_H_
#endif // __OCDB_H_
|