push 5b1efc32b5a8acb1d5b5e60584746392dd0c436e
[wine/hacks.git] / include / dbs.idl
bloba2ed65674961541de349bef8aba4e88d364a3537
1 /*
2 * Copyright (C) 2006 Mike McCormack
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 typedef DWORD DBKIND;
21 enum DBKINDENUM {
22 DBKIND_GUID_NAME,
23 DBKIND_GUID_PROPID,
24 DBKIND_NAME,
25 DBKIND_PGUID_NAME,
26 DBKIND_PGUID_PROPID,
27 DBKIND_PROPID,
28 DBKIND_GUID,
31 typedef struct tagDBID {
32 [switch_type(DBKIND), switch_is(eKind)] union
34 [case(DBKIND_GUID_NAME, DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_NAME, DBKIND_PROPID)]
35 GUID guid;
36 [case(DBKIND_PGUID_NAME, DBKIND_PGUID_PROPID)]
37 GUID *pguid;
38 [default]
40 } uGuid;
41 DBKIND eKind;
42 [switch_type(DBKIND), switch_is(eKind)] union
44 [case(DBKIND_GUID_NAME, DBKIND_NAME, DBKIND_PGUID_NAME)]
45 LPOLESTR pwszName;
46 [case(DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_PGUID_PROPID, DBKIND_PROPID)]
47 ULONG ulPropid;
48 [default]
50 } uName;
51 } DBID;
53 typedef DWORD DBPROPID;
55 typedef struct tagDBPROPIDSET {
56 [size_is(cPropertyIDs)] DBPROPID *rgPropertyIDs;
57 ULONG cPropertyIDs;
58 GUID guidPropertySet;
59 } DBPROPIDSET;
61 typedef DWORD DBPROPOPTIONS;
63 enum DBPROPOPTIONENUM {
64 DBPROPOPTIONS_REQUIRED = 0,
65 DBPROPOPTIONS_SETIFCHEAP = 1,
66 DBPROPOPTIONS_OPTIONAL = 1,
69 typedef DWORD DBPROPSTATUS;
71 typedef struct tagDBPROP {
72 DBPROPID dwPropertyID;
73 DBPROPOPTIONS dwOptions;
74 DBPROPSTATUS dwStatus;
75 DBID colid;
76 VARIANT vValue;
77 } DBPROP;
79 typedef struct tagDBPROPSET {
80 [size_is(cProperties)] DBPROP *rgProperties;
81 ULONG cProperties;
82 GUID guidPropertySet;
83 } DBPROPSET;
85 typedef DWORD DBPROPFLAGS;
87 typedef struct tagDBPROPINFO {
88 LPOLESTR pwszDescription;
89 DBPROPID dwPropertyID;
90 DBPROPFLAGS dwFlags;
91 VARTYPE vtType;
92 VARIANT vValues;
93 } DBPROPINFO;
95 typedef DBPROPINFO *PDBPROPINFO;
97 typedef struct tagDBPROPINFOSET {
98 [size_is(cPropertyInfos)] PDBPROPINFO rgPropertyInfos;
99 ULONG cPropertyInfos;
100 GUID guidPropertySet;
101 } DBPROPINFOSET;
103 typedef DWORD DBBINDURLFLAG;
104 typedef DWORD DBBINDURLSTATUS;
106 typedef struct tagDBIMPLICITSESSION
108 IUnknown *pUnkOuter;
109 IID *piid;
110 IUnknown *pSession;
111 } DBIMPLICITSESSION;
113 typedef WORD DBTYPE;
115 enum DBTYPEENUM
117 DBTYPE_EMPTY = 0,
118 DBTYPE_NULL = 1,
119 DBTYPE_I2 = 2,
120 DBTYPE_I4 = 3,
121 DBTYPE_R4 = 4,
122 DBTYPE_R8 = 5,
123 DBTYPE_CY = 6,
124 DBTYPE_DATE = 7,
125 DBTYPE_BSTR = 8,
126 DBTYPE_IDISPATCH = 9,
127 DBTYPE_ERROR = 10,
128 DBTYPE_BOOL = 11,
129 DBTYPE_VARIANT = 12,
130 DBTYPE_IUNKNOWN = 13,
131 DBTYPE_DECIMAL = 14,
132 DBTYPE_I1 = 16,
133 DBTYPE_UI1 = 17,
134 DBTYPE_UI2 = 18,
135 DBTYPE_UI4 = 19,
136 DBTYPE_I8 = 20,
137 DBTYPE_UI8 = 21,
138 DBTYPE_GUID = 72,
139 DBTYPE_BYTES = 128,
140 DBTYPE_STR = 129,
141 DBTYPE_WSTR = 130,
142 DBTYPE_NUMERIC = 131,
143 DBTYPE_UDT = 132,
144 DBTYPE_DBDATE = 133,
145 DBTYPE_DBTIME = 134,
146 DBTYPE_DBTIMESTAMP = 135,
148 DBTYPE_VECTOR = 0x1000,
149 DBTYPE_ARRAY = 0x2000,
150 DBTYPE_BYREF = 0x4000,
151 DBTYPE_RESERVED = 0x8000
154 enum DBTYPEENUM15
156 DBTYPE_HCHAPTER = 136
159 enum DBTYPEENUM20
161 DBTYPE_FILETIME = 64,
162 DBTYPE_PROPVARIANT = 138,
163 DBTYPE_VARNUMERIC = 139
166 typedef DWORD DBSTATUS;
168 enum DBSTATUSENUM
170 DBSTATUS_S_OK = 0,
171 DBSTATUS_E_BADACCESSOR = 1,
172 DBSTATUS_E_CANTCONVERTVALUE = 2,
173 DBSTATUS_S_ISNULL = 3,
174 DBSTATUS_S_TRUNCATED = 4,
175 DBSTATUS_E_SIGNMISMATCH = 5,
176 DBSTATUS_E_DATAOVERFLOW = 6,
177 DBSTATUS_E_CANTCREATE = 7,
178 DBSTATUS_E_UNAVAILABLE = 8,
179 DBSTATUS_E_PERMISSIONDENIED = 9,
180 DBSTATUS_E_INTEGRITYVIOLATION = 10,
181 DBSTATUS_E_SCHEMAVIOLATION = 11,
182 DBSTATUS_E_BADSTATUS = 12,
183 DBSTATUS_S_DEFAULT = 13
186 cpp_quote("DEFINE_GUID(DBGUID_SESSION, 0xc8b522f5, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
187 cpp_quote("DEFINE_GUID(DBGUID_ROWSET, 0xc8b522f6, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
188 cpp_quote("DEFINE_GUID(DBGUID_ROW, 0xc8b522f7, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
189 cpp_quote("DEFINE_GUID(DBGUID_STREAM, 0xc8b522f9, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
191 typedef struct tagDBCOLUMNACCESS
193 void *pData;
194 DBID columnid;
195 DBLENGTH cbDataLen;
196 DBSTATUS dwStatus;
197 DBLENGTH cbMaxLen;
198 DB_DWRESERVE dwReserved;
199 DBTYPE wType;
200 BYTE bPrecision;
201 BYTE bScale;
202 } DBCOLUMNACCESS;
204 typedef DWORD DBROWSTATUS;
206 enum DBROWSTATUSENUM
208 DBROWSTATUS_S_OK = 0,
209 /* FIXME */
210 DBROWSTATUS_E_FAIL = 19,
214 typedef DWORD DBPART;
216 enum DBPARTENUM
218 DBPART_INVALID = 0,
219 DBPART_VALUE = 1,
220 DBPART_LENGTH = 2,
221 DBPART_STATUS = 4,
224 typedef DWORD DBPARAMIO;
226 enum DBPARAMIOENUM
228 DBPARAMIO_NOTPARAM = 0,
229 DBPARAMIO_INPUT = 1,
230 DBPARAMIO_OUTPUT = 2,
233 typedef DWORD DBMEMOWNER;
235 enum DBMEMOWNERENUM
237 DBMEMOWNER_CLIENTOWNED = 0,
238 DBMEMOWNER_PROVIDEROWNED = 1,
241 typedef struct tagDBOBJECT
243 DWORD dwFlags;
244 IID iid;
245 } DBOBJECT;
247 typedef struct tagDBBINDEXT
249 [size_is((ULONG)ulExtension)] BYTE *pExtension;
250 DBCOUNTITEM ulExtension;
251 } DBBINDEXT;
253 typedef struct tagDBBINDING
255 DBORDINAL iOrdinal;
256 DBBYTEOFFSET obValue;
257 DBBYTEOFFSET obLength;
258 DBBYTEOFFSET obStatus;
259 ITypeInfo *pTypeInfo;
260 DBOBJECT *pObject;
261 DBBINDEXT *pBindExt;
262 DBPART dwPart;
263 DBMEMOWNER dwMemOwner;
264 DBPARAMIO eParamIO;
265 DBLENGTH cbMaxLen;
266 DWORD dwFlags;
267 DBTYPE wType;
268 BYTE bPrecision;
269 BYTE bScale;
270 } DBBINDING;
272 typedef ULONG_PTR HACCESSOR;
274 cpp_quote("#define DB_INVALID_HACCESSOR 0x00")
276 typedef ULONG_PTR HROW;
278 cpp_quote("#define DB_NULL_HROW 0x00")
280 typedef ULONG_PTR HWATCHREGION;
282 cpp_quote("#define DBWATCHREGION_NULL NULL")
284 typedef ULONG_PTR HCHAPTER;
286 cpp_quote("#define DB_NULL_HCHAPTER 0x00")
288 typedef struct tagDBPARAMS
290 void *pData;
291 DB_UPARAMS cParamSets;
292 HACCESSOR hAccessor;
293 } DBPARAMS;
295 typedef DWORD DBASYNCHOP;
297 enum DBASYNCHOPENUM
299 DBSYNCHOP_OPEN,
302 typedef DWORD DBASYNCHPHASE;
304 enum DBASYNCHPHASEENUM
306 DBASYNCHPHASE_INITIALIZATION,
307 DBASYNCHPHASE_POPULATION,
308 DBASYNCHPHASE_COMPLETE,
309 DBASYNCHPHASE_CANCELED,
312 typedef struct tagRMTPACK
314 ISequentialStream *pISeqStream;
315 ULONG cbData;
316 ULONG cBSTR;
317 [size_is(cBSTR)] BSTR *rgBSTR;
318 ULONG cVARIANT;
319 [size_is(cVARIANT)] VARIANT *rgVARIANT;
320 ULONG cIDISPATCH;
321 [size_is(cIDISPATCH)] IDispatch **rgIDISPATCH;
322 ULONG cIUNKNOWN;
323 [size_is(cIUNKNOWN)] IUnknown **rgIUNKNOWN;
324 ULONG cPROPVARIANT;
325 [size_is(cPROPVARIANT)] PROPVARIANT *rgPROPVARIANT;
326 ULONG cArray;
327 [size_is(cArray)] VARIANT *rgArray;
328 } RMTPACK;