Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1708 lines
47 KiB

  1. /*=--------------------------------------------------------------------------=
  2. * ocdb.h
  3. *=--------------------------------------------------------------------------=
  4. * defines the interfaces and constants for use with the OLE Controls Data
  5. * binding interfaces.
  6. *
  7. * Copyright (c) 1994-1997 Microsoft Corporation, All Rights Reserved.
  8. *
  9. *
  10. *
  11. */
  12. #ifndef __OCDB_H_
  13. #undef Delete
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /* LPDBSTRs are MultiByte in 16bits, and Unicode in 32bits.
  18. */
  19. #if defined(_WIN32) && !defined(OLE2ANSI)
  20. #define LPDBSTR LPWSTR
  21. #define DBCHAR WCHAR
  22. #define ldbstrlen(str) wcslen(str)
  23. #define ldbstrcpy(a, b) wcscpy((a), (b))
  24. #define ldbstrcpyn(a,b,n) wcsncpy((a), (b), (n))
  25. #define ldbstrcmp(a, b) wcscmp((a), (b))
  26. #define ldbstrcat(a, b) wcscat((a), (b))
  27. #define ldbstrcmpi(a,b) wcsicmp((a),(b))
  28. #define DBTEXT(quote) L##quote
  29. #else
  30. #define LPDBSTR LPSTR
  31. #define DBCHAR char
  32. #define ldbstrlen(str) lstrlen(str)
  33. #define ldbstrcpy(a, b) lstrcpy((a), (b))
  34. #define ldbstrcpyn(a,b,n) lstrcpyn((a), (b), (n))
  35. #define ldbstrcmp(a, b) lstrcmp((a), (b))
  36. #define ldbstrcat(a, b) lstrcat((a), (b))
  37. #define ldbstrcmpi(a,b) lstrcmpi((a),(b))
  38. #define DBTEXT(quote) quote
  39. #endif /* _WIN32 && !OLE2ANSI */
  40. typedef LPDBSTR FAR * LPLPDBSTR;
  41. /* Many systems don't have BLOBs defined.
  42. */
  43. #ifndef _tagBLOB_DEFINED
  44. #define _tagBLOB_DEFINED
  45. #define _BLOB_DEFINED
  46. #define _LPBLOB_DEFINED
  47. typedef struct tagBLOB {
  48. ULONG cbSize;
  49. BYTE *pBlobData;
  50. } BLOB, *LPBLOB;
  51. #endif
  52. /*----------------------------------------------------------------------------
  53. *
  54. * dbvar.h
  55. *
  56. *----------------------------------------------------------------------------
  57. */
  58. #ifndef _DBCOLUMNID_DEFINED
  59. #define _DBCOLUMNID_DEFINED
  60. typedef enum tagDBCOLKIND
  61. {
  62. DBCOLKIND_GUID_NAME = 0,
  63. DBCOLKIND_GUID_NUMBER = 1,
  64. DBCOLKIND_NAME = 2
  65. }
  66. DBCOLKIND;
  67. #define GUID_NAMEONLY {0x88c8d398,0x863c,0x101b,{0xac,0x3b,0x00,0xaa,0x00,0x44,0x77,0x3d}}
  68. #define GUID_NUMBERONLY {0x88c8d399,0x863c,0x101b,{0xac,0x3b,0x00,0xaa,0x00,0x44,0x77,0x3d}}
  69. typedef struct tagDBCOLUMNID
  70. {
  71. GUID guid;
  72. DBCOLKIND dwKind;
  73. union
  74. {
  75. LONG lNumber;
  76. LPDBSTR lpdbsz;
  77. }
  78. ;
  79. }
  80. DBCOLUMNID;
  81. #endif /* ndef _COLUMNID_DEFINED */
  82. #ifndef _DBVARENUM_DEFINED
  83. #define _DBVARENUM_DEFINED
  84. enum DBVARENUM
  85. {
  86. DBTYPE_EMPTY = 0,
  87. DBTYPE_NULL = 1,
  88. DBTYPE_I2 = 2,
  89. DBTYPE_I4 = 3,
  90. DBTYPE_R4 = 4,
  91. DBTYPE_R8 = 5,
  92. DBTYPE_CY = 6,
  93. DBTYPE_DATE = 7,
  94. DBTYPE_BOOL = 11,
  95. DBTYPE_UI2 = 18,
  96. DBTYPE_UI4 = 19,
  97. DBTYPE_I8 = 20,
  98. DBTYPE_UI8 = 21,
  99. DBTYPE_HRESULT = 25,
  100. DBTYPE_LPSTR = 30,
  101. DBTYPE_LPWSTR = 31,
  102. DBTYPE_FILETIME = 64,
  103. DBTYPE_BLOB = 65,
  104. DBTYPE_UUID = 72,
  105. DBTYPE_DBEXPR = 503,
  106. DBTYPE_COLUMNID = 507,
  107. DBTYPE_BYTES = 508,
  108. DBTYPE_CHARS = 509,
  109. DBTYPE_WCHARS = 510,
  110. DBTYPE_ANYVARIANT = 511
  111. }
  112. ;
  113. #endif /* ndef _DBVARENUM_DEFINED */
  114. #define DBTYPE_EXT 0x100
  115. #define DBTYPE_VECTOR 0x1000
  116. typedef struct tagDBVARIANT DBVARIANT;
  117. struct FARSTRUCT tagDBVARIANT{
  118. VARTYPE vt;
  119. unsigned short wReserved1;
  120. unsigned short wReserved2;
  121. unsigned short wReserved3;
  122. union {
  123. unsigned char bVal; /* VT_UI1 */
  124. short iVal; /* VT_I2 */
  125. long lVal; /* VT_I4 */
  126. float fltVal; /* VT_R4 */
  127. double dblVal; /* VT_R8 */
  128. VARIANT_BOOL xbool; /* VT_BOOL */
  129. SCODE scode; /* VT_ERROR */
  130. CY cyVal; /* VT_CY */
  131. DATE date; /* VT_DATE */
  132. BSTR bstrVal; /* VT_BSTR */
  133. IUnknown FAR* punkVal; /* VT_UNKNOWN */
  134. IDispatch FAR* pdispVal; /* VT_DISPATCH */
  135. SAFEARRAY FAR* parray; /* VT_ARRAY|* */
  136. unsigned char FAR *pbVal; /* VT_BYREF|VT_UI1 */
  137. short FAR* piVal; /* VT_BYREF|VT_I2 */
  138. long FAR* plVal; /* VT_BYREF|VT_I4 */
  139. float FAR* pfltVal; /* VT_BYREF|VT_R4 */
  140. double FAR* pdblVal; /* VT_BYREF|VT_R8 */
  141. VARIANT_BOOL FAR* pbool; /* VT_BYREF|VT_BOOL */
  142. SCODE FAR* pscode; /* VT_BYREF|VT_ERROR */
  143. CY FAR* pcyVal; /* VT_BYREF|VT_CY */
  144. DATE FAR* pdate; /* VT_BYREF|VT_DATE */
  145. BSTR FAR* pbstrVal; /* VT_BYREF|VT_BSTR */
  146. IUnknown FAR* FAR* ppunkVal; /* VT_BYREF|VT_UNKNOWN */
  147. IDispatch FAR* FAR* ppdispVal; /* VT_BYREF|VT_DISPATCH */
  148. SAFEARRAY FAR* FAR* pparray; /* VT_BYREF|VT_ARRAY|* */
  149. VARIANT FAR* pvarVal; /* VT_BYREF|VT_VARIANT */
  150. void FAR* byref; /* Generic ByRef */
  151. // types new to DBVARIANTs
  152. //
  153. BLOB blob; /* VT_BLOB */
  154. DBCOLUMNID *pColumnid; /* DBTYPE_COLUMNID */
  155. LPSTR pszVal; /* VT_LPSTR */
  156. #ifdef WIN32
  157. LPWSTR pwszVal; /* VT_LPWSTR */
  158. LPWSTR FAR *ppwszVal; /* VT_LPWSTR|VT_BYREF */
  159. #endif /* WIN32 */
  160. BLOB FAR *pblob; /* VT_BYREF|VT_BLOB */
  161. DBCOLUMNID **ppColumnid; /* VT_BYREF|DBTYPE_COLID*/
  162. DBVARIANT *pdbvarVal; /* VT_BYREF|DBTYPE_VARIANT */
  163. }
  164. #if defined(NONAMELESSUNION) || (defined(_MAC) && !defined(__cplusplus) && !defined(_MSC_VER))
  165. u
  166. #endif
  167. ;
  168. };
  169. /*----------------------------------------------------------------------------
  170. *
  171. * dbs.h
  172. *
  173. *----------------------------------------------------------------------------
  174. */
  175. typedef enum tagDBROWFETCH
  176. {
  177. DBROWFETCH_DEFAULT = 0,
  178. DBROWFETCH_CALLEEALLOCATES = 1,
  179. DBROWFETCH_FORCEREFRESH = 2
  180. }
  181. DBROWFETCH;
  182. typedef struct tagDBFETCHROWS
  183. {
  184. ULONG cRowsRequested;
  185. DWORD dwFlags;
  186. VOID HUGEP *pData;
  187. VOID HUGEP *pVarData;
  188. ULONG cbVarData;
  189. ULONG cRowsReturned;
  190. }
  191. DBFETCHROWS;
  192. #define DB_NOMAXLENGTH (DWORD)0
  193. #define DB_NOVALUE (DWORD)0xFFFFFFFF
  194. #define DB_NULL (DWORD)0xFFFFFFFF
  195. #define DB_EMPTY (DWORD)0xFFFFFFFE
  196. #define DB_USEENTRYID (DWORD)0xFFFFFFFD
  197. #define DB_CANTCOERCE (DWORD)0xFFFFFFFC
  198. #define DB_TRUNCATED (DWORD)0xFFFFFFFB
  199. #define DB_UNKNOWN (DWORD)0xFFFFFFFA
  200. #define DB_NOINFO (DWORD)0xFFFFFFF9
  201. typedef enum tagDBBINDING
  202. {
  203. DBBINDING_DEFAULT = 0,
  204. DBBINDING_VARIANT = 1,
  205. DBBINDING_ENTRYID = 2
  206. }
  207. DBBINDING;
  208. typedef enum tagDBBINDTYPE
  209. {
  210. DBBINDTYPE_DATA = 0,
  211. DBBINDTYPE_ENTRYID = 1,
  212. DBBDINTYPE_EITHER = 2,
  213. DBBINDTYPE_BOTH = 3
  214. }
  215. DBBINDTYPE;
  216. typedef struct tagDBCOLUMNBINDING
  217. {
  218. DBCOLUMNID columnID;
  219. ULONG obData;
  220. ULONG cbMaxLen;
  221. ULONG obVarDataLen;
  222. ULONG obInfo;
  223. DWORD dwBinding;
  224. DWORD dwDataType;
  225. }
  226. DBCOLUMNBINDING;
  227. typedef struct tagDBBINDPARAMS
  228. {
  229. ULONG cbMaxLen;
  230. DWORD dwBinding;
  231. DWORD dwDataType;
  232. ULONG cbVarDataLen;
  233. DWORD dwInfo;
  234. void *pData;
  235. }
  236. DBBINDPARAMS;
  237. #define CID_NUMBER_INVALID -1
  238. #define CID_NUMBER_AUTOINCREMENT 0
  239. #define CID_NUMBER_BASECOLUMNNAME 1
  240. #define CID_NUMBER_BASENAME 2
  241. #define CID_NUMBER_BINARYCOMPARABLE 3
  242. #define CID_NUMBER_BINDTYPE 4
  243. #define CID_NUMBER_CASESENSITIVE 5
  244. #define CID_NUMBER_COLLATINGORDER 6
  245. #define CID_NUMBER_COLUMNID 7
  246. #define CID_NUMBER_CURSORCOLUMN 8
  247. #define CID_NUMBER_DATACOLUMN 9
  248. #define CID_NUMBER_DEFAULTVALUE 10
  249. #define CID_NUMBER_ENTRYIDMAXLENGTH 11
  250. #define CID_NUMBER_FIXED 12
  251. #define CID_NUMBER_HASDEFAULT 13
  252. #define CID_NUMBER_MAXLENGTH 14
  253. #define CID_NUMBER_MULTIVALUED 15
  254. #define CID_NUMBER_NAME 16
  255. #define CID_NUMBER_NULLABLE 17
  256. #define CID_NUMBER_PHYSICALSORT 18
  257. #define CID_NUMBER_NUMBER 19
  258. #define CID_NUMBER_ROWENTRYID 20
  259. #define CID_NUMBER_SCALE 21
  260. #define CID_NUMBER_SEARCHABLE 22
  261. #define CID_NUMBER_TYPE 23
  262. #define CID_NUMBER_UNIQUE 24
  263. #define CID_NUMBER_UPDATABLE 25
  264. #define CID_NUMBER_VERSION 26
  265. #define CID_NUMBER_STATUS 27
  266. /* c and C++ have different meanings for const.
  267. */
  268. #ifdef __cplusplus
  269. #define EXTERNAL_DEFN extern const
  270. #else
  271. #define EXTERNAL_DEFN const
  272. #endif /* __cplusplus */
  273. #define DBCIDGUID {0xfe284700L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}
  274. #ifdef DBINITCONSTANTS
  275. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMNID_INVALID = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, -1};
  276. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_AUTOINCREMENT = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 0};
  277. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BASECOLUMNNAME = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 1};
  278. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BASENAME = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 2};
  279. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BINARYCOMPARABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 3};
  280. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BINDTYPE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 4};
  281. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_CASESENSITIVE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 5};
  282. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_COLLATINGORDER = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 6};
  283. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_COLUMNID = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 7};
  284. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_CURSORCOLUMN = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 8};
  285. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_DATACOLUMN = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 9};
  286. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_DEFAULTVALUE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 10};
  287. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_ENTRYIDMAXLENGTH = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 11};
  288. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_FIXED = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 12};
  289. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_HASDEFAULT = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 13};
  290. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_MAXLENGTH = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 14};
  291. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_MULTIVALUED = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 15};
  292. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_NAME = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 16};
  293. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_NULLABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 17};
  294. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_PHYSICALSORT = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 18};
  295. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_NUMBER = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 19};
  296. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_ROWENTRYID = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 20};
  297. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_SCALE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 21};
  298. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_SEARCHABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 22};
  299. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_TYPE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 23};
  300. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_UNIQUE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 24};
  301. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_UPDATABLE = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 25};
  302. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_VERSION = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 26};
  303. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_STATUS = {DBCIDGUID, DBCOLKIND_GUID_NUMBER, 27};
  304. #else
  305. extern const DBCOLUMNID NEAR COLUMNID_INVALID;
  306. extern const DBCOLUMNID NEAR COLUMN_AUTOINCREMENT;
  307. extern const DBCOLUMNID NEAR COLUMN_BASECOLUMNNAME;
  308. extern const DBCOLUMNID NEAR COLUMN_BASENAME;
  309. extern const DBCOLUMNID NEAR COLUMN_BINARYCOMPARABLE;
  310. extern const DBCOLUMNID NEAR COLUMN_BINDTYPE;
  311. extern const DBCOLUMNID NEAR COLUMN_CASESENSITIVE;
  312. extern const DBCOLUMNID NEAR COLUMN_COLLATINGORDER;
  313. extern const DBCOLUMNID NEAR COLUMN_COLUMNID;
  314. extern const DBCOLUMNID NEAR COLUMN_CURSORCOLUMN;
  315. extern const DBCOLUMNID NEAR COLUMN_DATACOLUMN;
  316. extern const DBCOLUMNID NEAR COLUMN_DEFAULTVALUE;
  317. extern const DBCOLUMNID NEAR COLUMN_ENTRYIDMAXLENGTH;
  318. extern const DBCOLUMNID NEAR COLUMN_FIXED;
  319. extern const DBCOLUMNID NEAR COLUMN_HASDEFAULT;
  320. extern const DBCOLUMNID NEAR COLUMN_MAXLENGTH;
  321. extern const DBCOLUMNID NEAR COLUMN_MULTIVALUED;
  322. extern const DBCOLUMNID NEAR COLUMN_NAME;
  323. extern const DBCOLUMNID NEAR COLUMN_NULLABLE;
  324. extern const DBCOLUMNID NEAR COLUMN_PHYSICALSORT;
  325. extern const DBCOLUMNID NEAR COLUMN_NUMBER;
  326. extern const DBCOLUMNID NEAR COLUMN_ROWENTRYID;
  327. extern const DBCOLUMNID NEAR COLUMN_SCALE;
  328. extern const DBCOLUMNID NEAR COLUMN_SEARCHABLE;
  329. extern const DBCOLUMNID NEAR COLUMN_TYPE;
  330. extern const DBCOLUMNID NEAR COLUMN_UNIQUE;
  331. extern const DBCOLUMNID NEAR COLUMN_UPDATABLE;
  332. extern const DBCOLUMNID NEAR COLUMN_VERSION;
  333. extern const DBCOLUMNID NEAR COLUMN_STATUS;
  334. #endif
  335. #define BMK_NUMBER_BMKTEMPORARY 0
  336. #define BMK_NUMBER_BMKTEMPORARYREL 1
  337. #define BMK_NUMBER_BMKCURSOR 2
  338. #define BMK_NUMBER_BMKCURSORREL 3
  339. #define BMK_NUMBER_BMKSESSION 4
  340. #define BMK_NUMBER_BMKSESSIONREL 5
  341. #define BMK_NUMBER_BMKPERSIST 6
  342. #define BMK_NUMBER_BMKPERSISTREL 7
  343. #define DBBMKGUID {0xf6304bb0L,0xd188,0x11cd,{0xad,0x48, 0x0,0xaa, 0x0,0x3c,0x9c,0xb6}}
  344. #ifdef DBINITCONSTANTS
  345. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKTEMPORARY = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 0};
  346. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKTEMPORARYREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 1};
  347. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKCURSOR = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 2};
  348. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKCURSORREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 3};
  349. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKSESSION = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 4};
  350. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKSESSIONREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 5};
  351. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKPERSIST = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 6};
  352. EXTERNAL_DEFN DBCOLUMNID NEAR COLUMN_BMKPERSISTREL = {DBBMKGUID, DBCOLKIND_GUID_NUMBER, 7};
  353. #else
  354. extern const DBCOLUMNID NEAR COLUMN_BMKINVALID;
  355. extern const DBCOLUMNID NEAR COLUMN_BMKTEMPORARY;
  356. extern const DBCOLUMNID NEAR COLUMN_BMKTEMPORARYREL;
  357. extern const DBCOLUMNID NEAR COLUMN_BMKCURSOR;
  358. extern const DBCOLUMNID NEAR COLUMN_BMKCURSORREL;
  359. extern const DBCOLUMNID NEAR COLUMN_BMKSESSION;
  360. extern const DBCOLUMNID NEAR COLUMN_BMKSESSIONREL;
  361. extern const DBCOLUMNID NEAR COLUMN_BMKPERSIST;
  362. extern const DBCOLUMNID NEAR COLUMN_BMKPERSISTREL;
  363. #endif
  364. #define DB_BMK_SIZE sizeof(BYTE)
  365. #ifdef DBINITCONSTANTS
  366. EXTERNAL_DEFN BYTE NEAR DBBMK_INVALID = 0x0;
  367. EXTERNAL_DEFN BYTE NEAR DBBMK_CURRENT = 0x1;
  368. EXTERNAL_DEFN BYTE NEAR DBBMK_BEGINNING = 0x2;
  369. EXTERNAL_DEFN BYTE NEAR DBBMK_END = 0x3;
  370. #else
  371. extern const BYTE NEAR DBBMK_INVALID;
  372. extern const BYTE NEAR DBBMK_CURRENT;
  373. extern const BYTE NEAR DBBMK_BEGINNING;
  374. extern const BYTE NEAR DBBMK_END;
  375. #endif
  376. typedef enum tagDBCOLUMNBINDOPTS
  377. {
  378. DBCOLUMNBINDOPTS_REPLACE = 0,
  379. DBCOLUMNBINDOPTS_ADD = 1
  380. }
  381. DBCOLUMNBINDOPTS;
  382. typedef enum tagDBUPDATELOCK
  383. {
  384. DBUPDATELOCK_PESSIMISTIC = 0,
  385. DBUPDATELOCK_OPTIMISTIC = 1
  386. }
  387. DBUPDATELOCK;
  388. typedef enum tagDBCOLUMNDATA
  389. {
  390. DBCOLUMNDATA_UNCHANGED = 0,
  391. DBCOLUMNDATA_CHANGED = 1,
  392. DBCOLUMNDATA_UNKNOWN = 2
  393. }
  394. DBCOLUMNDATA;
  395. typedef enum tagDBROWACTION
  396. {
  397. DBROWACTION_IGNORE = 0,
  398. DBROWACTION_UPDATE = 1,
  399. DBROWACTION_DELETE = 2,
  400. DBROWACTION_ADD = 3,
  401. DBROWACTION_LOCK = 4,
  402. DBROWACTION_UNLOCK = 5
  403. }
  404. DBROWACTION;
  405. typedef enum tagDBUPDATEABLE
  406. {
  407. DBUPDATEABLE_UPDATEABLE = 0,
  408. DBUPDATEABLE_NOTUPDATEABLE = 1,
  409. DBUPDATEABLE_UNKNOWN = 2
  410. }
  411. DBUPDATEABLE;
  412. typedef struct tagDBROWSTATUS
  413. {
  414. HRESULT hrStatus;
  415. BLOB Bookmark;
  416. }
  417. DBROWSTATUS;
  418. typedef enum tagDBEVENTWHATS
  419. {
  420. DBEVENT_CURRENT_ROW_CHANGED = 1,
  421. DBEVENT_CURRENT_ROW_DATA_CHANGED = 2,
  422. DBEVENT_NONCURRENT_ROW_DATA_CHANGED = 4,
  423. DBEVENT_SET_OF_COLUMNS_CHANGED = 8,
  424. DBEVENT_ORDER_OF_COLUMNS_CHANGED = 16,
  425. DBEVENT_SET_OF_ROWS_CHANGED = 32,
  426. DBEVENT_ORDER_OF_ROWS_CHANGED = 64,
  427. DBEVENT_METADATA_CHANGED = 128,
  428. DBEVENT_ASYNCH_OP_FINISHED = 256,
  429. DBEVENT_FIND_CRITERIA_CHANGED = 512,
  430. }
  431. DBEVENTWHATS;
  432. typedef enum tagDBREASON
  433. {
  434. DBREASON_DELETED = 1,
  435. DBREASON_INSERTED = 2,
  436. DBREASON_MODIFIED = 3,
  437. DBREASON_REMOVEDFROMCURSOR = 4,
  438. DBREASON_MOVEDINCURSOR = 5,
  439. DBREASON_MOVE = 6,
  440. DBREASON_FIND = 7,
  441. DBREASON_NEWINDEX = 8,
  442. DBREASON_ROWFIXUP = 9,
  443. DBREASON_RECALC = 10,
  444. DBREASON_REFRESH = 11,
  445. DBREASON_NEWPARAMETERS = 12,
  446. DBREASON_SORTCHANGED = 13,
  447. DBREASON_FILTERCHANGED = 14,
  448. DBREASON_QUERYSPECCHANGED = 15,
  449. DBREASON_SEEK = 16,
  450. DBREASON_PERCENT = 17,
  451. DBREASON_FINDCRITERIACHANGED = 18,
  452. DBREASON_SETRANGECHANGED = 19,
  453. DBREASON_ADDNEW = 20,
  454. DBREASON_MOVEPERCENT = 21,
  455. DBREASON_BEGINTRANSACT = 22,
  456. DBREASON_ROLLBACK = 23,
  457. DBREASON_COMMIT = 24,
  458. DBREASON_CLOSE = 25,
  459. DBREASON_BULK_ERROR = 26,
  460. DBREASON_BULK_NOTTRANSACTABLE = 27,
  461. DBREASON_BULK_ABOUTTOEXECUTE = 28,
  462. DBREASON_CANCELUPDATE = 29,
  463. DBREASON_SETCOLUMN = 30,
  464. DBREASON_EDIT = 31,
  465. DBREASON_UNLOAD = 32
  466. }
  467. DBREASON;
  468. // Arg1 values for DBREASON_FIND
  469. typedef enum tagDBFINDTYPES
  470. {
  471. DB_FINDFIRST = 1,
  472. DB_FINDLAST = 2,
  473. DB_FINDNEXT = 3,
  474. DB_FINDPRIOR = 4,
  475. DB_FIND = 5
  476. }
  477. DBFINDTYPES;
  478. typedef struct tagDBNOTIFYREASON
  479. {
  480. DWORD dwReason;
  481. DBVARIANT arg1;
  482. DBVARIANT arg2;
  483. }
  484. DBNOTIFYREASON;
  485. #define DB_E_BADBINDINFO MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e00)
  486. #define DB_E_BADBOOKMARK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e01)
  487. #define DB_E_BADCOLUMNID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e02)
  488. #define DB_E_BADCRITERIA MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e03)
  489. #define DB_E_BADENTRYID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e04)
  490. #define DB_E_BADFRACTION MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e05)
  491. #define DB_E_BADINDEXID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e06)
  492. #define DB_E_BADQUERYSPEC MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e07)
  493. #define DB_E_BADSORTORDER MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e08)
  494. #define DB_E_BADVALUES MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e09)
  495. #define DB_E_CANTCOERCE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0a)
  496. #define DB_E_CANTLOCK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0b)
  497. #define DB_E_COLUMNUNAVAILABLE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0c)
  498. #define DB_E_DATACHANGED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0d)
  499. #define DB_E_INVALIDCOLUMNORDINAL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0e)
  500. #define DB_E_INVALIDINTERFACE MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e0f)
  501. #define DB_E_LOCKFAILED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e10)
  502. #define DB_E_ROWDELETED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e11)
  503. #define DB_E_ROWTOOSHORT MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e12)
  504. #define DB_E_SCHEMAVIOLATION MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e13)
  505. #define DB_E_SEEKKINDNOTSUPPORTED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e14)
  506. #define DB_E_UPDATEINPROGRESS MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e15)
  507. #define DB_E_USEENTRYID MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e16)
  508. #define DB_E_STATEERROR MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e17)
  509. #define DB_E_BADFETCHINFO MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e18)
  510. #define DB_E_NOASYNC MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e19)
  511. #define DB_E_ENTRYIDOPEN MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e1a)
  512. #define DB_E_BUFFERTOOSMALL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0e1b)
  513. #define DB_S_BUFFERTOOSMALL MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec0)
  514. #define DB_S_CANCEL MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec1)
  515. #define DB_S_DATACHANGED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec2)
  516. #define DB_S_ENDOFCURSOR MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec3)
  517. #define DB_S_ENDOFRESULTSET MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec4)
  518. #define DB_S_OPERATIONCANCELLED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec5)
  519. #define DB_S_QUERYINTERFACE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec6)
  520. #define DB_S_WORKINGASYNC MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec7)
  521. //#define DB_S_COULDNTCOERCE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec8)
  522. #define DB_S_MOVEDTOFIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ec9)
  523. #define DB_S_CURRENTROWUNCHANGED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0eca)
  524. #define DB_S_ROWADDED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecb)
  525. #define DB_S_ROWUPDATED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecc)
  526. #define DB_S_ROWDELETED MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0ecd)
  527. /*----------------------------------------------------------------------------
  528. *
  529. * ICursor
  530. *
  531. *----------------------------------------------------------------------------
  532. */
  533. /* Forward declaration */
  534. //typedef interface ICursor ICursor;
  535. #if defined(__cplusplus) && !defined(CINTERFACE)
  536. /* C++ Language Binding */
  537. //extern "C" const IID IID_ICursor;
  538. interface ICursor : public IUnknown
  539. {
  540. public:
  541. virtual HRESULT STDMETHODCALLTYPE GetColumnsCursor
  542. (
  543. REFIID riid,
  544. IUnknown **ppvColumnsCursor,
  545. ULONG *pcRows
  546. ) = 0;
  547. virtual HRESULT STDMETHODCALLTYPE SetBindings
  548. (
  549. ULONG cCol,
  550. DBCOLUMNBINDING rgBoundColumns[],
  551. ULONG cbRowLength,
  552. DWORD dwFlags
  553. ) = 0;
  554. virtual HRESULT STDMETHODCALLTYPE GetBindings
  555. (
  556. ULONG *pcCol,
  557. DBCOLUMNBINDING *prgBoundColumns[],
  558. ULONG *pcbRowLength
  559. ) = 0;
  560. virtual HRESULT STDMETHODCALLTYPE GetNextRows
  561. (
  562. LARGE_INTEGER udlRowsToSkip,
  563. DBFETCHROWS *pFetchParams
  564. ) = 0;
  565. virtual HRESULT STDMETHODCALLTYPE Requery
  566. (
  567. void
  568. ) = 0;
  569. };
  570. #else
  571. /* C Language Binding */
  572. //extern const IID IID_ICursor;
  573. typedef struct ICursorVtbl
  574. {
  575. HRESULT (STDMETHODCALLTYPE FAR *QueryInterface)
  576. (
  577. ICursor FAR *this,
  578. REFIID riid,
  579. void **ppvObject
  580. );
  581. ULONG (STDMETHODCALLTYPE FAR *AddRef)
  582. (
  583. ICursor FAR *this
  584. );
  585. ULONG (STDMETHODCALLTYPE FAR *Release)
  586. (
  587. ICursor FAR *this
  588. );
  589. HRESULT (STDMETHODCALLTYPE FAR *GetColumnsCursor)
  590. (
  591. ICursor FAR *this,
  592. REFIID riid,
  593. IUnknown **ppvColumnsCursor,
  594. ULONG *pcRows
  595. );
  596. HRESULT (STDMETHODCALLTYPE FAR *SetBindings)
  597. (
  598. ICursor FAR *this,
  599. ULONG cCol,
  600. DBCOLUMNBINDING rgBoundColumns[],
  601. ULONG cbRowLength,
  602. DWORD dwFlags
  603. );
  604. HRESULT (STDMETHODCALLTYPE FAR *GetBindings)
  605. (
  606. ICursor FAR *this,
  607. ULONG *pcCol,
  608. DBCOLUMNBINDING *prgBoundColumns[],
  609. ULONG *pcbRowLength
  610. );
  611. HRESULT (STDMETHODCALLTYPE FAR *GetNextRows)
  612. (
  613. ICursor FAR *this,
  614. LARGE_INTEGER udlRowsToSkip,
  615. DBFETCHROWS *pFetchParams
  616. );
  617. HRESULT (STDMETHODCALLTYPE FAR *Requery)
  618. (
  619. ICursor FAR *this
  620. );
  621. } ICursorVtbl;
  622. interface ICursor
  623. {
  624. ICursorVtbl FAR *lpVtbl;
  625. } ;
  626. #ifdef COBJMACROS
  627. #define ICursor_QueryInterface(pI, riid, ppvObject) \
  628. (*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
  629. #define ICursor_AddRef(pI) \
  630. (*(pI)->lpVtbl->AddRef)((pI))
  631. #define ICursor_Release(pI) \
  632. (*(pI)->lpVtbl->Release)((pI))
  633. #define ICursor_GetColumnsCursor(pI, riid, ppvColumnsCursor, pcRows) \
  634. (*(pI)->lpVtbl->GetColumnsCursor)((pI), riid, ppvColumnsCursor, pcRows)
  635. #define ICursor_SetBindings(pI, cCol, rgBoundColumns, cbRowLength, dwFlags) \
  636. (*(pI)->lpVtbl->SetBindings)((pI), cCol, rgBoundColumns, cbRowLength, dwFlags)
  637. #define ICursor_GetBindings(pI, pcCol, prgBoundColumns, pcbRowLength) \
  638. (*(pI)->lpVtbl->GetBindings)((pI), pcCol, prgBoundColumns, pcbRowLength)
  639. #define ICursor_GetNextRows(pI, udlRowsToSkip, pFetchParams) \
  640. (*(pI)->lpVtbl->GetNextRows)((pI), udlRowsToSkip, pFetchParams)
  641. #define ICursor_Requery(pI) \
  642. (*(pI)->lpVtbl->Requery)((pI))
  643. #endif /* COBJMACROS */
  644. #endif
  645. /*----------------------------------------------------------------------------
  646. *
  647. * ICursorMove
  648. *
  649. *----------------------------------------------------------------------------
  650. */
  651. /* Forward declaration */
  652. //typedef interface ICursorMove ICursorMove;
  653. typedef enum tagDBCLONEOPTS
  654. {
  655. DBCLONEOPTS_DEFAULT = 0,
  656. DBCLONEOPTS_SAMEROW = 1
  657. }
  658. DBCLONEOPTS;
  659. #if defined(__cplusplus) && !defined(CINTERFACE)
  660. /* C++ Language Binding */
  661. //extern "C" const IID IID_ICursorMove;
  662. interface ICursorMove : public ICursor
  663. {
  664. public:
  665. virtual HRESULT STDMETHODCALLTYPE Move
  666. (
  667. ULONG cbBookmark,
  668. void *pBookmark,
  669. LARGE_INTEGER dlOffset,
  670. DBFETCHROWS *pFetchParams
  671. ) = 0;
  672. virtual HRESULT STDMETHODCALLTYPE GetBookmark
  673. (
  674. DBCOLUMNID *pBookmarkType,
  675. ULONG cbMaxSize,
  676. ULONG *pcbBookmark,
  677. void *pBookmark
  678. ) = 0;
  679. virtual HRESULT STDMETHODCALLTYPE Clone
  680. (
  681. DWORD dwFlags,
  682. REFIID riid,
  683. IUnknown **ppvClonedCursor
  684. ) = 0;
  685. };
  686. #else
  687. /* C Language Binding */
  688. //extern const IID IID_ICursorMove;
  689. typedef struct ICursorMoveVtbl
  690. {
  691. HRESULT (STDMETHODCALLTYPE FAR *QueryInterface)
  692. (
  693. ICursorMove FAR *this,
  694. REFIID riid,
  695. void **ppvObject
  696. );
  697. ULONG (STDMETHODCALLTYPE FAR *AddRef)
  698. (
  699. ICursorMove FAR *this
  700. );
  701. ULONG (STDMETHODCALLTYPE FAR *Release)
  702. (
  703. ICursorMove FAR *this
  704. );
  705. HRESULT (STDMETHODCALLTYPE FAR *GetColumnsCursor)
  706. (
  707. ICursorMove FAR *this,
  708. REFIID riid,
  709. IUnknown **ppvColumnsCursor,
  710. ULONG *pcRows
  711. );
  712. HRESULT (STDMETHODCALLTYPE FAR *SetBindings)
  713. (
  714. ICursorMove FAR *this,
  715. ULONG cCol,
  716. DBCOLUMNBINDING rgBoundColumns[],
  717. ULONG cbRowLength,
  718. DWORD dwFlags
  719. );
  720. HRESULT (STDMETHODCALLTYPE FAR *GetBindings)
  721. (
  722. ICursorMove FAR *this,
  723. ULONG *pcCol,
  724. DBCOLUMNBINDING *prgBoundColumns[],
  725. ULONG *pcbRowLength
  726. );
  727. HRESULT (STDMETHODCALLTYPE FAR *GetNextRows)
  728. (
  729. ICursorMove FAR *this,
  730. LARGE_INTEGER udlRowsToSkip,
  731. DBFETCHROWS *pFetchParams
  732. );
  733. HRESULT (STDMETHODCALLTYPE FAR *Requery)
  734. (
  735. ICursorMove FAR *this
  736. );
  737. HRESULT (STDMETHODCALLTYPE FAR *Move)
  738. (
  739. ICursorMove FAR *this,
  740. ULONG cbBookmark,
  741. void *pBookmark,
  742. LARGE_INTEGER dlOffset,
  743. DBFETCHROWS *pFetchParams
  744. );
  745. HRESULT (STDMETHODCALLTYPE FAR *GetBookmark)
  746. (
  747. ICursorMove FAR *this,
  748. DBCOLUMNID *pBookmarkType,
  749. ULONG cbMaxSize,
  750. ULONG *pcbBookmark,
  751. void *pBookmark
  752. );
  753. HRESULT (STDMETHODCALLTYPE FAR *Clone)
  754. (
  755. ICursorMove FAR *this,
  756. DWORD dwFlags,
  757. REFIID riid,
  758. IUnknown **ppvClonedCursor
  759. );
  760. } ICursorMoveVtbl;
  761. interface ICursorMove
  762. {
  763. ICursorMoveVtbl FAR *lpVtbl;
  764. } ;
  765. #ifdef COBJMACROS
  766. #define ICursorMove_QueryInterface(pI, riid, ppvObject) \
  767. (*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
  768. #define ICursorMove_AddRef(pI) \
  769. (*(pI)->lpVtbl->AddRef)((pI))
  770. #define ICursorMove_Release(pI) \
  771. (*(pI)->lpVtbl->Release)((pI))
  772. #define ICursorMove_GetColumnsCursor(pI, riid, ppvColumnsCursor, pcRows) \
  773. (*(pI)->lpVtbl->GetColumnsCursor)((pI), riid, ppvColumnsCursor, pcRows)
  774. #define ICursorMove_SetBindings(pI, cCol, rgBoundColumns, cbRowLength, dwFlags) \
  775. (*(pI)->lpVtbl->SetBindings)((pI), cCol, rgBoundColumns, cbRowLength, dwFlags)
  776. #define ICursorMove_GetBindings(pI, pcCol, prgBoundColumns, pcbRowLength) \
  777. (*(pI)->lpVtbl->GetBindings)((pI), pcCol, prgBoundColumns, pcbRowLength)
  778. #define ICursorMove_GetNextRows(pI, udlRowsToSkip, pFetchParams) \
  779. (*(pI)->lpVtbl->GetNextRows)((pI), udlRowsToSkip, pFetchParams)
  780. #define ICursorMove_Requery(pI) \
  781. (*(pI)->lpVtbl->Requery)((pI))
  782. #define ICursorMove_Move(pI, cbBookmark, pBookmark, dlOffset, pFetchParams) \
  783. (*(pI)->lpVtbl->Move)((pI), cbBookmark, pBookmark, dlOffset, pFetchParams)
  784. #define ICursorMove_GetBookmark(pI, pBookmarkType, cbMaxSize, pcbBookmark, pBookmark) \
  785. (*(pI)->lpVtbl->GetBookmark)((pI), pBookmarkType, cbMaxSize, pcbBookmark, pBookmark)
  786. #define ICursorMove_Clone(pI, dwFlags, riid, ppvClonedCursor) \
  787. (*(pI)->lpVtbl->Clone)((pI), dwFlags, riid, ppvClonedCursor)
  788. #endif /* COBJMACROS */
  789. #endif
  790. /*----------------------------------------------------------------------------
  791. *
  792. * ICursorScroll
  793. *
  794. *----------------------------------------------------------------------------
  795. */
  796. /* Forward declaration */
  797. //typedef interface ICursorScroll ICursorScroll;
  798. typedef enum tagDBCURSORPOPULATED
  799. {
  800. DBCURSORPOPULATED_FULLY = 0,
  801. DBCURSORPOPULATED_PARTIALLY = 1
  802. }
  803. DBCURSORPOPULATED;
  804. #if defined(__cplusplus) && !defined(CINTERFACE)
  805. /* C++ Language Binding */
  806. //extern "C" const IID IID_ICursorScroll;
  807. interface ICursorScroll : public ICursorMove
  808. {
  809. public:
  810. virtual HRESULT STDMETHODCALLTYPE Scroll
  811. (
  812. ULONG ulNumerator,
  813. ULONG ulDenominator,
  814. DBFETCHROWS *pFetchParams
  815. ) = 0;
  816. virtual HRESULT STDMETHODCALLTYPE GetApproximatePosition
  817. (
  818. ULONG cbBookmark,
  819. void *pBookmark,
  820. ULONG *pulNumerator,
  821. ULONG *pulDenominator
  822. ) = 0;
  823. virtual HRESULT STDMETHODCALLTYPE GetApproximateCount
  824. (
  825. LARGE_INTEGER *pudlApproxCount,
  826. DWORD *pdwFullyPopulated
  827. ) = 0;
  828. };
  829. #else
  830. /* C Language Binding */
  831. //extern const IID IID_ICursorScroll;
  832. typedef struct ICursorScrollVtbl
  833. {
  834. HRESULT (STDMETHODCALLTYPE FAR *QueryInterface)
  835. (
  836. ICursorScroll FAR *this,
  837. REFIID riid,
  838. void **ppvObject
  839. );
  840. ULONG (STDMETHODCALLTYPE FAR *AddRef)
  841. (
  842. ICursorScroll FAR *this
  843. );
  844. ULONG (STDMETHODCALLTYPE FAR *Release)
  845. (
  846. ICursorScroll FAR *this
  847. );
  848. HRESULT (STDMETHODCALLTYPE FAR *GetColumnsCursor)
  849. (
  850. ICursorScroll FAR *this,
  851. REFIID riid,
  852. IUnknown **ppvColumnsCursor,
  853. ULONG *pcRows
  854. );
  855. HRESULT (STDMETHODCALLTYPE FAR *SetBindings)
  856. (
  857. ICursorScroll FAR *this,
  858. ULONG cCol,
  859. DBCOLUMNBINDING rgBoundColumns[],
  860. ULONG cbRowLength,
  861. DWORD dwFlags
  862. );
  863. HRESULT (STDMETHODCALLTYPE FAR *GetBindings)
  864. (
  865. ICursorScroll FAR *this,
  866. ULONG *pcCol,
  867. DBCOLUMNBINDING *prgBoundColumns[],
  868. ULONG *pcbRowLength
  869. );
  870. HRESULT (STDMETHODCALLTYPE FAR *GetNextRows)
  871. (
  872. ICursorScroll FAR *this,
  873. LARGE_INTEGER udlRowsToSkip,
  874. DBFETCHROWS *pFetchParams
  875. );
  876. HRESULT (STDMETHODCALLTYPE FAR *Requery)
  877. (
  878. ICursorScroll FAR *this
  879. );
  880. HRESULT (STDMETHODCALLTYPE FAR *Move)
  881. (
  882. ICursorScroll FAR *this,
  883. ULONG cbBookmark,
  884. void *pBookmark,
  885. LARGE_INTEGER dlOffset,
  886. DBFETCHROWS *pFetchParams
  887. );
  888. HRESULT (STDMETHODCALLTYPE FAR *GetBookmark)
  889. (
  890. ICursorScroll FAR *this,
  891. DBCOLUMNID *pBookmarkType,
  892. ULONG cbMaxSize,
  893. ULONG *pcbBookmark,
  894. void *pBookmark
  895. );
  896. HRESULT (STDMETHODCALLTYPE FAR *Clone)
  897. (
  898. ICursorScroll FAR *this,
  899. DWORD dwFlags,
  900. REFIID riid,
  901. IUnknown **ppvClonedCursor
  902. );
  903. HRESULT (STDMETHODCALLTYPE FAR *Scroll)
  904. (
  905. ICursorScroll FAR *this,
  906. ULONG ulNumerator,
  907. ULONG ulDenominator,
  908. DBFETCHROWS *pFetchParams
  909. );
  910. HRESULT (STDMETHODCALLTYPE FAR *GetApproximatePosition)
  911. (
  912. ICursorScroll FAR *this,
  913. ULONG cbBookmark,
  914. void *pBookmark,
  915. ULONG *pulNumerator,
  916. ULONG *pulDenominator
  917. );
  918. HRESULT (STDMETHODCALLTYPE FAR *GetApproximateCount)
  919. (
  920. ICursorScroll FAR *this,
  921. LARGE_INTEGER *pudlApproxCount,
  922. DWORD *pdwFullyPopulated
  923. );
  924. } ICursorScrollVtbl;
  925. interface ICursorScroll
  926. {
  927. ICursorScrollVtbl FAR *lpVtbl;
  928. } ;
  929. #ifdef COBJMACROS
  930. #define ICursorScroll_QueryInterface(pI, riid, ppvObject) \
  931. (*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
  932. #define ICursorScroll_AddRef(pI) \
  933. (*(pI)->lpVtbl->AddRef)((pI))
  934. #define ICursorScroll_Release(pI) \
  935. (*(pI)->lpVtbl->Release)((pI))
  936. #define ICursorScroll_GetColumnsCursor(pI, riid, ppvColumnsCursor, pcRows) \
  937. (*(pI)->lpVtbl->GetColumnsCursor)((pI), riid, ppvColumnsCursor, pcRows)
  938. #define ICursorScroll_SetBindings(pI, cCol, rgBoundColumns, cbRowLength, dwFlags) \
  939. (*(pI)->lpVtbl->SetBindings)((pI), cCol, rgBoundColumns, cbRowLength, dwFlags)
  940. #define ICursorScroll_GetBindings(pI, pcCol, prgBoundColumns, pcbRowLength) \
  941. (*(pI)->lpVtbl->GetBindings)((pI), pcCol, prgBoundColumns, pcbRowLength)
  942. #define ICursorScroll_GetNextRows(pI, udlRowsToSkip, pFetchParams) \
  943. (*(pI)->lpVtbl->GetNextRows)((pI), udlRowsToSkip, pFetchParams)
  944. #define ICursorScroll_Requery(pI) \
  945. (*(pI)->lpVtbl->Requery)((pI))
  946. #define ICursorScroll_Move(pI, cbBookmark, pBookmark, dlOffset, pFetchParams) \
  947. (*(pI)->lpVtbl->Move)((pI), cbBookmark, pBookmark, dlOffset, pFetchParams)
  948. #define ICursorScroll_GetBookmark(pI, pBookmarkType, cbMaxSize, pcbBookmark, pBookmark) \
  949. (*(pI)->lpVtbl->GetBookmark)((pI), pBookmarkType, cbMaxSize, pcbBookmark, pBookmark)
  950. #define ICursorScroll_Clone(pI, dwFlags, riid, ppvClonedCursor) \
  951. (*(pI)->lpVtbl->Clone)((pI), dwFlags, riid, ppvClonedCursor)
  952. #define ICursorScroll_Scroll(pI, ulNumerator, ulDenominator, pFetchParams) \
  953. (*(pI)->lpVtbl->Scroll)((pI), ulNumerator, ulDenominator, pFetchParams)
  954. #define ICursorScroll_GetApproximatePosition(pI, cbBookmark, pBookmark, pulNumerator, pulDenominator) \
  955. (*(pI)->lpVtbl->GetApproximatePosition)((pI), cbBookmark, pBookmark, pulNumerator, pulDenominator)
  956. #define ICursorScroll_GetApproximateCount(pI, pudlApproxCount, pdwFullyPopulated) \
  957. (*(pI)->lpVtbl->GetApproximateCount)((pI), pudlApproxCount, pdwFullyPopulated)
  958. #endif /* COBJMACROS */
  959. #endif
  960. /*----------------------------------------------------------------------------
  961. *
  962. * ICursorUpdateARow
  963. *
  964. *----------------------------------------------------------------------------
  965. */
  966. /* Forward declaration */
  967. //typedef interface ICursorUpdateARow ICursorUpdateARow;
  968. typedef enum tagDBEDITMODE
  969. {
  970. DBEDITMODE_NONE = 1,
  971. DBEDITMODE_UPDATE = 2,
  972. DBEDITMODE_ADD = 3
  973. }
  974. DBEDITMODE;
  975. #if defined(__cplusplus) && !defined(CINTERFACE)
  976. /* C++ Language Binding */
  977. //extern "C" const IID IID_ICursorUpdateARow;
  978. interface ICursorUpdateARow : public IUnknown
  979. {
  980. public:
  981. virtual HRESULT STDMETHODCALLTYPE BeginUpdate
  982. (
  983. DWORD dwFlags
  984. ) = 0;
  985. virtual HRESULT STDMETHODCALLTYPE SetColumn
  986. (
  987. DBCOLUMNID *pcid,
  988. DBBINDPARAMS *pBindParams
  989. ) = 0;
  990. virtual HRESULT STDMETHODCALLTYPE GetColumn
  991. (
  992. DBCOLUMNID *pcid,
  993. DBBINDPARAMS *pBindParams,
  994. DWORD *pdwFlags
  995. ) = 0;
  996. virtual HRESULT STDMETHODCALLTYPE GetEditMode
  997. (
  998. DWORD *pdwState
  999. ) = 0;
  1000. virtual HRESULT STDMETHODCALLTYPE Update
  1001. (
  1002. DBCOLUMNID *pBookmarkType,
  1003. ULONG *pcbBookmark,
  1004. void **ppBookmark
  1005. ) = 0;
  1006. virtual HRESULT STDMETHODCALLTYPE Cancel
  1007. (
  1008. void
  1009. ) = 0;
  1010. virtual HRESULT STDMETHODCALLTYPE Delete
  1011. (
  1012. void
  1013. ) = 0;
  1014. };
  1015. #else
  1016. /* C Language Binding */
  1017. //extern const IID IID_ICursorUpdateARow;
  1018. typedef struct ICursorUpdateARowVtbl
  1019. {
  1020. HRESULT (STDMETHODCALLTYPE FAR *QueryInterface)
  1021. (
  1022. ICursorUpdateARow FAR *this,
  1023. REFIID riid,
  1024. void **ppvObject
  1025. );
  1026. ULONG (STDMETHODCALLTYPE FAR *AddRef)
  1027. (
  1028. ICursorUpdateARow FAR *this
  1029. );
  1030. ULONG (STDMETHODCALLTYPE FAR *Release)
  1031. (
  1032. ICursorUpdateARow FAR *this
  1033. );
  1034. HRESULT (STDMETHODCALLTYPE FAR *BeginUpdate)
  1035. (
  1036. ICursorUpdateARow FAR *this,
  1037. DWORD dwFlags
  1038. );
  1039. HRESULT (STDMETHODCALLTYPE FAR *SetColumn)
  1040. (
  1041. ICursorUpdateARow FAR *this,
  1042. DBCOLUMNID *pcid,
  1043. DBBINDPARAMS *pBindParams
  1044. );
  1045. HRESULT (STDMETHODCALLTYPE FAR *GetColumn)
  1046. (
  1047. ICursorUpdateARow FAR *this,
  1048. DBCOLUMNID *pcid,
  1049. DBBINDPARAMS *pBindParams,
  1050. DWORD *pdwFlags
  1051. );
  1052. HRESULT (STDMETHODCALLTYPE FAR *GetEditMode)
  1053. (
  1054. ICursorUpdateARow FAR *this,
  1055. DWORD *pdwState
  1056. );
  1057. HRESULT (STDMETHODCALLTYPE FAR *Update)
  1058. (
  1059. ICursorUpdateARow FAR *this,
  1060. DBCOLUMNID *pBookmarkType,
  1061. ULONG *pcbBookmark,
  1062. void **ppBookmark
  1063. );
  1064. HRESULT (STDMETHODCALLTYPE FAR *Cancel)
  1065. (
  1066. ICursorUpdateARow FAR *this
  1067. );
  1068. HRESULT (STDMETHODCALLTYPE FAR *Delete)
  1069. (
  1070. ICursorUpdateARow FAR *this
  1071. );
  1072. } ICursorUpdateARowVtbl;
  1073. interface ICursorUpdateARow
  1074. {
  1075. ICursorUpdateARowVtbl FAR *lpVtbl;
  1076. } ;
  1077. #ifdef COBJMACROS
  1078. #define ICursorUpdateARow_QueryInterface(pI, riid, ppvObject) \
  1079. (*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
  1080. #define ICursorUpdateARow_AddRef(pI) \
  1081. (*(pI)->lpVtbl->AddRef)((pI))
  1082. #define ICursorUpdateARow_Release(pI) \
  1083. (*(pI)->lpVtbl->Release)((pI))
  1084. #define ICursorUpdateARow_BeginUpdate(pI, dwFlags) \
  1085. (*(pI)->lpVtbl->BeginUpdate)((pI), dwFlags)
  1086. #define ICursorUpdateARow_SetColumn(pI, pcid, pBindParams) \
  1087. (*(pI)->lpVtbl->SetColumn)((pI), pcid, pBindParams)
  1088. #define ICursorUpdateARow_GetColumn(pI, pcid, pBindParams, pdwFlags) \
  1089. (*(pI)->lpVtbl->GetColumn)((pI), pcid, pBindParams, pdwFlags)
  1090. #define ICursorUpdateARow_GetEditMode(pI, pdwState) \
  1091. (*(pI)->lpVtbl->GetEditMode)((pI), pdwState)
  1092. #define ICursorUpdateARow_Update(pI, pBookmarkType, pcbBookmark, ppBookmark) \
  1093. (*(pI)->lpVtbl->Update)((pI), pBookmarkType, pcbBookmark, ppBookmark)
  1094. #define ICursorUpdateARow_Cancel(pI) \
  1095. (*(pI)->lpVtbl->Cancel)((pI))
  1096. #define ICursorUpdateARow_Delete(pI) \
  1097. (*(pI)->lpVtbl->Delete)((pI))
  1098. #endif /* COBJMACROS */
  1099. #endif
  1100. /*----------------------------------------------------------------------------
  1101. *
  1102. * ICursorFind
  1103. *
  1104. *----------------------------------------------------------------------------
  1105. */
  1106. /* Forward declaration */
  1107. //typedef interface ICursorFind ICursorFind;
  1108. typedef enum tagDBFINDFLAGS
  1109. {
  1110. DBFINDFLAGS_FINDNEXT = 1,
  1111. DBFINDFLAGS_FINDPRIOR = 2,
  1112. DBFINDFLAGS_INCLUDECURRENT = 4
  1113. }
  1114. DBFINDFLAGS;
  1115. typedef enum tagDBSEEKFLAGS
  1116. {
  1117. DBSEEK_LT = 1,
  1118. DBSEEK_LE = 2,
  1119. DBSEEK_EQ = 3, // EXACT EQUALITY
  1120. DBSEEK_GT = 4,
  1121. DBSEEK_GE = 5,
  1122. DBSEEK_PARTIALEQ = 6 // only for strings
  1123. }
  1124. DBSEEKFLAGS;
  1125. #if defined(__cplusplus) && !defined(CINTERFACE)
  1126. /* C++ Language Binding */
  1127. //extern "C" const IID IID_ICursorFind;
  1128. interface ICursorFind : public IUnknown
  1129. {
  1130. public:
  1131. virtual HRESULT STDMETHODCALLTYPE FindByValues
  1132. (
  1133. ULONG cbBookmark,
  1134. LPVOID pBookmark,
  1135. DWORD dwFindFlags,
  1136. ULONG cValues,
  1137. DBCOLUMNID rgColumns[],
  1138. DBVARIANT rgValues[],
  1139. DWORD rgdwSeekFlags[],
  1140. DBFETCHROWS FAR *pFetchParams
  1141. ) = 0;
  1142. };
  1143. #else
  1144. /* C Language Binding */
  1145. //extern const IID IID_ICursorFind;
  1146. typedef struct ICursorFindVtbl
  1147. {
  1148. HRESULT (STDMETHODCALLTYPE FAR *QueryInterface)
  1149. (
  1150. ICursorFind FAR *this,
  1151. REFIID riid,
  1152. void **ppvObject
  1153. );
  1154. ULONG (STDMETHODCALLTYPE FAR *AddRef)
  1155. (
  1156. ICursorFind FAR *this
  1157. );
  1158. ULONG (STDMETHODCALLTYPE FAR *Release)
  1159. (
  1160. ICursorFind FAR *this
  1161. );
  1162. HRESULT (STDMETHODCALLTYPE FAR *FindByValues)
  1163. (
  1164. ICursorFind FAR *this,
  1165. ULONG cbBookmark,
  1166. LPVOID pBookmark,
  1167. DWORD dwFindFlags,
  1168. ULONG cValues,
  1169. DBCOLUMNID rgColumns[],
  1170. DBVARIANT rgValues[],
  1171. DWORD rgdwSeekFlags[],
  1172. DBFETCHROWS pFetchParams
  1173. );
  1174. } ICursorFindVtbl;
  1175. interface ICursorFind
  1176. {
  1177. ICursorFindVtbl FAR *lpVtbl;
  1178. } ;
  1179. #ifdef COBJMACROS
  1180. #define ICursorFind_QueryInterface(pI, riid, ppvObject) \
  1181. (*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
  1182. #define ICursorFind_AddRef(pI) \
  1183. (*(pI)->lpVtbl->AddRef)((pI))
  1184. #define ICursorFind_Release(pI) \
  1185. (*(pI)->lpVtbl->Release)((pI))
  1186. #define ICursorFind_FindByValues(pI, cbB, pB, dwFF, cV, rgC, rgV, rgSF, pF) \
  1187. (*(pI)->lpVtbl->FindByValues)((pI), cbB, pB, dwFF, cB, rgC, rgV, rgSF, pF)
  1188. #endif /* COBJMACROS */
  1189. #endif
  1190. /*----------------------------------------------------------------------------
  1191. *
  1192. * IEntryID
  1193. *
  1194. *----------------------------------------------------------------------------
  1195. */
  1196. /* Forward declaration */
  1197. //typedef interface IEntryID IEntryID;
  1198. #if defined(__cplusplus) && !defined(CINTERFACE)
  1199. /* C++ Language Binding */
  1200. //extern "C" const IID IID_IEntryID;
  1201. interface IEntryID : public IUnknown
  1202. {
  1203. public:
  1204. virtual HRESULT STDMETHODCALLTYPE GetInterface
  1205. (
  1206. ULONG cbEntryID,
  1207. void *pEntryID,
  1208. DWORD dwFlags,
  1209. REFIID riid,
  1210. IUnknown **ppvObj
  1211. ) = 0;
  1212. };
  1213. #else
  1214. /* C Language Binding */
  1215. //extern const IID IID_IEntryID;
  1216. typedef struct IEntryIDVtbl
  1217. {
  1218. HRESULT (STDMETHODCALLTYPE FAR *QueryInterface)
  1219. (
  1220. IEntryID FAR *this,
  1221. REFIID riid,
  1222. void **ppvObject
  1223. );
  1224. ULONG (STDMETHODCALLTYPE FAR *AddRef)
  1225. (
  1226. IEntryID FAR *this
  1227. );
  1228. ULONG (STDMETHODCALLTYPE FAR *Release)
  1229. (
  1230. IEntryID FAR *this
  1231. );
  1232. HRESULT (STDMETHODCALLTYPE FAR *GetInterface)
  1233. (
  1234. IEntryID FAR *this,
  1235. ULONG cbEntryID,
  1236. void *pEntryID,
  1237. REFIID riid,
  1238. IUnknown **ppvObj
  1239. );
  1240. } IEntryIDVtbl;
  1241. interface IEntryID
  1242. {
  1243. IEntryIDVtbl FAR *lpVtbl;
  1244. } ;
  1245. #ifdef COBJMACROS
  1246. #define IEntryID_QueryInterface(pI, riid, ppvObject) \
  1247. (*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
  1248. #define IEntryID_AddRef(pI) \
  1249. (*(pI)->lpVtbl->AddRef)((pI))
  1250. #define IEntryID_Release(pI) \
  1251. (*(pI)->lpVtbl->Release)((pI))
  1252. #define IEntryID_GetInterface(pI, cbEntryID, pEntryID, riid, ppvObj) \
  1253. (*(pI)->lpVtbl->GetInterface)((pI), cbEntryID, pEntryID, riid, ppvObj)
  1254. #endif /* COBJMACROS */
  1255. #endif
  1256. /*----------------------------------------------------------------------------
  1257. *
  1258. * INotifyDBEvents
  1259. *
  1260. *----------------------------------------------------------------------------
  1261. */
  1262. /* Forward declaration */
  1263. //typedef interface INotifyDBEvents INotifyDBEvents;
  1264. #if defined(__cplusplus) && !defined(CINTERFACE)
  1265. /* C++ Language Binding */
  1266. //extern "C" const IID IID_INotifyDBEvents;
  1267. interface INotifyDBEvents : public IUnknown
  1268. {
  1269. public:
  1270. virtual HRESULT STDMETHODCALLTYPE OKToDo
  1271. (
  1272. DWORD dwEventWhat,
  1273. ULONG cReasons,
  1274. DBNOTIFYREASON rgReasons[]
  1275. ) = 0;
  1276. virtual HRESULT STDMETHODCALLTYPE Cancelled
  1277. (
  1278. DWORD dwEventWhat,
  1279. ULONG cReasons,
  1280. DBNOTIFYREASON rgReasons[]
  1281. ) = 0;
  1282. virtual HRESULT STDMETHODCALLTYPE SyncBefore
  1283. (
  1284. DWORD dwEventWhat,
  1285. ULONG cReasons,
  1286. DBNOTIFYREASON rgReasons[]
  1287. ) = 0;
  1288. virtual HRESULT STDMETHODCALLTYPE AboutToDo
  1289. (
  1290. DWORD dwEventWhat,
  1291. ULONG cReasons,
  1292. DBNOTIFYREASON rgReasons[]
  1293. ) = 0;
  1294. virtual HRESULT STDMETHODCALLTYPE FailedToDo
  1295. (
  1296. DWORD dwEventWhat,
  1297. ULONG cReasons,
  1298. DBNOTIFYREASON rgReasons[]
  1299. ) = 0;
  1300. virtual HRESULT STDMETHODCALLTYPE SyncAfter
  1301. (
  1302. DWORD dwEventWhat,
  1303. ULONG cReasons,
  1304. DBNOTIFYREASON rgReasons[]
  1305. ) = 0;
  1306. virtual HRESULT STDMETHODCALLTYPE DidEvent
  1307. (
  1308. DWORD dwEventWhat,
  1309. ULONG cReasons,
  1310. DBNOTIFYREASON rgReasons[]
  1311. ) = 0;
  1312. };
  1313. #else
  1314. /* C Language Binding */
  1315. extern const IID IID_INotifyDBEvents;
  1316. typedef struct INotifyDBEventsVtbl
  1317. {
  1318. HRESULT (STDMETHODCALLTYPE FAR *QueryInterface)
  1319. (
  1320. INotifyDBEvents FAR *this,
  1321. REFIID riid,
  1322. void **ppvObject
  1323. );
  1324. ULONG (STDMETHODCALLTYPE FAR *AddRef)
  1325. (
  1326. INotifyDBEvents FAR *this
  1327. );
  1328. ULONG (STDMETHODCALLTYPE FAR *Release)
  1329. (
  1330. INotifyDBEvents FAR *this
  1331. );
  1332. HRESULT (STDMETHODCALLTYPE FAR *OKToDo)
  1333. (
  1334. INotifyDBEvents FAR *this,
  1335. DWORD dwEventWhat,
  1336. ULONG cReasons,
  1337. DBNOTIFYREASON rgReasons[]
  1338. );
  1339. HRESULT (STDMETHODCALLTYPE FAR *Cancelled)
  1340. (
  1341. INotifyDBEvents FAR *this,
  1342. DWORD dwEventWhat,
  1343. ULONG cReasons,
  1344. DBNOTIFYREASON rgReasons[]
  1345. );
  1346. HRESULT (STDMETHODCALLTYPE FAR *SyncBefore)
  1347. (
  1348. INotifyDBEvents FAR *this,
  1349. DWORD dwEventWhat,
  1350. ULONG cReasons,
  1351. DBNOTIFYREASON rgReasons[]
  1352. );
  1353. HRESULT (STDMETHODCALLTYPE FAR *AboutToDo)
  1354. (
  1355. INotifyDBEvents FAR *this,
  1356. DWORD dwEventWhat,
  1357. ULONG cReasons,
  1358. DBNOTIFYREASON rgReasons[]
  1359. );
  1360. HRESULT (STDMETHODCALLTYPE FAR *FailedToDo)
  1361. (
  1362. INotifyDBEvents FAR *this,
  1363. DWORD dwEventWhat,
  1364. ULONG cReasons,
  1365. DBNOTIFYREASON rgReasons[]
  1366. );
  1367. HRESULT (STDMETHODCALLTYPE FAR *SyncAfter)
  1368. (
  1369. INotifyDBEvents FAR *this,
  1370. DWORD dwEventWhat,
  1371. ULONG cReasons,
  1372. DBNOTIFYREASON rgReasons[]
  1373. );
  1374. HRESULT (STDMETHODCALLTYPE FAR *DidEvent)
  1375. (
  1376. INotifyDBEvents FAR *this,
  1377. DWORD dwEventWhat,
  1378. ULONG cReasons,
  1379. DBNOTIFYREASON rgReasons[]
  1380. );
  1381. } INotifyDBEventsVtbl;
  1382. interface INotifyDBEvents
  1383. {
  1384. INotifyDBEventsVtbl FAR *lpVtbl;
  1385. } ;
  1386. #ifdef COBJMACROS
  1387. #define INotifyDBEvents_QueryInterface(pI, riid, ppvObject) \
  1388. (*(pI)->lpVtbl->QueryInterface)((pI), riid, ppvObject)
  1389. #define INotifyDBEvents_AddRef(pI) \
  1390. (*(pI)->lpVtbl->AddRef)((pI))
  1391. #define INotifyDBEvents_Release(pI) \
  1392. (*(pI)->lpVtbl->Release)((pI))
  1393. #define INotifyDBEvents_OKToDo(pI, dwEventWhat, cReasons, rgReasons) \
  1394. (*(pI)->lpVtbl->OKToDo)((pI), dwEventWhat, cReasons, rgReasons)
  1395. #define INotifyDBEvents_Cancelled(pI, dwEventWhat, cReasons, rgReasons) \
  1396. (*(pI)->lpVtbl->Cancelled)((pI), dwEventWhat, cReasons, rgReasons)
  1397. #define INotifyDBEvents_SyncBefore(pI, dwEventWhat, cReasons, rgReasons) \
  1398. (*(pI)->lpVtbl->SyncBefore)((pI), dwEventWhat, cReasons, rgReasons)
  1399. #define INotifyDBEvents_AboutToDo(pI, dwEventWhat, cReasons, rgReasons) \
  1400. (*(pI)->lpVtbl->AboutToDo)((pI), dwEventWhat, cReasons, rgReasons)
  1401. #define INotifyDBEvents_FailedToDo(pI, dwEventWhat, cReasons, rgReasons) \
  1402. (*(pI)->lpVtbl->FailedToDo)((pI), dwEventWhat, cReasons, rgReasons)
  1403. #define INotifyDBEvents_SyncAfter(pI, dwEventWhat, cReasons, rgReasons) \
  1404. (*(pI)->lpVtbl->SyncAfter)((pI), dwEventWhat, cReasons, rgReasons)
  1405. #define INotifyDBEvents_DidEvent(pI, dwEventWhat, cReasons, rgReasons) \
  1406. (*(pI)->lpVtbl->DidEvent)((pI), dwEventWhat, cReasons, rgReasons)
  1407. #endif /* COBJMACROS */
  1408. #endif
  1409. #ifdef __cplusplus
  1410. }
  1411. #endif
  1412. #define __OCDB_H_
  1413. #endif // __OCDB_H_