|
|
/*=--------------------------------------------------------------------------=
* ocdb.h *=--------------------------------------------------------------------------= * defines the interfaces and constants for use with the OLE Controls Data * binding interfaces. * * Copyright (c) 1994-1997 Microsoft Corporation, All Rights Reserved. * * * */ #ifndef __OCDB_H_
#undef Delete
#ifdef __cplusplus
extern "C" { #endif
/* LPDBSTRs are MultiByte in 16bits, and Unicode in 32bits.
*/ #if defined(_WIN32) && !defined(OLE2ANSI)
#define LPDBSTR LPWSTR
#define DBCHAR WCHAR
#define ldbstrlen(str) wcslen(str)
#define ldbstrcpy(a, b) wcscpy((a), (b))
#define ldbstrcpyn(a,b,n) wcsncpy((a), (b), (n))
#define ldbstrcmp(a, b) wcscmp((a), (b))
#define ldbstrcat(a, b) wcscat((a), (b))
#define ldbstrcmpi(a,b) wcsicmp((a),(b))
#define DBTEXT(quote) L##quote
#else
#define LPDBSTR LPSTR
#define DBCHAR char
#define ldbstrlen(str) lstrlen(str)
#define ldbstrcpy(a, b) lstrcpy((a), (b))
#define ldbstrcpyn(a,b,n) lstrcpyn((a), (b), (n))
#define ldbstrcmp(a, b) lstrcmp((a), (b))
#define ldbstrcat(a, b) lstrcat((a), (b))
#define ldbstrcmpi(a,b) lstrcmpi((a),(b))
#define DBTEXT(quote) quote
#endif /* _WIN32 && !OLE2ANSI */
typedef LPDBSTR FAR * LPLPDBSTR;
/* Many systems don't have BLOBs defined.
*/ #ifndef _tagBLOB_DEFINED
#define _tagBLOB_DEFINED
#define _BLOB_DEFINED
#define _LPBLOB_DEFINED
typedef struct tagBLOB {
ULONG cbSize; BYTE *pBlobData;
} BLOB, *LPBLOB;
#endif
/*----------------------------------------------------------------------------
* * dbvar.h * *---------------------------------------------------------------------------- */ #ifndef _DBCOLUMNID_DEFINED
#define _DBCOLUMNID_DEFINED
typedef enum tagDBCOLKIND { DBCOLKIND_GUID_NAME = 0, DBCOLKIND_GUID_NUMBER = 1, DBCOLKIND_NAME = 2 } DBCOLKIND;
#define GUID_NAMEONLY {0x88c8d398,0x863c,0x101b,{0xac,0x3b,0x00,0xaa,0x00,0x44,0x77,0x3d}}
#define GUID_NUMBERONLY {0x88c8d399,0x863c,0x101b,{0xac,0x3b,0x00,0xaa,0x00,0x44,0x77,0x3d}}
typedef struct tagDBCOLUMNID { GUID guid; DBCOLKIND dwKind; union { LONG lNumber; LPDBSTR lpdbsz; } ; } DBCOLUMNID; #endif /* ndef _COLUMNID_DEFINED */
#ifndef _DBVARENUM_DEFINED
#define _DBVARENUM_DEFINED
enum DBVARENUM { 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_BOOL = 11, DBTYPE_UI2 = 18, DBTYPE_UI4 = 19, DBTYPE_I8 = 20, DBTYPE_UI8 = 21, DBTYPE_HRESULT = 25, DBTYPE_LPSTR = 30, DBTYPE_LPWSTR = 31, DBTYPE_FILETIME = 64, DBTYPE_BLOB = 65, DBTYPE_UUID = 72, DBTYPE_DBEXPR = 503, DBTYPE_COLUMNID = 507, DBTYPE_BYTES = 508, DBTYPE_CHARS = 509, DBTYPE_WCHARS = 510, DBTYPE_ANYVARIANT = 511 } ; #endif /* ndef _DBVARENUM_DEFINED */
#define DBTYPE_EXT 0x100
#define DBTYPE_VECTOR 0x1000
typedef struct tagDBVARIANT DBVARIANT;
struct FARSTRUCT tagDBVARIANT{ 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 */ VARIANT_BOOL xbool; /* 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 DBVARIANTs
//
BLOB blob; /* VT_BLOB */ DBCOLUMNID *pColumnid; /* DBTYPE_COLUMNID */ LPSTR pszVal; /* VT_LPSTR */ #ifdef WIN32
LPWSTR pwszVal; /* VT_LPWSTR */ LPWSTR FAR *ppwszVal; /* VT_LPWSTR|VT_BYREF */ #endif /* WIN32 */
BLOB FAR *pblob; /* VT_BYREF|VT_BLOB */ DBCOLUMNID **ppColumnid; /* VT_BYREF|DBTYPE_COLID*/ DBVARIANT *pdbvarVal; /* VT_BYREF|DBTYPE_VARIANT */ } #if defined(NONAMELESSUNION) || (defined(_MAC) && !defined(__cplusplus) && !defined(_MSC_VER))
u #endif
; };
/*----------------------------------------------------------------------------
* * dbs.h * *---------------------------------------------------------------------------- */ typedef enum tagDBROWFETCH { DBROWFETCH_DEFAULT = 0, DBROWFETCH_CALLEEALLOCATES = 1, DBROWFETCH_FORCEREFRESH = 2 } DBROWFETCH;
typedef struct tagDBFETCHROWS { ULONG cRowsRequested; DWORD dwFlags; VOID HUGEP *pData; VOID HUGEP *pVarData; ULONG cbVarData; ULONG cRowsReturned; } DBFETCHROWS;
#define DB_NOMAXLENGTH (DWORD)0
#define DB_NOVALUE (DWORD)0xFFFFFFFF
#define DB_NULL (DWORD)0xFFFFFFFF
#define DB_EMPTY (DWORD)0xFFFFFFFE
#define DB_USEENTRYID (DWORD)0xFFFFFFFD
#define DB_CANTCOERCE (DWORD)0xFFFFFFFC
#define DB_TRUNCATED (DWORD)0xFFFFFFFB
#define DB_UNKNOWN (DWORD)0xFFFFFFFA
#define DB_NOINFO (DWORD)0xFFFFFFF9
typedef enum tagDBBINDING { DBBINDING_DEFAULT = 0, DBBINDING_VARIANT = 1, DBBINDING_ENTRYID = 2 } DBBINDING;
typedef enum tagDBBINDTYPE { DBBINDTYPE_DATA = 0, DBBINDTYPE_ENTRYID = 1, DBBDINTYPE_EITHER = 2, DBBINDTYPE_BOTH = 3 } DBBINDTYPE;
typedef struct tagDBCOLUMNBINDING { DBCOLUMNID columnID; ULONG obData; ULONG cbMaxLen; ULONG obVarDataLen; ULONG obInfo; DWORD dwBinding; DWORD dwDataType; } DBCOLUMNBINDING;
typedef struct tagDBBINDPARAMS { ULONG cbMaxLen; DWORD dwBinding; DWORD dwDataType; ULONG cbVarDataLen; DWORD dwInfo; void *pData; } DBBINDPARAMS;
#define CID_NUMBER_INVALID -1
#define CID_NUMBER_AUTOINCREMENT 0
#define CID_NUMBER_BASECOLUMNNAME 1
#define CID_NUMBER_BASENAME 2
#define CID_NUMBER_BINARYCOMPARABLE 3
#define CID_NUMBER_BINDTYPE 4
#define CID_NUMBER_CASESENSITIVE 5
#define CID_NUMBER_COLLATINGORDER 6
#define CID_NUMBER_COLUMNID 7
#define CID_NUMBER_CURSORCOLUMN 8
#define CID_NUMBER_DATACOLUMN 9
#define CID_NUMBER_DEFAULTVALUE 10
#define CID_NUMBER_ENTRYIDMAXLENGTH 11
#define CID_NUMBER_FIXED 12
#define CID_NUMBER_HASDEFAULT 13
#define CID_NUMBER_MAXLENGTH 14
#define CID_NUMBER_MULTIVALUED 15
#define CID_NUMBER_NAME 16
#define CID_NUMBER_NULLABLE 17
#define CID_NUMBER_PHYSICALSORT 18
#define CID_NUMBER_NUMBER 19
#define CID_NUMBER_ROWENTRYID 20
#define CID_NUMBER_SCALE 21
#define CID_NUMBER_SEARCHABLE 22
#define CID_NUMBER_TYPE 23
#define CID_NUMBER_UNIQUE 24
#define CID_NUMBER_UPDATABLE 25
#define CID_NUMBER_VERSION 26
#define 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 DBCIDGUID {0xfe284700L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}
#ifdef DBINITCONSTANTS
EXTERNAL_DEFN DBCOLUMNID NEAR COLUMNID_INVALID = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, -1}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_AUTOINCREMENT = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 0}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BASECOLUMNNAME = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 1}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BASENAME = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 2}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BINARYCOMPARABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 3}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BINDTYPE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 4}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_CASESENSITIVE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 5}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_COLLATINGORDER = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 6}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_COLUMNID = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 7}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_CURSORCOLUMN = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 8}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_DATACOLUMN = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 9}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_DEFAULTVALUE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 10}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_ENTRYIDMAXLENGTH = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 11}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_FIXED = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 12}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_HASDEFAULT = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 13}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_MAXLENGTH = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 14}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_MULTIVALUED = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 15}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_NAME = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 16}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_NULLABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 17}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_PHYSICALSORT = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 18}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_NUMBER = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 19}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_ROWENTRYID = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 20}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_SCALE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 21}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_SEARCHABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 22}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_TYPE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 23}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_UNIQUE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 24}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_UPDATABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 25}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_VERSION = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 26}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_STATUS = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 27}; #else
extern const DBCOLUMNID NEAR COLUMNID_INVALID; extern const DBCOLUMNID NEAR COLUMN_AUTOINCREMENT; extern const DBCOLUMNID NEAR COLUMN_BASECOLUMNNAME; extern const DBCOLUMNID NEAR COLUMN_BASENAME; extern const DBCOLUMNID NEAR COLUMN_BINARYCOMPARABLE; extern const DBCOLUMNID NEAR COLUMN_BINDTYPE; extern const DBCOLUMNID NEAR COLUMN_CASESENSITIVE; extern const DBCOLUMNID NEAR COLUMN_COLLATINGORDER; extern const DBCOLUMNID NEAR COLUMN_COLUMNID; extern const DBCOLUMNID NEAR COLUMN_CURSORCOLUMN; extern const DBCOLUMNID NEAR COLUMN_DATACOLUMN; extern const DBCOLUMNID NEAR COLUMN_DEFAULTVALUE; extern const DBCOLUMNID NEAR COLUMN_ENTRYIDMAXLENGTH; extern const DBCOLUMNID NEAR COLUMN_FIXED; extern const DBCOLUMNID NEAR COLUMN_HASDEFAULT; extern const DBCOLUMNID NEAR COLUMN_MAXLENGTH; extern const DBCOLUMNID NEAR COLUMN_MULTIVALUED; extern const DBCOLUMNID NEAR COLUMN_NAME; extern const DBCOLUMNID NEAR COLUMN_NULLABLE; extern const DBCOLUMNID NEAR COLUMN_PHYSICALSORT; extern const DBCOLUMNID NEAR COLUMN_NUMBER; extern const DBCOLUMNID NEAR COLUMN_ROWENTRYID; extern const DBCOLUMNID NEAR COLUMN_SCALE; extern const DBCOLUMNID NEAR COLUMN_SEARCHABLE; extern const DBCOLUMNID NEAR COLUMN_TYPE; extern const DBCOLUMNID NEAR COLUMN_UNIQUE; extern const DBCOLUMNID NEAR COLUMN_UPDATABLE; extern const DBCOLUMNID NEAR COLUMN_VERSION; extern const DBCOLUMNID NEAR COLUMN_STATUS; #endif
#define BMK_NUMBER_BMKTEMPORARY 0
#define BMK_NUMBER_BMKTEMPORARYREL 1
#define BMK_NUMBER_BMKCURSOR 2
#define BMK_NUMBER_BMKCURSORREL 3
#define BMK_NUMBER_BMKSESSION 4
#define BMK_NUMBER_BMKSESSIONREL 5
#define BMK_NUMBER_BMKPERSIST 6
#define BMK_NUMBER_BMKPERSISTREL 7
#define DBBMKGUID {0xf6304bb0L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}
#ifdef DBINITCONSTANTS
EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKTEMPORARY = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 0}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKTEMPORARYREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 1}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKCURSOR = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 2}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKCURSORREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 3}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKSESSION = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 4}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKSESSIONREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 5}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKPERSIST = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 6}; EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKPERSISTREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 7}; #else
extern const DBCOLUMNID NEAR COLUMN_BMKINVALID; extern const DBCOLUMNID NEAR COLUMN_BMKTEMPORARY; extern const DBCOLUMNID NEAR COLUMN_BMKTEMPORARYREL; extern const DBCOLUMNID NEAR COLUMN_BMKCURSOR; extern const DBCOLUMNID NEAR COLUMN_BMKCURSORREL; extern const DBCOLUMNID NEAR COLUMN_BMKSESSION; extern const DBCOLUMNID NEAR COLUMN_BMKSESSIONREL; extern const DBCOLUMNID NEAR COLUMN_BMKPERSIST; extern const DBCOLUMNID NEAR COLUMN_BMKPERSISTREL; #endif
#define DB_BMK_SIZE sizeof(BYTE)
#ifdef DBINITCONSTANTS
EXTERNAL_DEFN BYTE NEAR DBBMK_INVALID = 0x0; EXTERNAL_DEFN BYTE NEAR DBBMK_CURRENT = 0x1; EXTERNAL_DEFN BYTE NEAR DBBMK_BEGINNING = 0x2; EXTERNAL_DEFN BYTE NEAR DBBMK_END = 0x3; #else
extern const BYTE NEAR DBBMK_INVALID; extern const BYTE NEAR DBBMK_CURRENT; extern const BYTE NEAR DBBMK_BEGINNING; extern const BYTE NEAR DBBMK_END; #endif
typedef enum tagDBCOLUMNBINDOPTS { DBCOLUMNBINDOPTS_REPLACE = 0, DBCOLUMNBINDOPTS_ADD = 1 } DBCOLUMNBINDOPTS;
typedef enum tagDBUPDATELOCK { DBUPDATELOCK_PESSIMISTIC = 0, DBUPDATELOCK_OPTIMISTIC = 1 } DBUPDATELOCK;
typedef enum tagDBCOLUMNDATA { DBCOLUMNDATA_UNCHANGED = 0, DBCOLUMNDATA_CHANGED = 1, DBCOLUMNDATA_UNKNOWN = 2 } DBCOLUMNDATA;
typedef enum tagDBROWACTION { DBROWACTION_IGNORE = 0, DBROWACTION_UPDATE = 1, DBROWACTION_DELETE = 2, DBROWACTION_ADD = 3, DBROWACTION_LOCK = 4, DBROWACTION_UNLOCK = 5 } DBROWACTION;
typedef enum tagDBUPDATEABLE { DBUPDATEABLE_UPDATEABLE = 0, DBUPDATEABLE_NOTUPDATEABLE = 1, DBUPDATEABLE_UNKNOWN = 2 } DBUPDATEABLE;
typedef struct tagDBROWSTATUS { HRESULT hrStatus; BLOB Bookmark; } DBROWSTATUS;
typedef enum tagDBEVENTWHATS { DBEVENT_CURRENT_ROW_CHANGED = 1, DBEVENT_CURRENT_ROW_DATA_CHANGED = 2, DBEVENT_NONCURRENT_ROW_DATA_CHANGED = 4, DBEVENT_SET_OF_COLUMNS_CHANGED = 8, DBEVENT_ORDER_OF_COLUMNS_CHANGED = 16, DBEVENT_SET_OF_ROWS_CHANGED = 32, DBEVENT_ORDER_OF_ROWS_CHANGED = 64, DBEVENT_METADATA_CHANGED = 128, DBEVENT_ASYNCH_OP_FINISHED = 256, DBEVENT_FIND_CRITERIA_CHANGED = 512, } DBEVENTWHATS;
typedef enum tagDBREASON { DBREASON_DELETED = 1, DBREASON_INSERTED = 2, DBREASON_MODIFIED = 3, DBREASON_REMOVEDFROMCURSOR = 4, DBREASON_MOVEDINCURSOR = 5, DBREASON_MOVE = 6, DBREASON_FIND = 7, DBREASON_NEWINDEX = 8, DBREASON_ROWFIXUP = 9, DBREASON_RECALC = 10, DBREASON_REFRESH = 11, DBREASON_NEWPARAMETERS = 12, DBREASON_SORTCHANGED = 13, DBREASON_FILTERCHANGED = 14, DBREASON_QUERYSPECCHANGED = 15, DBREASON_SEEK = 16, DBREASON_PERCENT = 17, DBREASON_FINDCRITERIACHANGED = 18, DBREASON_SETRANGECHANGED = 19, DBREASON_ADDNEW = 20, DBREASON_MOVEPERCENT = 21, DBREASON_BEGINTRANSACT = 22, DBREASON_ROLLBACK = 23, DBREASON_COMMIT = 24, DBREASON_CLOSE = 25, DBREASON_BULK_ERROR = 26, DBREASON_BULK_NOTTRANSACTABLE = 27, DBREASON_BULK_ABOUTTOEXECUTE = 28, DBREASON_CANCELUPDATE = 29, DBREASON_SETCOLUMN = 30, DBREASON_EDIT = 31, DBREASON_UNLOAD = 32 } DBREASON;
// Arg1 values for DBREASON_FIND
typedef enum tagDBFINDTYPES { DB_FINDFIRST = 1, DB_FINDLAST = 2, DB_FINDNEXT = 3, DB_FINDPRIOR = 4, DB_FIND = 5 } DBFINDTYPES;
typedef struct tagDBNOTIFYREASON { DWORD dwReason; DBVARIANT arg1; DBVARIANT arg2; } DBNOTIFYREASON;
#define DB_E_BADBINDINFO MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e00)
#define DB_E_BADBOOKMARK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e01)
#define DB_E_BADCOLUMNID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e02)
#define DB_E_BADCRITERIA MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e03)
#define DB_E_BADENTRYID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e04)
#define DB_E_BADFRACTION MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e05)
#define DB_E_BADINDEXID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e06)
#define DB_E_BADQUERYSPEC MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e07)
#define DB_E_BADSORTORDER MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e08)
#define DB_E_BADVALUES MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e09)
#define DB_E_CANTCOERCE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0a)
#define DB_E_CANTLOCK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0b)
#define DB_E_COLUMNUNAVAILABLE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0c)
#define DB_E_DATACHANGED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0d)
#define DB_E_INVALIDCOLUMNORDINAL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0e)
#define DB_E_INVALIDINTERFACE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0f)
#define DB_E_LOCKFAILED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e10)
#define DB_E_ROWDELETED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e11)
#define DB_E_ROWTOOSHORT MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e12)
#define DB_E_SCHEMAVIOLATION MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e13)
#define DB_E_SEEKKINDNOTSUPPORTED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e14)
#define DB_E_UPDATEINPROGRESS MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e15)
#define DB_E_USEENTRYID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e16)
#define DB_E_STATEERROR MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e17)
#define DB_E_BADFETCHINFO MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e18)
#define DB_E_NOASYNC MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e19)
#define DB_E_ENTRYIDOPEN MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e1a)
#define DB_E_BUFFERTOOSMALL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e1b)
#define DB_S_BUFFERTOOSMALL MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec0)
#define DB_S_CANCEL MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec1)
#define DB_S_DATACHANGED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec2)
#define DB_S_ENDOFCURSOR MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec3)
#define DB_S_ENDOFRESULTSET MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec4)
#define DB_S_OPERATIONCANCELLED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec5)
#define DB_S_QUERYINTERFACE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec6)
#define DB_S_WORKINGASYNC MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec7)
//#define DB_S_COULDNTCOERCE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec8)
#define DB_S_MOVEDTOFIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec9)
#define DB_S_CURRENTROWUNCHANGED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0eca)
#define DB_S_ROWADDED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecb)
#define DB_S_ROWUPDATED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecc)
#define 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, DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBindings ( ULONG *pcCol, DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetNextRows ( LARGE_INTEGER udlRowsToSkip, 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, DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetBindings) ( ICursor FAR *this, ULONG *pcCol, DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength );
HRESULT (STDMETHODCALLTYPE FAR *GetNextRows) ( ICursor FAR *this, LARGE_INTEGER udlRowsToSkip, 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 tagDBCLONEOPTS { DBCLONEOPTS_DEFAULT = 0, DBCLONEOPTS_SAMEROW = 1 } 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, DBFETCHROWS *pFetchParams ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBookmark ( 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, DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetBindings) ( ICursorMove FAR *this, ULONG *pcCol, DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength );
HRESULT (STDMETHODCALLTYPE FAR *GetNextRows) ( ICursorMove FAR *this, LARGE_INTEGER udlRowsToSkip, DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *Requery) ( ICursorMove FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *Move) ( ICursorMove FAR *this, ULONG cbBookmark, void *pBookmark, LARGE_INTEGER dlOffset, DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *GetBookmark) ( ICursorMove FAR *this, 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 tagDBCURSORPOPULATED { DBCURSORPOPULATED_FULLY = 0, DBCURSORPOPULATED_PARTIALLY = 1 } 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, 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, DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetBindings) ( ICursorScroll FAR *this, ULONG *pcCol, DBCOLUMNBINDING *prgBoundColumns[], ULONG *pcbRowLength );
HRESULT (STDMETHODCALLTYPE FAR *GetNextRows) ( ICursorScroll FAR *this, LARGE_INTEGER udlRowsToSkip, DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *Requery) ( ICursorScroll FAR *this );
HRESULT (STDMETHODCALLTYPE FAR *Move) ( ICursorScroll FAR *this, ULONG cbBookmark, void *pBookmark, LARGE_INTEGER dlOffset, DBFETCHROWS *pFetchParams );
HRESULT (STDMETHODCALLTYPE FAR *GetBookmark) ( ICursorScroll FAR *this, 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, 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 tagDBEDITMODE { DBEDITMODE_NONE = 1, DBEDITMODE_UPDATE = 2, DBEDITMODE_ADD = 3 } 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 ( DBCOLUMNID *pcid, DBBINDPARAMS *pBindParams ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetColumn ( DBCOLUMNID *pcid, DBBINDPARAMS *pBindParams, DWORD *pdwFlags ) = 0;
virtual HRESULT STDMETHODCALLTYPE GetEditMode ( DWORD *pdwState ) = 0;
virtual HRESULT STDMETHODCALLTYPE Update ( 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, DBCOLUMNID *pcid, DBBINDPARAMS *pBindParams );
HRESULT (STDMETHODCALLTYPE FAR *GetColumn) ( ICursorUpdateARow FAR *this, DBCOLUMNID *pcid, DBBINDPARAMS *pBindParams, DWORD *pdwFlags );
HRESULT (STDMETHODCALLTYPE FAR *GetEditMode) ( ICursorUpdateARow FAR *this, DWORD *pdwState );
HRESULT (STDMETHODCALLTYPE FAR *Update) ( ICursorUpdateARow FAR *this, 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 tagDBFINDFLAGS { DBFINDFLAGS_FINDNEXT = 1, DBFINDFLAGS_FINDPRIOR = 2, DBFINDFLAGS_INCLUDECURRENT = 4 } DBFINDFLAGS;
typedef enum tagDBSEEKFLAGS { DBSEEK_LT = 1, DBSEEK_LE = 2, DBSEEK_EQ = 3, // EXACT EQUALITY
DBSEEK_GT = 4, DBSEEK_GE = 5, DBSEEK_PARTIALEQ = 6 // only for strings
} 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, DBCOLUMNID rgColumns[], DBVARIANT rgValues[], DWORD rgdwSeekFlags[], 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, DBCOLUMNID rgColumns[], DBVARIANT rgValues[], DWORD rgdwSeekFlags[], DBFETCHROWS 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, DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE Cancelled ( DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE SyncBefore ( DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE AboutToDo ( DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE FailedToDo ( DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE SyncAfter ( DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] ) = 0;
virtual HRESULT STDMETHODCALLTYPE DidEvent ( DWORD dwEventWhat, ULONG cReasons, 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, DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *Cancelled) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *SyncBefore) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *AboutToDo) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *FailedToDo) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *SyncAfter) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, DBNOTIFYREASON rgReasons[] );
HRESULT (STDMETHODCALLTYPE FAR *DidEvent) ( INotifyDBEvents FAR *this, DWORD dwEventWhat, ULONG cReasons, 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_
|