ocdb.h 45 KB

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