1714 lines
53 KiB
C
1714 lines
53 KiB
C
/*=--------------------------------------------------------------------------=
|
|
* 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_
|