diff options
Diffstat (limited to 'src/libs/dutil/WixToolset.DUtil/inc/sceutil.h')
-rw-r--r-- | src/libs/dutil/WixToolset.DUtil/inc/sceutil.h | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/inc/sceutil.h b/src/libs/dutil/WixToolset.DUtil/inc/sceutil.h new file mode 100644 index 00000000..9d14eecf --- /dev/null +++ b/src/libs/dutil/WixToolset.DUtil/inc/sceutil.h | |||
@@ -0,0 +1,273 @@ | |||
1 | #pragma once | ||
2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
3 | |||
4 | |||
5 | #ifdef __cplusplus | ||
6 | extern "C" { | ||
7 | #endif | ||
8 | |||
9 | #include <sqlce_oledb.h> | ||
10 | #include <sqlce_sync.h> | ||
11 | #include <sqlce_err.h> | ||
12 | |||
13 | typedef void* SCE_DATABASE_HANDLE; | ||
14 | typedef void* SCE_ROW_HANDLE; | ||
15 | typedef void* SCE_QUERY_HANDLE; | ||
16 | typedef void* SCE_QUERY_RESULTS_HANDLE; | ||
17 | |||
18 | extern const int SCE_ROW_HANDLE_BYTES; | ||
19 | extern const int SCE_QUERY_HANDLE_BYTES; | ||
20 | extern const int SCE_QUERY_RESULTS_HANDLE_BYTES; | ||
21 | |||
22 | #define ReleaseSceRow(prrh) if (prrh) { SceFreeRow(prrh); } | ||
23 | #define ReleaseNullSceRow(prrh) if (prrh) { SceFreeRow(prrh); prrh = NULL; } | ||
24 | #define ReleaseSceQuery(pqh) if (pqh) { SceFreeQuery(pqh); } | ||
25 | #define ReleaseNullSceQuery(pqh) if (pqh) { SceFreeQuery(pqh); pqh = NULL; } | ||
26 | #define ReleaseSceQueryResults(pqh) if (pqh) { SceFreeQueryResults(pqh); } | ||
27 | #define ReleaseNullSceQueryResults(pqh) if (pqh) { SceFreeQueryResults(pqh); pqh = NULL; } | ||
28 | |||
29 | struct SCE_COLUMN_SCHEMA | ||
30 | { | ||
31 | LPCWSTR wzName; | ||
32 | DBTYPE dbtColumnType; | ||
33 | DWORD dwLength; | ||
34 | BOOL fPrimaryKey; // If this column is the primary key | ||
35 | BOOL fNullable; | ||
36 | BOOL fAutoIncrement; | ||
37 | BOOL fDescending; // If this column should be descending when used in an index (default is ascending) | ||
38 | |||
39 | LPWSTR wzRelationName; | ||
40 | DWORD dwForeignKeyTable; | ||
41 | DWORD dwForeignKeyColumn; | ||
42 | }; | ||
43 | |||
44 | struct SCE_INDEX_SCHEMA | ||
45 | { | ||
46 | LPWSTR wzName; | ||
47 | |||
48 | DWORD *rgColumns; | ||
49 | DWORD cColumns; | ||
50 | }; | ||
51 | |||
52 | struct SCE_TABLE_SCHEMA | ||
53 | { | ||
54 | LPCWSTR wzName; | ||
55 | DWORD cColumns; | ||
56 | SCE_COLUMN_SCHEMA *rgColumns; | ||
57 | |||
58 | DWORD cIndexes; | ||
59 | SCE_INDEX_SCHEMA *rgIndexes; | ||
60 | |||
61 | // Internal to SCEUtil - consumers shouldn't access or modify | ||
62 | // TODO: enforce / hide in a handle of some sort? | ||
63 | IRowset *pIRowset; | ||
64 | IRowsetChange *pIRowsetChange; | ||
65 | }; | ||
66 | |||
67 | struct SCE_DATABASE_SCHEMA | ||
68 | { | ||
69 | DWORD cTables; | ||
70 | SCE_TABLE_SCHEMA *rgTables; | ||
71 | }; | ||
72 | |||
73 | struct SCE_DATABASE | ||
74 | { | ||
75 | SCE_DATABASE_HANDLE sdbHandle; | ||
76 | SCE_DATABASE_SCHEMA *pdsSchema; | ||
77 | }; | ||
78 | |||
79 | HRESULT DAPI SceCreateDatabase( | ||
80 | __in_z LPCWSTR sczFile, | ||
81 | __in_z_opt LPCWSTR wzSqlCeDllPath, | ||
82 | __deref_out SCE_DATABASE **ppDatabase | ||
83 | ); | ||
84 | HRESULT DAPI SceOpenDatabase( | ||
85 | __in_z LPCWSTR sczFile, | ||
86 | __in_z_opt LPCWSTR wzSqlCeDllPath, | ||
87 | __in LPCWSTR wzSchemaType, | ||
88 | __in DWORD dwExpectedVersion, | ||
89 | __deref_out SCE_DATABASE **ppDatabase, | ||
90 | __in BOOL fReadOnly | ||
91 | ); | ||
92 | HRESULT DAPI SceEnsureDatabase( | ||
93 | __in_z LPCWSTR sczFile, | ||
94 | __in_z_opt LPCWSTR wzSqlCeDllPath, | ||
95 | __in LPCWSTR wzSchemaType, | ||
96 | __in DWORD dwExpectedVersion, | ||
97 | __in SCE_DATABASE_SCHEMA *pdsSchema, | ||
98 | __deref_out SCE_DATABASE **ppDatabase | ||
99 | ); | ||
100 | HRESULT DAPI SceIsTableEmpty( | ||
101 | __in SCE_DATABASE *pDatabase, | ||
102 | __in DWORD dwTableIndex, | ||
103 | __out BOOL *pfEmpty | ||
104 | ); | ||
105 | HRESULT DAPI SceGetFirstRow( | ||
106 | __in SCE_DATABASE *pDatabase, | ||
107 | __in DWORD dwTableIndex, | ||
108 | __deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle | ||
109 | ); | ||
110 | HRESULT DAPI SceGetNextRow( | ||
111 | __in SCE_DATABASE *pDatabase, | ||
112 | __in DWORD dwTableIndex, | ||
113 | __deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle | ||
114 | ); | ||
115 | HRESULT DAPI SceBeginTransaction( | ||
116 | __in SCE_DATABASE *pDatabase | ||
117 | ); | ||
118 | HRESULT DAPI SceCommitTransaction( | ||
119 | __in SCE_DATABASE *pDatabase | ||
120 | ); | ||
121 | HRESULT DAPI SceRollbackTransaction( | ||
122 | __in SCE_DATABASE *pDatabase | ||
123 | ); | ||
124 | HRESULT DAPI SceDeleteRow( | ||
125 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle | ||
126 | ); | ||
127 | HRESULT DAPI ScePrepareInsert( | ||
128 | __in SCE_DATABASE *pDatabase, | ||
129 | __in DWORD dwTableIndex, | ||
130 | __deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle | ||
131 | ); | ||
132 | HRESULT DAPI SceFinishUpdate( | ||
133 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle | ||
134 | ); | ||
135 | HRESULT DAPI SceSetColumnBinary( | ||
136 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
137 | __in DWORD dwColumnIndex, | ||
138 | __in_bcount(cbBuffer) const BYTE* pbBuffer, | ||
139 | __in SIZE_T cbBuffer | ||
140 | ); | ||
141 | HRESULT DAPI SceSetColumnDword( | ||
142 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
143 | __in DWORD dwColumnIndex, | ||
144 | __in const DWORD dwValue | ||
145 | ); | ||
146 | HRESULT DAPI SceSetColumnQword( | ||
147 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
148 | __in DWORD dwColumnIndex, | ||
149 | __in const DWORD64 qwValue | ||
150 | ); | ||
151 | HRESULT DAPI SceSetColumnBool( | ||
152 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
153 | __in DWORD dwColumnIndex, | ||
154 | __in const BOOL fValue | ||
155 | ); | ||
156 | HRESULT DAPI SceSetColumnString( | ||
157 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
158 | __in DWORD dwColumnIndex, | ||
159 | __in_z_opt LPCWSTR wzValue | ||
160 | ); | ||
161 | HRESULT DAPI SceSetColumnSystemTime( | ||
162 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
163 | __in DWORD dwColumnIndex, | ||
164 | __in const SYSTEMTIME *pst | ||
165 | ); | ||
166 | HRESULT DAPI SceSetColumnNull( | ||
167 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
168 | __in DWORD dwColumnIndex | ||
169 | ); | ||
170 | HRESULT DAPI SceGetColumnBinary( | ||
171 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle, | ||
172 | __in DWORD dwColumnIndex, | ||
173 | __out_opt BYTE **ppbBuffer, | ||
174 | __inout SIZE_T *pcbBuffer | ||
175 | ); | ||
176 | HRESULT DAPI SceGetColumnDword( | ||
177 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle, | ||
178 | __in DWORD dwColumnIndex, | ||
179 | __out DWORD *pdwValue | ||
180 | ); | ||
181 | HRESULT DAPI SceGetColumnQword( | ||
182 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle, | ||
183 | __in DWORD dwColumnIndex, | ||
184 | __out DWORD64 *pqwValue | ||
185 | ); | ||
186 | HRESULT DAPI SceGetColumnBool( | ||
187 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle, | ||
188 | __in DWORD dwColumnIndex, | ||
189 | __out BOOL *pfValue | ||
190 | ); | ||
191 | HRESULT DAPI SceGetColumnString( | ||
192 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle, | ||
193 | __in DWORD dwColumnIndex, | ||
194 | __out_z LPWSTR *psczValue | ||
195 | ); | ||
196 | HRESULT DAPI SceGetColumnSystemTime( | ||
197 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle, | ||
198 | __in DWORD dwColumnIndex, | ||
199 | __out SYSTEMTIME *pst | ||
200 | ); | ||
201 | HRESULT DAPI SceBeginQuery( | ||
202 | __in SCE_DATABASE *pDatabase, | ||
203 | __in DWORD dwTableIndex, | ||
204 | __in DWORD dwIndex, | ||
205 | __deref_out_bcount(SCE_QUERY_HANDLE_BYTES) SCE_QUERY_HANDLE *psqhHandle | ||
206 | ); | ||
207 | HRESULT DAPI SceSetQueryColumnBinary( | ||
208 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle, | ||
209 | __in_bcount(cbBuffer) const BYTE* pbBuffer, | ||
210 | __in SIZE_T cbBuffer | ||
211 | ); | ||
212 | HRESULT DAPI SceSetQueryColumnDword( | ||
213 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle, | ||
214 | __in const DWORD dwValue | ||
215 | ); | ||
216 | HRESULT DAPI SceSetQueryColumnQword( | ||
217 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle, | ||
218 | __in const DWORD64 qwValue | ||
219 | ); | ||
220 | HRESULT DAPI SceSetQueryColumnBool( | ||
221 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle, | ||
222 | __in const BOOL fValue | ||
223 | ); | ||
224 | HRESULT DAPI SceSetQueryColumnString( | ||
225 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle, | ||
226 | __in_z_opt LPCWSTR wzString | ||
227 | ); | ||
228 | HRESULT DAPI SceSetQueryColumnSystemTime( | ||
229 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle, | ||
230 | __in const SYSTEMTIME *pst | ||
231 | ); | ||
232 | HRESULT DAPI SceSetQueryColumnEmpty( | ||
233 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle | ||
234 | ); | ||
235 | HRESULT DAPI SceRunQueryExact( | ||
236 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE *psqhHandle, | ||
237 | __deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle | ||
238 | ); | ||
239 | HRESULT DAPI SceRunQueryRange( | ||
240 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE *psqhHandle, | ||
241 | __deref_out_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE *psqrhHandle | ||
242 | ); | ||
243 | HRESULT DAPI SceGetNextResultRow( | ||
244 | __in_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE sqrhHandle, | ||
245 | __deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle | ||
246 | ); | ||
247 | void DAPI SceCloseTable( | ||
248 | __in SCE_TABLE_SCHEMA *pTable | ||
249 | ); | ||
250 | // Returns whether the data in the database changed. Ignores schema changes. | ||
251 | BOOL DAPI SceDatabaseChanged( | ||
252 | __in SCE_DATABASE *pDatabase | ||
253 | ); | ||
254 | // Resets the database changed flag | ||
255 | void DAPI SceResetDatabaseChanged( | ||
256 | __in SCE_DATABASE *pDatabase | ||
257 | ); | ||
258 | HRESULT DAPI SceCloseDatabase( | ||
259 | __in SCE_DATABASE *pDatabase | ||
260 | ); | ||
261 | void DAPI SceFreeRow( | ||
262 | __in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle | ||
263 | ); | ||
264 | void DAPI SceFreeQuery( | ||
265 | __in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle | ||
266 | ); | ||
267 | void DAPI SceFreeQueryResults( | ||
268 | __in_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE sqrhHandle | ||
269 | ); | ||
270 | |||
271 | #ifdef __cplusplus | ||
272 | } | ||
273 | #endif | ||