1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _SQLOLEDB_H_
7 #define _SQLOLEDB_H_
8 
9 #include <oledb.h>
10 
11 #ifdef DBINITCONSTANTS
12 extern const GUID CLSID_SQLOLEDB = {0xc7ff16c,0x38e3,0x11d0,{0x97,0xab,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
13 extern const GUID CLSID_SQLOLEDB_ERROR = {0xc0932c62,0x38e5,0x11d0,{0x97,0xab,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
14 extern const GUID CLSID_SQLOLEDB_ENUMERATOR = {0xdfa22b8e,0xe68d,0x11d0,{0x97,0xe4,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
15 #else
16 extern const GUID CLSID_SQLOLEDB;
17 extern const GUID CLSID_SQLOLEDB_ERROR;
18 extern const GUID CLSID_SQLOLEDB_ENUMERATOR;
19 #endif
20 
21 #ifdef DBINITCONSTANTS
22 extern const GUID IID_ISQLServerErrorInfo = {0x5cf4ca12,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
23 extern const GUID IID_IRowsetFastLoad = {0x5cf4ca13,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
24 extern const GUID IID_IUMSInitialize = {0x5cf4ca14,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
25 
26 extern const GUID IID_ISchemaLock = {0x4c2389fb,0x2511,0x11d4,{0xb2,0x58,0x0,0xc0,0x4f,0x79,0x71,0xce}};
27 
28 extern const GUID DBGUID_MSSQLXML = {0x5d531cb2,0xe6ed,0x11d2,{0xb2,0x52,0x00,0xc0,0x4f,0x68,0x1b,0x71}};
29 extern const GUID DBGUID_XPATH = {0xec2a4293,0xe898,0x11d2,{0xb1,0xb7,0x00,0xc0,0x4f,0x68,0x0c,0x56}};
30 
31 extern const IID IID_ICommandStream = {0x0c733abf,0x2a1c,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
32 extern const IID IID_ISQLXMLHelper = {0xd22a7678,0xf860,0x40cd,{0xa5,0x67,0x15,0x63,0xde,0xb4,0x6d,0x49}};
33 #else
34 extern const GUID IID_ISQLServerErrorInfo;
35 extern const GUID IID_IRowsetFastLoad;
36 extern const GUID IID_IUMSInitialize;
37 extern const GUID IID_ISchemaLock;
38 
39 extern const GUID DBGUID_MSSQLXML;
40 extern const GUID DBGUID_XPATH;
41 extern const IID IID_ISQLXMLHelper;
42 #endif
43 
44 #ifdef DBINITCONSTANTS
45 extern const GUID DBSCHEMA_LINKEDSERVERS = {0x9093caf4,0x2eac,0x11d1,{0x98,0x9,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
46 #else
47 extern const GUID DBSCHEMA_LINKEDSERVERS;
48 #endif
49 
50 #define CRESTRICTIONS_DBSCHEMA_LINKEDSERVERS 1
51 
52 #ifdef DBINITCONSTANTS
53 extern const GUID DBPROPSET_SQLSERVERDATASOURCE = {0x28efaee4,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
54 extern const GUID DBPROPSET_SQLSERVERDATASOURCEINFO = {0xdf10cb94,0x35f6,0x11d2,{0x9c,0x54,0x0,0xc0,0x4f,0x79,0x71,0xd3}};
55 extern const GUID DBPROPSET_SQLSERVERDBINIT = {0x5cf4ca10,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
56 extern const GUID DBPROPSET_SQLSERVERROWSET = {0x5cf4ca11,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
57 extern const GUID DBPROPSET_SQLSERVERSESSION = {0x28efaee5,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
58 extern const GUID DBPROPSET_SQLSERVERCOLUMN = {0x3b63fb5e,0x3fbb,0x11d3,{0x9f,0x29,0x0,0xc0,0x4f,0x8e,0xe9,0xdc}};
59 extern const GUID DBPROPSET_SQLSERVERSTREAM = {0x9f79c073,0x8a6d,0x4bca,{0xa8,0xa8,0xc9,0xb7,0x9a,0x9b,0x96,0x2d}};
60 #else
61 extern const GUID DBPROPSET_SQLSERVERDATASOURCE;
62 extern const GUID DBPROPSET_SQLSERVERDATASOURCEINFO;
63 extern const GUID DBPROPSET_SQLSERVERDBINIT;
64 extern const GUID DBPROPSET_SQLSERVERROWSET;
65 extern const GUID DBPROPSET_SQLSERVERSESSION;
66 extern const GUID DBPROPSET_SQLSERVERCOLUMN;
67 extern const GUID DBPROPSET_SQLSERVERSTREAM;
68 #endif
69 
70 #ifdef DBINITCONSTANTS
71 extern const DBID DBCOLUMN_SS_COMPFLAGS = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}},DBKIND_GUID_PROPID,(LPOLESTR)100};
72 extern const DBID DBCOLUMN_SS_SORTID = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}},DBKIND_GUID_PROPID,(LPOLESTR)101};
73 extern const DBID DBCOLUMN_BASETABLEINSTANCE = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}},DBKIND_GUID_PROPID,(LPOLESTR)102};
74 extern const DBID DBCOLUMN_SS_TDSCOLLATION = {{0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}},DBKIND_GUID_PROPID,(LPOLESTR)103};
75 #else
76 extern const DBID DBCOLUMN_SS_COMPFLAGS;
77 extern const DBID DBCOLUMN_SS_SORTID;
78 extern const DBID DBCOLUMN_BASETABLEINSTANCE;
79 extern const DBID DBCOLUMN_SS_TDSCOLLATION;
80 #endif
81 
82 #if (OLEDBVER==0x0210)
83 #define DBPROP_INIT_GENERALTIMEOUT __MSABI_LONG(0x11c)
84 #endif
85 
86 #define SSPROP_ENABLEFASTLOAD 2
87 
88 #define SSPROP_UNICODELCID 2
89 #define SSPROP_UNICODECOMPARISONSTYLE 3
90 #define SSPROP_COLUMNLEVELCOLLATION 4
91 #define SSPROP_CHARACTERSET 5
92 #define SSPROP_SORTORDER 6
93 #define SSPROP_CURRENTCOLLATION 7
94 
95 #define SSPROP_INIT_CURRENTLANGUAGE 4
96 #define SSPROP_INIT_NETWORKADDRESS 5
97 #define SSPROP_INIT_NETWORKLIBRARY 6
98 #define SSPROP_INIT_USEPROCFORPREP 7
99 #define SSPROP_INIT_AUTOTRANSLATE 8
100 #define SSPROP_INIT_PACKETSIZE 9
101 #define SSPROP_INIT_APPNAME 10
102 #define SSPROP_INIT_WSID 11
103 #define SSPROP_INIT_FILENAME 12
104 #define SSPROP_INIT_ENCRYPT 13
105 #define SSPROP_AUTH_REPL_SERVER_NAME 14
106 #define SSPROP_INIT_TAGCOLUMNCOLLATION 15
107 
108 #define SSPROPVAL_USEPROCFORPREP_OFF 0
109 #define SSPROPVAL_USEPROCFORPREP_ON 1
110 #define SSPROPVAL_USEPROCFORPREP_ON_DROP 2
111 
112 #define SSPROP_QUOTEDCATALOGNAMES 2
113 #define SSPROP_ALLOWNATIVEVARIANT 3
114 #define SSPROP_SQLXMLXPROGID 4
115 
116 #define SSPROP_MAXBLOBLENGTH 8
117 #define SSPROP_FASTLOADOPTIONS 9
118 #define SSPROP_FASTLOADKEEPNULLS 10
119 #define SSPROP_FASTLOADKEEPIDENTITY 11
120 #define SSPROP_CURSORAUTOFETCH 12
121 #define SSPROP_DEFERPREPARE 13
122 #define SSPROP_IRowsetFastLoad 14
123 
124 #define SSPROP_COL_COLLATIONNAME 14
125 
126 #define SSPROP_STREAM_MAPPINGSCHEMA 15
127 #define SSPROP_STREAM_XSL 16
128 #define SSPROP_STREAM_BASEPATH 17
129 #define SSPROP_STREAM_COMMANDTYPE 18
130 #define SSPROP_STREAM_XMLROOT 19
131 #define SSPROP_STREAM_FLAGS 20
132 #define SSPROP_STREAM_CONTENTTYPE 23
133 
134 #define STREAM_FLAGS_DISALLOW_URL 0x00000001
135 #define STREAM_FLAGS_DISALLOW_ABSOLUTE_PATH 0x00000002
136 #define STREAM_FLAGS_DISALLOW_QUERY 0x00000004
137 #define STREAM_FLAGS_DONTCACHEMAPPINGSCHEMA 0x00000008
138 #define STREAM_FLAGS_DONTCACHETEMPLATE 0x00000010
139 #define STREAM_FLAGS_DONTCACHEXSL 0x00000020
140 #define STREAM_FLAGS_DISALLOW_UPDATEGRAMS 0x00000040
141 #define STREAM_FLAGS_RESERVED 0xffff0000
142 
143 #define SSPROPVAL_COMMANDTYPE_REGULAR 21
144 #define SSPROPVAL_COMMANDTYPE_BULKLOAD 22
145 
146 #define V_SS_VT(X) ((X)->vt)
147 #define V_SS_UNION(X,Y) ((X)->Y)
148 
149 #define V_SS_UI1(X) V_SS_UNION(X,bTinyIntVal)
150 #define V_SS_I2(X) V_SS_UNION(X,sShortIntVal)
151 #define V_SS_I4(X) V_SS_UNION(X,lIntVal)
152 #define V_SS_I8(X) V_SS_UNION(X,llBigIntVal)
153 
154 #define V_SS_R4(X) V_SS_UNION(X,fltRealVal)
155 #define V_SS_R8(X) V_SS_UNION(X,dblFloatVal)
156 #define V_SS_UI4(X) V_SS_UNION(X,ulVal)
157 
158 #define V_SS_MONEY(X) V_SS_UNION(X,cyMoneyVal)
159 #define V_SS_SMALLMONEY(X) V_SS_UNION(X,cyMoneyVal)
160 
161 #define V_SS_WSTRING(X) V_SS_UNION(X,NCharVal)
162 #define V_SS_WVARSTRING(X) V_SS_UNION(X,NCharVal)
163 
164 #define V_SS_STRING(X) V_SS_UNION(X,CharVal)
165 #define V_SS_VARSTRING(X) V_SS_UNION(X,CharVal)
166 
167 #define V_SS_BIT(X) V_SS_UNION(X,fBitVal)
168 #define V_SS_GUID(X) V_SS_UNION(X,rgbGuidVal)
169 
170 #define V_SS_NUMERIC(X) V_SS_UNION(X,numNumericVal)
171 #define V_SS_DECIMAL(X) V_SS_UNION(X,numNumericVal)
172 
173 #define V_SS_BINARY(X) V_SS_UNION(X,BinaryVal)
174 #define V_SS_VARBINARY(X) V_SS_UNION(X,BinaryVal)
175 
176 #define V_SS_DATETIME(X) V_SS_UNION(X,tsDateTimeVal)
177 #define V_SS_SMALLDATETIME(X) V_SS_UNION(X,tsDateTimeVal)
178 
179 #define V_SS_UNKNOWN(X) V_SS_UNION(X,UnknownType)
180 
181 #define V_SS_IMAGE(X) V_SS_UNION(X,ImageVal)
182 #define V_SS_TEXT(X) V_SS_UNION(X,TextVal)
183 #define V_SS_NTEXT(X) V_SS_UNION(X,NTextVal)
184 
185 #define DBTYPE_SQLVARIANT 144
186 
187 enum SQLVARENUM {
188   VT_SS_EMPTY = DBTYPE_EMPTY,VT_SS_NULL = DBTYPE_NULL,VT_SS_UI1 = DBTYPE_UI1,VT_SS_I2 = DBTYPE_I2,VT_SS_I4 = DBTYPE_I4,VT_SS_I8 = DBTYPE_I8,
189   VT_SS_R4 = DBTYPE_R4,VT_SS_R8 = DBTYPE_R8,VT_SS_MONEY = DBTYPE_CY,VT_SS_SMALLMONEY = 200,VT_SS_WSTRING = 201,VT_SS_WVARSTRING = 202,
190   VT_SS_STRING =203,VT_SS_VARSTRING =204,VT_SS_BIT =DBTYPE_BOOL,VT_SS_GUID =DBTYPE_GUID,VT_SS_NUMERIC =DBTYPE_NUMERIC,VT_SS_DECIMAL =205,
191   VT_SS_DATETIME = DBTYPE_DBTIMESTAMP,VT_SS_SMALLDATETIME =206,VT_SS_BINARY =207,VT_SS_VARBINARY =208,VT_SS_UNKNOWN = 209
192 };
193 
194 typedef unsigned short SSVARTYPE;
195 
196 struct SSVARIANT {
197   SSVARTYPE vt;
198   DWORD dwReserved1;
199   DWORD dwReserved2;
200   __C89_NAMELESS union {
201     BYTE bTinyIntVal;
202     SHORT sShortIntVal;
203     LONG lIntVal;
204     LONGLONG llBigIntVal;
205     FLOAT fltRealVal;
206     DOUBLE dblFloatVal;
207     CY cyMoneyVal;
208     struct _NCharVal {
209       SHORT sActualLength;
210       SHORT sMaxLength;
211       WCHAR *pwchNCharVal;
212       BYTE rgbReserved[5];
213       DWORD dwReserved;
214       WCHAR *pwchReserved;
215     } NCharVal;
216     struct _CharVal {
217       SHORT sActualLength;
218       SHORT sMaxLength;
219       CHAR *pchCharVal;
220       BYTE rgbReserved[5];
221       DWORD dwReserved;
222       WCHAR *pwchReserved;
223     } CharVal;
224     VARIANT_BOOL fBitVal;
225     BYTE rgbGuidVal [16];
226     DB_NUMERIC numNumericVal;
227     struct _BinaryVal {
228       SHORT sActualLength;
229       SHORT sMaxLength;
230       BYTE *prgbBinaryVal;
231       DWORD dwReserved;
232     } BinaryVal;
233     DBTIMESTAMP tsDateTimeVal;
234     struct _UnknownType {
235       DWORD dwActualLength;
236       BYTE rgMetadata [16];
237       BYTE *pUnknownData;
238     } UnknownType;
239     struct _BLOBType {
240       DBOBJECT dbobj;
241       IUnknown *pUnk;
242     } BLOBType;
243   };
244 };
245 
246 #if defined(__cplusplus) && !defined(CINTERFACE)
247 struct IUMSInitialize : public IUnknown {
248 public:
249   virtual HRESULT WINAPI Initialize (VOID *pUMS) = 0;
250 };
251 
252 struct IUMS {
253 public:
254   virtual VOID WINAPI SqlUmsSuspend (ULONG ticks) = 0;
255   virtual VOID WINAPI SqlUmsYield (ULONG ticks) = 0;
256   virtual VOID WINAPI SqlUmsSwitchPremptive () = 0;
257   virtual VOID WINAPI SqlUmsSwitchNonPremptive() = 0;
258   virtual WINBOOL WINAPI SqlUmsFIsPremptive() = 0;
259 };
260 #endif
261 
262 #ifndef __REQUIRED_RPCNDR_H_VERSION__
263 #define __REQUIRED_RPCNDR_H_VERSION__ 440
264 #endif
265 
266 #include "rpc.h"
267 #include "rpcndr.h"
268 
269 #ifndef __RPCNDR_H_VERSION__
270 #error This stub requires an updated version of <rpcndr.h>
271 #endif
272 
273 #ifndef COM_NO_WINDOWS_H
274 #include "windows.h"
275 #include "ole2.h"
276 #endif
277 
278 #ifndef __sqloledb_h__
279 #define __sqloledb_h__
280 
281 #ifdef __cplusplus
282 extern "C" {
283 #endif
284 
285 #ifndef __ISQLServerErrorInfo_FWD_DEFINED__
286 #define __ISQLServerErrorInfo_FWD_DEFINED__
287   typedef struct ISQLServerErrorInfo ISQLServerErrorInfo;
288 #endif
289 
290 #ifndef __IRowsetFastLoad_FWD_DEFINED__
291 #define __IRowsetFastLoad_FWD_DEFINED__
292   typedef struct IRowsetFastLoad IRowsetFastLoad;
293 #endif
294 
295 #ifndef __ISchemaLock_FWD_DEFINED__
296 #define __ISchemaLock_FWD_DEFINED__
297   typedef struct ISchemaLock ISchemaLock;
298 #endif
299 
300 #include "unknwn.h"
301 
302 #ifndef __MIDL_user_allocate_free_DEFINED__
303 #define __MIDL_user_allocate_free_DEFINED__
304   void *__RPC_API MIDL_user_allocate(size_t);
305   void __RPC_API MIDL_user_free(void *);
306 #endif
307 
308   typedef struct tagSSErrorInfo {
309     LPOLESTR pwszMessage;
310     LPOLESTR pwszServer;
311     LPOLESTR pwszProcedure;
312     LONG lNative;
313     BYTE bState;
314     BYTE bClass;
315     WORD wLineNumber;
316   } SSERRORINFO;
317 
318   extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0000_v0_0_c_ifspec;
319   extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0000_v0_0_s_ifspec;
320 #ifndef __ISQLServerErrorInfo_INTERFACE_DEFINED__
321 #define __ISQLServerErrorInfo_INTERFACE_DEFINED__
322   EXTERN_C const IID IID_ISQLServerErrorInfo;
323 #if defined(__cplusplus) && !defined(CINTERFACE)
324   struct ISQLServerErrorInfo : public IUnknown {
325   public:
326     virtual HRESULT WINAPI GetErrorInfo(SSERRORINFO **ppErrorInfo,OLECHAR **ppStringsBuffer) = 0;
327   };
328 #else
329   typedef struct ISQLServerErrorInfoVtbl {
330     BEGIN_INTERFACE
331       HRESULT (WINAPI *QueryInterface)(ISQLServerErrorInfo *This,REFIID riid,void **ppvObject);
332       ULONG (WINAPI *AddRef)(ISQLServerErrorInfo *This);
333       ULONG (WINAPI *Release)(ISQLServerErrorInfo *This);
334       HRESULT (WINAPI *GetErrorInfo)(ISQLServerErrorInfo *This,SSERRORINFO **ppErrorInfo,OLECHAR **ppStringsBuffer);
335     END_INTERFACE
336   } ISQLServerErrorInfoVtbl;
337   struct ISQLServerErrorInfo {
338     CONST_VTBL struct ISQLServerErrorInfoVtbl *lpVtbl;
339   };
340 #ifdef COBJMACROS
341 #define ISQLServerErrorInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
342 #define ISQLServerErrorInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
343 #define ISQLServerErrorInfo_Release(This) (This)->lpVtbl->Release(This)
344 #define ISQLServerErrorInfo_GetErrorInfo(This,ppErrorInfo,ppStringsBuffer) (This)->lpVtbl->GetErrorInfo(This,ppErrorInfo,ppStringsBuffer)
345 #endif
346 #endif
347   HRESULT WINAPI ISQLServerErrorInfo_GetErrorInfo_Proxy(ISQLServerErrorInfo *This,SSERRORINFO **ppErrorInfo,OLECHAR **ppStringsBuffer);
348   void __RPC_STUB ISQLServerErrorInfo_GetErrorInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
349 #endif
350 
351 #ifdef _WIN64
352   typedef ULONG_PTR HACCESSOR;
353 #else
354   typedef ULONG HACCESSOR;
355 #endif
356 
357   extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0006_v0_0_c_ifspec;
358   extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0006_v0_0_s_ifspec;
359 #ifndef __IRowsetFastLoad_INTERFACE_DEFINED__
360 #define __IRowsetFastLoad_INTERFACE_DEFINED__
361   EXTERN_C const IID IID_IRowsetFastLoad;
362 #if defined(__cplusplus) && !defined(CINTERFACE)
363   struct IRowsetFastLoad : public IUnknown {
364   public:
365     virtual HRESULT WINAPI InsertRow(HACCESSOR hAccessor,void *pData) = 0;
366     virtual HRESULT WINAPI Commit(WINBOOL fDone) = 0;
367   };
368 #else
369   typedef struct IRowsetFastLoadVtbl {
370     BEGIN_INTERFACE
371       HRESULT (WINAPI *QueryInterface)(IRowsetFastLoad *This,REFIID riid,void **ppvObject);
372       ULONG (WINAPI *AddRef)(IRowsetFastLoad *This);
373       ULONG (WINAPI *Release)(IRowsetFastLoad *This);
374       HRESULT (WINAPI *InsertRow)(IRowsetFastLoad *This,HACCESSOR hAccessor,void *pData);
375       HRESULT (WINAPI *Commit)(IRowsetFastLoad *This,WINBOOL fDone);
376     END_INTERFACE
377   } IRowsetFastLoadVtbl;
378   struct IRowsetFastLoad {
379     CONST_VTBL struct IRowsetFastLoadVtbl *lpVtbl;
380   };
381 #ifdef COBJMACROS
382 #define IRowsetFastLoad_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
383 #define IRowsetFastLoad_AddRef(This) (This)->lpVtbl->AddRef(This)
384 #define IRowsetFastLoad_Release(This) (This)->lpVtbl->Release(This)
385 #define IRowsetFastLoad_InsertRow(This,hAccessor,pData) (This)->lpVtbl->InsertRow(This,hAccessor,pData)
386 #define IRowsetFastLoad_Commit(This,fDone) (This)->lpVtbl->Commit(This,fDone)
387 #endif
388 #endif
389   HRESULT WINAPI IRowsetFastLoad_InsertRow_Proxy(IRowsetFastLoad *This,HACCESSOR hAccessor,void *pData);
390   void __RPC_STUB IRowsetFastLoad_InsertRow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
391   HRESULT WINAPI IRowsetFastLoad_Commit_Proxy(IRowsetFastLoad *This,WINBOOL fDone);
392   void __RPC_STUB IRowsetFastLoad_Commit_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
393 #endif
394 
395   typedef DWORD LOCKMODE;
396 
397   enum LOCKMODEENUM {
398     LOCKMODE_INVALID = 0,
399     LOCKMODE_EXCLUSIVE,LOCKMODE_SHARED
400   };
401 
402   extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0007_v0_0_c_ifspec;
403   extern RPC_IF_HANDLE __MIDL_itf_sqloledb_0007_v0_0_s_ifspec;
404 #ifndef __ISchemaLock_INTERFACE_DEFINED__
405 #define __ISchemaLock_INTERFACE_DEFINED__
406   EXTERN_C const IID IID_ISchemaLock;
407 #if defined(__cplusplus) && !defined(CINTERFACE)
408   struct ISchemaLock : public IUnknown {
409   public:
410     virtual HRESULT WINAPI GetSchemaLock(DBID *pTableID,LOCKMODE lmMode,HANDLE *phLockHandle,ULONGLONG *pTableVersion) = 0;
411     virtual HRESULT WINAPI ReleaseSchemaLock(HANDLE hLockHandle) = 0;
412   };
413 #else
414   typedef struct ISchemaLockVtbl {
415     BEGIN_INTERFACE
416       HRESULT (WINAPI *QueryInterface)(ISchemaLock *This,REFIID riid,void **ppvObject);
417       ULONG (WINAPI *AddRef)(ISchemaLock *This);
418       ULONG (WINAPI *Release)(ISchemaLock *This);
419       HRESULT (WINAPI *GetSchemaLock)(ISchemaLock *This,DBID *pTableID,LOCKMODE lmMode,HANDLE *phLockHandle,ULONGLONG *pTableVersion);
420       HRESULT (WINAPI *ReleaseSchemaLock)(ISchemaLock *This,HANDLE hLockHandle);
421     END_INTERFACE
422   } ISchemaLockVtbl;
423   struct ISchemaLock {
424     CONST_VTBL struct ISchemaLockVtbl *lpVtbl;
425   };
426 #ifdef COBJMACROS
427 #define ISchemaLock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
428 #define ISchemaLock_AddRef(This) (This)->lpVtbl->AddRef(This)
429 #define ISchemaLock_Release(This) (This)->lpVtbl->Release(This)
430 #define ISchemaLock_GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion) (This)->lpVtbl->GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion)
431 #define ISchemaLock_ReleaseSchemaLock(This,hLockHandle) (This)->lpVtbl->ReleaseSchemaLock(This,hLockHandle)
432 #endif
433 #endif
434   HRESULT WINAPI ISchemaLock_GetSchemaLock_Proxy(ISchemaLock *This,DBID *pTableID,LOCKMODE lmMode,HANDLE *phLockHandle,ULONGLONG *pTableVersion);
435   void __RPC_STUB ISchemaLock_GetSchemaLock_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
436   HRESULT WINAPI ISchemaLock_ReleaseSchemaLock_Proxy(ISchemaLock *This,HANDLE hLockHandle);
437   void __RPC_STUB ISchemaLock_ReleaseSchemaLock_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
438 #endif
439 
440 #ifdef __cplusplus
441 }
442 #endif
443 #endif
444 #endif
445