xref: /reactos/sdk/include/psdk/dbs.idl (revision 40462c92)
1/*
2 * Copyright (C) 2006 Mike McCormack
3 *
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.
8 *
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.
13 *
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
17 */
18
19typedef DWORD DBKIND;
20
21enum 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,
29};
30
31typedef struct tagDBID {
32    [switch_type(DBKIND), switch_is(eKind)] union
33    {
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]
39        ;
40    } uGuid;
41    DBKIND eKind;
42    [switch_type(DBKIND), switch_is(eKind)] union
43    {
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]
49        ;
50    } uName;
51} DBID;
52
53typedef DWORD DBPROPID;
54
55typedef struct tagDBPROPIDSET {
56    [size_is(cPropertyIDs)] DBPROPID *rgPropertyIDs;
57    ULONG cPropertyIDs;
58    GUID guidPropertySet;
59} DBPROPIDSET;
60
61typedef DWORD DBPROPOPTIONS;
62
63enum DBPROPOPTIONENUM {
64    DBPROPOPTIONS_REQUIRED = 0,
65    DBPROPOPTIONS_SETIFCHEAP = 1,
66    DBPROPOPTIONS_OPTIONAL = 1,
67};
68
69typedef DWORD DBPROPSTATUS;
70
71typedef struct tagDBPROP {
72    DBPROPID dwPropertyID;
73    DBPROPOPTIONS dwOptions;
74    DBPROPSTATUS dwStatus;
75    DBID colid;
76    VARIANT vValue;
77} DBPROP;
78
79typedef struct tagDBPROPSET {
80    [size_is(cProperties)] DBPROP *rgProperties;
81    ULONG cProperties;
82    GUID guidPropertySet;
83} DBPROPSET;
84
85typedef DWORD DBPROPFLAGS;
86
87typedef struct tagDBPROPINFO {
88    LPOLESTR pwszDescription;
89    DBPROPID dwPropertyID;
90    DBPROPFLAGS dwFlags;
91    VARTYPE vtType;
92    VARIANT vValues;
93} DBPROPINFO;
94
95typedef DBPROPINFO *PDBPROPINFO;
96
97typedef struct tagDBPROPINFOSET {
98    [size_is(cPropertyInfos)] PDBPROPINFO rgPropertyInfos;
99    ULONG cPropertyInfos;
100    GUID guidPropertySet;
101} DBPROPINFOSET;
102
103typedef DWORD DBBINDURLFLAG;
104typedef DWORD DBBINDURLSTATUS;
105
106typedef struct tagDBIMPLICITSESSION
107{
108    IUnknown *pUnkOuter;
109    IID *piid;
110    IUnknown *pSession;
111} DBIMPLICITSESSION;
112
113typedef WORD DBTYPE;
114
115enum DBTYPEENUM
116{
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,
147
148    DBTYPE_VECTOR        = 0x1000,
149    DBTYPE_ARRAY         = 0x2000,
150    DBTYPE_BYREF         = 0x4000,
151    DBTYPE_RESERVED      = 0x8000
152};
153
154enum DBTYPEENUM15
155{
156    DBTYPE_HCHAPTER      = 136
157};
158
159enum DBTYPEENUM20
160{
161    DBTYPE_FILETIME      = 64,
162    DBTYPE_PROPVARIANT   = 138,
163    DBTYPE_VARNUMERIC    = 139
164};
165
166typedef DWORD DBSTATUS;
167
168enum DBSTATUSENUM
169{
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
184};
185
186cpp_quote("#ifdef DBINITCONSTANTS")
187cpp_quote("#ifdef __cplusplus")
188cpp_quote("#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \\")
189cpp_quote("        EXTERN_C const GUID name DECLSPEC_HIDDEN;     \\")
190cpp_quote("        EXTERN_C const GUID name =                    \\")
191cpp_quote("	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }")
192cpp_quote("#else")
193cpp_quote("#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \\")
194cpp_quote("        const GUID name DECLSPEC_HIDDEN;      \\")
195cpp_quote("        const GUID name =                             \\")
196cpp_quote("	{ l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }")
197cpp_quote("#endif")
198cpp_quote("#else")
199cpp_quote("#define DEFINE_DBGUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \\")
200cpp_quote("    EXTERN_C const GUID name DECLSPEC_HIDDEN")
201cpp_quote("#endif")
202
203cpp_quote("DEFINE_DBGUID(DBGUID_SESSION,    0xc8b522f5, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
204cpp_quote("DEFINE_DBGUID(DBGUID_ROWSET,     0xc8b522f6, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
205cpp_quote("DEFINE_DBGUID(DBGUID_ROW,        0xc8b522f7, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
206cpp_quote("DEFINE_DBGUID(DBGUID_STREAM,     0xc8b522f9, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);")
207
208typedef struct tagDBCOLUMNACCESS
209{
210    void *pData;
211    DBID columnid;
212    DBLENGTH cbDataLen;
213    DBSTATUS dwStatus;
214    DBLENGTH cbMaxLen;
215    DB_DWRESERVE dwReserved;
216    DBTYPE wType;
217    BYTE bPrecision;
218    BYTE bScale;
219} DBCOLUMNACCESS;
220
221typedef DWORD DBROWSTATUS;
222
223enum DBROWSTATUSENUM
224{
225    DBROWSTATUS_S_OK         = 0,
226    /* FIXME */
227    DBROWSTATUS_E_FAIL       = 19,
228
229};
230
231typedef DWORD DBPART;
232
233enum DBPARTENUM
234{
235    DBPART_INVALID  = 0,
236    DBPART_VALUE    = 1,
237    DBPART_LENGTH   = 2,
238    DBPART_STATUS   = 4,
239};
240
241typedef DWORD DBPARAMIO;
242
243enum DBPARAMIOENUM
244{
245    DBPARAMIO_NOTPARAM = 0,
246    DBPARAMIO_INPUT    = 1,
247    DBPARAMIO_OUTPUT   = 2,
248};
249
250typedef DWORD DBMEMOWNER;
251
252enum DBMEMOWNERENUM
253{
254    DBMEMOWNER_CLIENTOWNED    = 0,
255    DBMEMOWNER_PROVIDEROWNED  = 1,
256};
257
258typedef struct tagDBOBJECT
259{
260    DWORD dwFlags;
261    IID iid;
262} DBOBJECT;
263
264typedef struct tagDBBINDEXT
265{
266    [size_is((ULONG)ulExtension)] BYTE *pExtension;
267    DBCOUNTITEM ulExtension;
268} DBBINDEXT;
269
270typedef struct tagDBBINDING
271{
272    DBORDINAL iOrdinal;
273    DBBYTEOFFSET obValue;
274    DBBYTEOFFSET obLength;
275    DBBYTEOFFSET obStatus;
276    ITypeInfo *pTypeInfo;
277    DBOBJECT *pObject;
278    DBBINDEXT *pBindExt;
279    DBPART dwPart;
280    DBMEMOWNER dwMemOwner;
281    DBPARAMIO eParamIO;
282    DBLENGTH cbMaxLen;
283    DWORD dwFlags;
284    DBTYPE wType;
285    BYTE bPrecision;
286    BYTE bScale;
287} DBBINDING;
288
289typedef ULONG_PTR HACCESSOR;
290
291cpp_quote("#define DB_INVALID_HACCESSOR 0x00")
292
293typedef ULONG_PTR HROW;
294
295cpp_quote("#define DB_NULL_HROW 0x00")
296
297typedef ULONG_PTR HWATCHREGION;
298
299cpp_quote("#define DBWATCHREGION_NULL NULL")
300
301typedef ULONG_PTR HCHAPTER;
302
303cpp_quote("#define DB_NULL_HCHAPTER 0x00")
304
305typedef struct tagDBPARAMS
306{
307    void *pData;
308    DB_UPARAMS cParamSets;
309    HACCESSOR hAccessor;
310} DBPARAMS;
311
312typedef DWORD DBASYNCHOP;
313
314enum DBASYNCHOPENUM
315{
316    DBSYNCHOP_OPEN,
317};
318
319typedef DWORD DBASYNCHPHASE;
320
321enum DBASYNCHPHASEENUM
322{
323    DBASYNCHPHASE_INITIALIZATION,
324    DBASYNCHPHASE_POPULATION,
325    DBASYNCHPHASE_COMPLETE,
326    DBASYNCHPHASE_CANCELED,
327};
328
329typedef struct tagRMTPACK
330{
331    ISequentialStream *pISeqStream;
332    ULONG cbData;
333    ULONG cBSTR;
334    [size_is(cBSTR)] BSTR *rgBSTR;
335    ULONG cVARIANT;
336    [size_is(cVARIANT)] VARIANT *rgVARIANT;
337    ULONG cIDISPATCH;
338    [size_is(cIDISPATCH)] IDispatch **rgIDISPATCH;
339    ULONG cIUNKNOWN;
340    [size_is(cIUNKNOWN)] IUnknown **rgIUNKNOWN;
341    ULONG cPROPVARIANT;
342    [size_is(cPROPVARIANT)] PROPVARIANT *rgPROPVARIANT;
343    ULONG cArray;
344    [size_is(cArray)] VARIANT *rgArray;
345} RMTPACK;
346