comctl32/tests: Use CRT allocation functions.
[wine.git] / dlls / odbc32 / unixlib.c
blob2883a5fb56a82203e6efc30e4d64025c2c97d4ae
1 /*
2 * Win32 ODBC functions
4 * Copyright 1999 Xiang Li, Corel Corporation
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 * NOTES:
21 * Proxy ODBC driver manager. This manager delegates all ODBC
22 * calls to a real ODBC driver manager named by the environment
23 * variable LIB_ODBC_DRIVER_MANAGER, or to libodbc.so if the
24 * variable is not set.
27 #if 0
28 #pragma makedep unix
29 #endif
31 #include "config.h"
33 #include <stdarg.h>
34 #include <stdlib.h>
35 #include <sys/types.h>
36 #include <dlfcn.h>
38 #include "ntstatus.h"
39 #define WIN32_NO_STATUS
40 #include "windef.h"
41 #include "winbase.h"
42 #include "winternl.h"
43 #include "wine/debug.h"
44 #include "sql.h"
45 #include "sqltypes.h"
46 #include "sqlext.h"
48 #include "unixlib.h"
49 #include "wine/debug.h"
51 WINE_DECLARE_DEBUG_CHANNEL(winediag);
53 static void *libodbc;
55 static SQLRETURN (*pSQLAllocConnect)(SQLHENV,SQLHDBC*);
56 static SQLRETURN (*pSQLAllocEnv)(SQLHENV*);
57 static SQLRETURN (*pSQLAllocHandle)(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
58 static SQLRETURN (*pSQLAllocHandleStd)(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
59 static SQLRETURN (*pSQLAllocStmt)(SQLHDBC,SQLHSTMT*);
60 static SQLRETURN (*pSQLBindCol)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
61 static SQLRETURN (*pSQLBindParam)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN*);
62 static SQLRETURN (*pSQLBindParameter)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
63 static SQLRETURN (*pSQLBrowseConnect)(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
64 static SQLRETURN (*pSQLBrowseConnectW)(SQLHDBC,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
65 static SQLRETURN (*pSQLBulkOperations)(SQLHSTMT,SQLSMALLINT);
66 static SQLRETURN (*pSQLCancel)(SQLHSTMT);
67 static SQLRETURN (*pSQLCloseCursor)(SQLHSTMT);
68 static SQLRETURN (*pSQLColAttribute)(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*);
69 static SQLRETURN (*pSQLColAttributeW)(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*);
70 static SQLRETURN (*pSQLColAttributes)(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*);
71 static SQLRETURN (*pSQLColAttributesW)(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*);
72 static SQLRETURN (*pSQLColumnPrivileges)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
73 static SQLRETURN (*pSQLColumnPrivilegesW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
74 static SQLRETURN (*pSQLColumns)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
75 static SQLRETURN (*pSQLColumnsW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
76 static SQLRETURN (*pSQLConnect)(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
77 static SQLRETURN (*pSQLConnectW)(SQLHDBC,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
78 static SQLRETURN (*pSQLCopyDesc)(SQLHDESC,SQLHDESC);
79 static SQLRETURN (*pSQLDataSources)(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
80 static SQLRETURN (*pSQLDataSourcesA)(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
81 static SQLRETURN (*pSQLDataSourcesW)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
82 static SQLRETURN (*pSQLDescribeCol)(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
83 static SQLRETURN (*pSQLDescribeColW)(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
84 static SQLRETURN (*pSQLDescribeParam)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
85 static SQLRETURN (*pSQLDisconnect)(SQLHDBC);
86 static SQLRETURN (*pSQLDriverConnect)(SQLHDBC,SQLHWND,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
87 static SQLRETURN (*pSQLDriverConnectW)(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
88 static SQLRETURN (*pSQLDrivers)(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
89 static SQLRETURN (*pSQLDriversW)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
90 static SQLRETURN (*pSQLEndTran)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT);
91 static SQLRETURN (*pSQLError)(SQLHENV,SQLHDBC,SQLHSTMT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
92 static SQLRETURN (*pSQLErrorW)(SQLHENV,SQLHDBC,SQLHSTMT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
93 static SQLRETURN (*pSQLExecDirect)(SQLHSTMT,SQLCHAR*,SQLINTEGER);
94 static SQLRETURN (*pSQLExecDirectW)(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
95 static SQLRETURN (*pSQLExecute)(SQLHSTMT);
96 static SQLRETURN (*pSQLExtendedFetch)(SQLHSTMT,SQLUSMALLINT,SQLLEN,SQLULEN*,SQLUSMALLINT*);
97 static SQLRETURN (*pSQLFetch)(SQLHSTMT);
98 static SQLRETURN (*pSQLFetchScroll)(SQLHSTMT,SQLSMALLINT,SQLLEN);
99 static SQLRETURN (*pSQLForeignKeys)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
100 static SQLRETURN (*pSQLForeignKeysW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
101 static SQLRETURN (*pSQLFreeConnect)(SQLHDBC);
102 static SQLRETURN (*pSQLFreeEnv)(SQLHENV);
103 static SQLRETURN (*pSQLFreeHandle)(SQLSMALLINT,SQLHANDLE);
104 static SQLRETURN (*pSQLFreeStmt)(SQLHSTMT,SQLUSMALLINT);
105 static SQLRETURN (*pSQLGetConnectAttr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
106 static SQLRETURN (*pSQLGetConnectAttrW)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
107 static SQLRETURN (*pSQLGetConnectOption)(SQLHDBC,SQLUSMALLINT,SQLPOINTER);
108 static SQLRETURN (*pSQLGetConnectOptionW)(SQLHDBC,SQLUSMALLINT,SQLPOINTER);
109 static SQLRETURN (*pSQLGetCursorName)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
110 static SQLRETURN (*pSQLGetCursorNameW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
111 static SQLRETURN (*pSQLGetData)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
112 static SQLRETURN (*pSQLGetDescField)(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
113 static SQLRETURN (*pSQLGetDescFieldW)(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
114 static SQLRETURN (*pSQLGetDescRec)(SQLHDESC,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*);
115 static SQLRETURN (*pSQLGetDescRecW)(SQLHDESC,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*);
116 static SQLRETURN (*pSQLGetDiagField)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
117 static SQLRETURN (*pSQLGetDiagFieldW)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
118 static SQLRETURN (*pSQLGetDiagRec)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
119 static SQLRETURN (*pSQLGetDiagRecA)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLCHAR*,SQLINTEGER*, SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
120 static SQLRETURN (*pSQLGetDiagRecW)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
121 static SQLRETURN (*pSQLGetEnvAttr)(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
122 static SQLRETURN (*pSQLGetFunctions)(SQLHDBC,SQLUSMALLINT,SQLUSMALLINT*);
123 static SQLRETURN (*pSQLGetInfo)(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
124 static SQLRETURN (*pSQLGetInfoW)(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
125 static SQLRETURN (*pSQLGetStmtAttr)(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
126 static SQLRETURN (*pSQLGetStmtAttrW)(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
127 static SQLRETURN (*pSQLGetStmtOption)(SQLHSTMT,SQLUSMALLINT,SQLPOINTER);
128 static SQLRETURN (*pSQLGetTypeInfo)(SQLHSTMT,SQLSMALLINT);
129 static SQLRETURN (*pSQLGetTypeInfoW)(SQLHSTMT,SQLSMALLINT);
130 static SQLRETURN (*pSQLMoreResults)(SQLHSTMT);
131 static SQLRETURN (*pSQLNativeSql)(SQLHDBC,SQLCHAR*,SQLINTEGER,SQLCHAR*,SQLINTEGER,SQLINTEGER*);
132 static SQLRETURN (*pSQLNativeSqlW)(SQLHDBC,SQLWCHAR*,SQLINTEGER,SQLWCHAR*,SQLINTEGER,SQLINTEGER*);
133 static SQLRETURN (*pSQLNumParams)(SQLHSTMT,SQLSMALLINT*);
134 static SQLRETURN (*pSQLNumResultCols)(SQLHSTMT,SQLSMALLINT*);
135 static SQLRETURN (*pSQLParamData)(SQLHSTMT,SQLPOINTER*);
136 static SQLRETURN (*pSQLParamOptions)(SQLHSTMT,SQLULEN,SQLULEN*);
137 static SQLRETURN (*pSQLPrepare)(SQLHSTMT,SQLCHAR*,SQLINTEGER);
138 static SQLRETURN (*pSQLPrepareW)(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
139 static SQLRETURN (*pSQLPrimaryKeys)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
140 static SQLRETURN (*pSQLPrimaryKeysW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
141 static SQLRETURN (*pSQLProcedureColumns)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
142 static SQLRETURN (*pSQLProcedureColumnsW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
143 static SQLRETURN (*pSQLProcedures)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
144 static SQLRETURN (*pSQLProceduresW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
145 static SQLRETURN (*pSQLPutData)(SQLHSTMT,SQLPOINTER,SQLLEN);
146 static SQLRETURN (*pSQLRowCount)(SQLHSTMT,SQLLEN*);
147 static SQLRETURN (*pSQLSetConnectAttr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
148 static SQLRETURN (*pSQLSetConnectAttrW)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
149 static SQLRETURN (*pSQLSetConnectOption)(SQLHDBC,SQLUSMALLINT,SQLULEN);
150 static SQLRETURN (*pSQLSetConnectOptionW)(SQLHDBC,SQLUSMALLINT,SQLULEN);
151 static SQLRETURN (*pSQLSetCursorName)(SQLHSTMT,SQLCHAR*,SQLSMALLINT);
152 static SQLRETURN (*pSQLSetCursorNameW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT);
153 static SQLRETURN (*pSQLSetDescField)(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER);
154 static SQLRETURN (*pSQLSetDescFieldW)(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER);
155 static SQLRETURN (*pSQLSetDescRec)(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLLEN,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN*,SQLLEN*);
156 static SQLRETURN (*pSQLSetEnvAttr)(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER);
157 static SQLRETURN (*pSQLSetParam)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN*);
158 static SQLRETURN (*pSQLSetPos)(SQLHSTMT,SQLSETPOSIROW,SQLUSMALLINT,SQLUSMALLINT);
159 static SQLRETURN (*pSQLSetScrollOptions)(SQLHSTMT,SQLUSMALLINT,SQLLEN,SQLUSMALLINT);
160 static SQLRETURN (*pSQLSetStmtAttr)(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER);
161 static SQLRETURN (*pSQLSetStmtAttrW)(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER);
162 static SQLRETURN (*pSQLSetStmtOption)(SQLHSTMT,SQLUSMALLINT,SQLULEN);
163 static SQLRETURN (*pSQLSpecialColumns)(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
164 static SQLRETURN (*pSQLSpecialColumnsW)(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
165 static SQLRETURN (*pSQLStatistics)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
166 static SQLRETURN (*pSQLStatisticsW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
167 static SQLRETURN (*pSQLTablePrivileges)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
168 static SQLRETURN (*pSQLTablePrivilegesW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
169 static SQLRETURN (*pSQLTables)(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
170 static SQLRETURN (*pSQLTablesW)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
171 static SQLRETURN (*pSQLTransact)(SQLHENV,SQLHDBC,SQLUSMALLINT);
174 static NTSTATUS load_odbc(void);
176 static NTSTATUS odbc_process_attach( void *args )
178 if (!load_odbc()) return STATUS_DLL_NOT_FOUND;
179 return STATUS_SUCCESS;
182 static NTSTATUS odbc_process_detach( void *args )
184 if (libodbc) dlclose( libodbc );
185 libodbc = NULL;
186 return STATUS_SUCCESS;
189 static NTSTATUS wrap_SQLAllocConnect( void *args )
191 struct SQLAllocConnect_params *params = args;
193 if (!pSQLAllocConnect) return SQL_ERROR;
194 return pSQLAllocConnect(params->EnvironmentHandle, params->ConnectionHandle);
197 static NTSTATUS wrap_SQLAllocEnv( void *args )
199 struct SQLAllocEnv_params *params = args;
201 if (!pSQLAllocEnv) return SQL_ERROR;
202 return pSQLAllocEnv(params->EnvironmentHandle);
205 static NTSTATUS wrap_SQLAllocHandle( void *args )
207 struct SQLAllocHandle_params *params = args;
209 if (!pSQLAllocHandle) return SQL_ERROR;
210 return pSQLAllocHandle(params->HandleType, params->InputHandle, params->OutputHandle);
213 static NTSTATUS wrap_SQLAllocHandleStd( void *args )
215 struct SQLAllocHandleStd_params *params = args;
217 if (!pSQLAllocHandleStd) return SQL_ERROR;
218 return pSQLAllocHandleStd(params->HandleType, params->InputHandle, params->OutputHandle);
221 static NTSTATUS wrap_SQLAllocStmt( void *args )
223 struct SQLAllocStmt_params *params = args;
225 if (!pSQLAllocStmt) return SQL_ERROR;
226 return pSQLAllocStmt(params->ConnectionHandle, params->StatementHandle);
229 static NTSTATUS wrap_SQLBindCol( void *args )
231 struct SQLBindCol_params *params = args;
233 if (!pSQLBindCol) return SQL_ERROR;
234 return pSQLBindCol(params->StatementHandle, params->ColumnNumber, params->TargetType,
235 params->TargetValue, params->BufferLength, params->StrLen_or_Ind);
238 static NTSTATUS wrap_SQLBindParam( void *args )
240 struct SQLBindParam_params *params = args;
242 if (!pSQLBindParam) return SQL_ERROR;
243 return pSQLBindParam(params->StatementHandle, params->ParameterNumber, params->ValueType,
244 params->ParameterType, params->LengthPrecision, params->ParameterScale,
245 params->ParameterValue, params->StrLen_or_Ind);
248 static NTSTATUS wrap_SQLBindParameter( void *args )
250 struct SQLBindParameter_params *params = args;
252 if (!pSQLBindParameter) return SQL_ERROR;
253 return pSQLBindParameter(params->hstmt, params->ipar, params->fParamType, params->fCType,
254 params->fSqlType, params->cbColDef, params->ibScale, params->rgbValue,
255 params->cbValueMax, params->pcbValue);
258 static NTSTATUS wrap_SQLBrowseConnect( void *args )
260 struct SQLBrowseConnect_params *params = args;
262 if (!pSQLBrowseConnect) return SQL_ERROR;
263 return pSQLBrowseConnect(params->hdbc, params->szConnStrIn, params->cbConnStrIn, params->szConnStrOut,
264 params->cbConnStrOutMax, params->pcbConnStrOut);
267 static NTSTATUS wrap_SQLBrowseConnectW( void *args )
269 struct SQLBrowseConnectW_params *params = args;
271 if (!pSQLBrowseConnectW) return SQL_ERROR;
272 return pSQLBrowseConnectW(params->hdbc, params->szConnStrIn, params->cbConnStrIn, params->szConnStrOut,
273 params->cbConnStrOutMax, params->pcbConnStrOut);
276 static NTSTATUS wrap_SQLBulkOperations( void *args )
278 struct SQLBulkOperations_params *params = args;
280 if (!pSQLBulkOperations) return SQL_ERROR;
281 return pSQLBulkOperations(params->StatementHandle, params->Operation);
284 static NTSTATUS wrap_SQLCancel( void *args )
286 struct SQLCancel_params *params = args;
288 if (!pSQLCancel) return SQL_ERROR;
289 return pSQLCancel(params->StatementHandle);
292 static NTSTATUS wrap_SQLCloseCursor( void *args )
294 struct SQLCloseCursor_params *params = args;
296 if (!pSQLCloseCursor) return SQL_ERROR;
297 return pSQLCloseCursor(params->StatementHandle);
300 static NTSTATUS wrap_SQLColAttribute( void *args )
302 struct SQLColAttribute_params *params = args;
304 if (!pSQLColAttribute) return SQL_ERROR;
305 return pSQLColAttribute(params->StatementHandle, params->ColumnNumber, params->FieldIdentifier,
306 params->CharacterAttribute, params->BufferLength, params->StringLength,
307 params->NumericAttribute);
310 static NTSTATUS wrap_SQLColAttributeW( void *args )
312 struct SQLColAttributeW_params *params = args;
314 if (!pSQLColAttributeW) return SQL_ERROR;
315 return pSQLColAttributeW(params->StatementHandle, params->ColumnNumber, params->FieldIdentifier,
316 params->CharacterAttribute, params->BufferLength, params->StringLength,
317 params->NumericAttribute);
320 static NTSTATUS wrap_SQLColAttributes( void *args )
322 struct SQLColAttributes_params *params = args;
324 if (!pSQLColAttributes) return SQL_ERROR;
325 return pSQLColAttributes(params->hstmt, params->icol, params->fDescType, params->rgbDesc,
326 params->cbDescMax, params->pcbDesc, params->pfDesc);
329 static NTSTATUS wrap_SQLColAttributesW( void *args )
331 struct SQLColAttributesW_params *params = args;
333 if (!pSQLColAttributesW) return SQL_ERROR;
334 return pSQLColAttributesW(params->hstmt, params->icol, params->fDescType, params->rgbDesc,
335 params->cbDescMax, params->pcbDesc, params->pfDesc);
338 static NTSTATUS wrap_SQLColumnPrivileges( void *args )
340 struct SQLColumnPrivileges_params *params = args;
342 if (!pSQLColumnPrivileges) return SQL_ERROR;
343 return pSQLColumnPrivileges(params->hstmt, params->szCatalogName, params->cbCatalogName,
344 params->szSchemaName, params->cbSchemaName, params->szTableName,
345 params->cbTableName, params->szColumnName, params->cbColumnName);
348 static NTSTATUS wrap_SQLColumnPrivilegesW( void *args )
350 struct SQLColumnPrivilegesW_params *params = args;
352 if (!pSQLColumnPrivilegesW) return SQL_ERROR;
353 return pSQLColumnPrivilegesW(params->hstmt, params->szCatalogName, params->cbCatalogName,
354 params->szSchemaName, params->cbSchemaName, params->szTableName,
355 params->cbTableName, params->szColumnName, params->cbColumnName);
358 static NTSTATUS wrap_SQLColumns( void *args )
360 struct SQLColumns_params *params = args;
362 if (!pSQLColumns) return SQL_ERROR;
363 return pSQLColumns(params->StatementHandle, params->CatalogName, params->NameLength1,
364 params->SchemaName, params->NameLength2, params->TableName, params->NameLength3,
365 params->ColumnName, params->NameLength4);
368 static NTSTATUS wrap_SQLColumnsW( void *args )
370 struct SQLColumnsW_params *params = args;
372 if (!pSQLColumnsW) return SQL_ERROR;
373 return pSQLColumnsW(params->StatementHandle, params->CatalogName, params->NameLength1,
374 params->SchemaName, params->NameLength2, params->TableName, params->NameLength3,
375 params->ColumnName, params->NameLength4);
378 static NTSTATUS wrap_SQLConnect( void *args )
380 struct SQLConnect_params *params = args;
382 if (!pSQLConnect) return SQL_ERROR;
383 return pSQLConnect(params->ConnectionHandle, params->ServerName, params->NameLength1, params->UserName,
384 params->NameLength2, params->Authentication, params->NameLength3);
387 static NTSTATUS wrap_SQLConnectW( void *args )
389 struct SQLConnectW_params *params = args;
391 if (!pSQLConnectW) return SQL_ERROR;
392 return pSQLConnectW(params->ConnectionHandle, params->ServerName, params->NameLength1,
393 params->UserName, params->NameLength2, params->Authentication, params->NameLength3);
396 static NTSTATUS wrap_SQLCopyDesc( void *args )
398 struct SQLCopyDesc_params *params = args;
400 if (!pSQLCopyDesc) return SQL_ERROR;
401 return pSQLCopyDesc(params->SourceDescHandle, params->TargetDescHandle);
404 static NTSTATUS wrap_SQLDataSources( void *args )
406 struct SQLDataSources_params *params = args;
408 if (!pSQLDataSources) return SQL_ERROR;
409 return pSQLDataSources(params->EnvironmentHandle, params->Direction, params->ServerName,
410 params->BufferLength1, params->NameLength1, params->Description,
411 params->BufferLength2, params->NameLength2);
414 static NTSTATUS wrap_SQLDataSourcesA( void *args )
416 struct SQLDataSourcesA_params *params = args;
418 if (!pSQLDataSourcesA) return SQL_ERROR;
419 return pSQLDataSourcesA(params->EnvironmentHandle, params->Direction, params->ServerName,
420 params->BufferLength1, params->NameLength1, params->Description,
421 params->BufferLength2, params->NameLength2);
424 static NTSTATUS wrap_SQLDataSourcesW( void *args )
426 struct SQLDataSourcesW_params *params = args;
428 if (!pSQLDataSourcesW) return SQL_ERROR;
429 return pSQLDataSourcesW(params->EnvironmentHandle, params->Direction, params->ServerName,
430 params->BufferLength1, params->NameLength1, params->Description,
431 params->BufferLength2, params->NameLength2);
434 static NTSTATUS wrap_SQLDescribeCol( void *args )
436 struct SQLDescribeCol_params *params = args;
438 if (!pSQLDescribeCol) return SQL_ERROR;
439 return pSQLDescribeCol(params->StatementHandle, params->ColumnNumber, params->ColumnName,
440 params->BufferLength, params->NameLength, params->DataType,
441 params->ColumnSize, params->DecimalDigits, params->Nullable);
444 static NTSTATUS wrap_SQLDescribeColW( void *args )
446 struct SQLDescribeColW_params *params = args;
448 if (!pSQLDescribeColW) return SQL_ERROR;
449 return pSQLDescribeColW(params->StatementHandle, params->ColumnNumber, params->ColumnName,
450 params->BufferLength, params->NameLength, params->DataType,
451 params->ColumnSize, params->DecimalDigits, params->Nullable);
454 static NTSTATUS wrap_SQLDescribeParam( void *args )
456 struct SQLDescribeParam_params *params = args;
458 if (!pSQLDescribeParam) return SQL_ERROR;
459 return pSQLDescribeParam(params->hstmt, params->ipar, params->pfSqlType, params->pcbParamDef,
460 params->pibScale, params->pfNullable);
463 static NTSTATUS wrap_SQLDisconnect( void *args )
465 struct SQLDisconnect_params *params = args;
467 if (!pSQLDisconnect) return SQL_ERROR;
468 return pSQLDisconnect(params->ConnectionHandle);
471 static NTSTATUS wrap_SQLDriverConnect( void *args )
473 struct SQLDriverConnect_params *params = args;
475 if (!pSQLDriverConnect) return SQL_ERROR;
476 return pSQLDriverConnect(params->hdbc, params->hwnd, params->ConnectionString, params->Length,
477 params->conn_str_out, params->conn_str_out_max,
478 params->ptr_conn_str_out, params->driver_completion);
481 static NTSTATUS wrap_SQLDriverConnectW( void *args )
483 struct SQLDriverConnectW_params *params = args;
485 if (!pSQLDriverConnectW) return SQL_ERROR;
486 return pSQLDriverConnectW(params->ConnectionHandle, params->WindowHandle, params->InConnectionString,
487 params->Length, params->OutConnectionString, params->BufferLength,
488 params->Length2, params->DriverCompletion);
491 static NTSTATUS wrap_SQLDrivers( void *args )
493 struct SQLDrivers_params *params = args;
495 if (!pSQLDrivers) return SQL_ERROR;
496 return pSQLDrivers(params->EnvironmentHandle, params->fDirection, params->szDriverDesc,
497 params->cbDriverDescMax, params->pcbDriverDesc, params->szDriverAttributes,
498 params->cbDriverAttrMax, params->pcbDriverAttr);
501 static NTSTATUS wrap_SQLDriversW( void *args )
503 struct SQLDriversW_params *params = args;
505 if (!pSQLDriversW) return SQL_ERROR;
506 return pSQLDriversW(params->EnvironmentHandle, params->fDirection, params->szDriverDesc,
507 params->cbDriverDescMax, params->pcbDriverDesc, params->szDriverAttributes,
508 params->cbDriverAttrMax, params->pcbDriverAttr);
511 static NTSTATUS wrap_SQLEndTran( void *args )
513 struct SQLEndTran_params *params = args;
515 if (!pSQLEndTran) return SQL_ERROR;
516 return pSQLEndTran(params->HandleType, params->Handle, params->CompletionType);
519 static NTSTATUS wrap_SQLError( void *args )
521 struct SQLError_params *params = args;
523 if (!pSQLError) return SQL_ERROR;
524 return pSQLError(params->EnvironmentHandle, params->ConnectionHandle, params->StatementHandle,
525 params->Sqlstate, params->NativeError, params->MessageText,
526 params->BufferLength, params->TextLength);
529 static NTSTATUS wrap_SQLErrorW( void *args )
531 struct SQLErrorW_params *params = args;
533 if (!pSQLErrorW) return SQL_ERROR;
534 return pSQLErrorW(params->EnvironmentHandle, params->ConnectionHandle, params->StatementHandle,
535 params->Sqlstate, params->NativeError, params->MessageText,
536 params->BufferLength, params->TextLength);
539 static NTSTATUS wrap_SQLExecDirect( void *args )
541 struct SQLExecDirect_params *params = args;
543 if (!pSQLExecDirect) return SQL_ERROR;
544 return pSQLExecDirect(params->StatementHandle, params->StatementText, params->TextLength);
547 static NTSTATUS wrap_SQLExecDirectW( void *args )
549 struct SQLExecDirectW_params *params = args;
551 if (!pSQLExecDirectW) return SQL_ERROR;
552 return pSQLExecDirectW(params->StatementHandle, params->StatementText, params->TextLength);
555 static NTSTATUS wrap_SQLExecute( void *args )
557 struct SQLExecute_params *params = args;
559 if (!pSQLExecute) return SQL_ERROR;
560 return pSQLExecute(params->StatementHandle);
563 static NTSTATUS wrap_SQLExtendedFetch( void *args )
565 struct SQLExtendedFetch_params *params = args;
567 if (!pSQLExtendedFetch) return SQL_ERROR;
568 return pSQLExtendedFetch(params->hstmt, params->fFetchType, params->irow,
569 params->pcrow, params->rgfRowStatus);
572 static NTSTATUS wrap_SQLFetch( void *args )
574 struct SQLFetch_params *params = args;
576 if (!pSQLFetch) return SQL_ERROR;
577 return pSQLFetch(params->StatementHandle);
580 static NTSTATUS wrap_SQLFetchScroll( void *args )
582 struct SQLFetchScroll_params *params = args;
584 if (!pSQLFetchScroll) return SQL_ERROR;
585 return pSQLFetchScroll(params->StatementHandle, params->FetchOrientation, params->FetchOffset);
588 static NTSTATUS wrap_SQLForeignKeys( void *args )
590 struct SQLForeignKeys_params *params = args;
592 if (!pSQLForeignKeys) return SQL_ERROR;
593 return pSQLForeignKeys(params->hstmt, params->szPkCatalogName, params->cbPkCatalogName,
594 params->szPkSchemaName, params->cbPkSchemaName, params->szPkTableName,
595 params->cbPkTableName, params->szFkCatalogName, params->cbFkCatalogName,
596 params->szFkSchemaName, params->cbFkSchemaName, params->szFkTableName,
597 params->cbFkTableName);
600 static NTSTATUS wrap_SQLForeignKeysW( void *args )
602 struct SQLForeignKeysW_params *params = args;
604 if (!pSQLForeignKeysW) return SQL_ERROR;
605 return pSQLForeignKeysW(params->hstmt, params->szPkCatalogName, params->cbPkCatalogName,
606 params->szPkSchemaName, params->cbPkSchemaName, params->szPkTableName,
607 params->cbPkTableName, params->szFkCatalogName, params->cbFkCatalogName,
608 params->szFkSchemaName, params->cbFkSchemaName, params->szFkTableName,
609 params->cbFkTableName);
612 static NTSTATUS wrap_SQLFreeConnect( void *args )
614 struct SQLFreeConnect_params *params = args;
616 if (!pSQLFreeConnect) return SQL_ERROR;
617 return pSQLFreeConnect(params->ConnectionHandle);
620 static NTSTATUS wrap_SQLFreeEnv( void *args )
622 struct SQLFreeEnv_params *params = args;
624 if (!pSQLFreeEnv) return SQL_ERROR;
625 return pSQLFreeEnv(params->EnvironmentHandle);
628 static NTSTATUS wrap_SQLFreeHandle( void *args )
630 struct SQLFreeHandle_params *params = args;
632 if (!pSQLFreeHandle) return SQL_ERROR;
633 return pSQLFreeHandle(params->HandleType, params->Handle);
636 static NTSTATUS wrap_SQLFreeStmt( void *args )
638 struct SQLFreeStmt_params *params = args;
640 if (!pSQLFreeStmt) return SQL_ERROR;
641 return pSQLFreeStmt(params->StatementHandle, params->Option);
644 static NTSTATUS wrap_SQLGetConnectAttr( void *args )
646 struct SQLGetConnectAttr_params *params = args;
648 if (!pSQLGetConnectAttr) return SQL_ERROR;
649 return pSQLGetConnectAttr(params->ConnectionHandle, params->Attribute, params->Value,
650 params->BufferLength, params->StringLength);
653 static NTSTATUS wrap_SQLGetConnectAttrW( void *args )
655 struct SQLGetConnectAttrW_params *params = args;
657 if (!pSQLGetConnectAttrW) return SQL_ERROR;
658 return pSQLGetConnectAttrW(params->ConnectionHandle, params->Attribute, params->Value,
659 params->BufferLength, params->StringLength);
662 static NTSTATUS wrap_SQLGetConnectOption( void *args )
664 struct SQLGetConnectOption_params *params = args;
666 if (!pSQLGetConnectOption) return SQL_ERROR;
667 return pSQLGetConnectOption(params->ConnectionHandle, params->Option, params->Value);
670 static NTSTATUS wrap_SQLGetConnectOptionW( void *args )
672 struct SQLGetConnectOptionW_params *params = args;
674 if (!pSQLGetConnectOptionW) return SQL_ERROR;
675 return pSQLGetConnectOptionW(params->ConnectionHandle, params->Option, params->Value);
678 static NTSTATUS wrap_SQLGetCursorName( void *args )
680 struct SQLGetCursorName_params *params = args;
682 if (!pSQLGetCursorName) return SQL_ERROR;
683 return pSQLGetCursorName(params->StatementHandle, params->CursorName, params->BufferLength,
684 params->NameLength);
687 static NTSTATUS wrap_SQLGetCursorNameW( void *args )
689 struct SQLGetCursorNameW_params *params = args;
691 if (!pSQLGetCursorNameW) return SQL_ERROR;
692 return pSQLGetCursorNameW(params->StatementHandle, params->CursorName, params->BufferLength,
693 params->NameLength);
696 static NTSTATUS wrap_SQLGetData( void *args )
698 struct SQLGetData_params *params = args;
700 if (!pSQLGetData) return SQL_ERROR;
701 return pSQLGetData(params->StatementHandle, params->ColumnNumber, params->TargetType,
702 params->TargetValue, params->BufferLength, params->StrLen_or_Ind);
705 static NTSTATUS wrap_SQLGetDescField( void *args )
707 struct SQLGetDescField_params *params = args;
709 if (!pSQLGetDescField) return SQL_ERROR;
710 return pSQLGetDescField(params->DescriptorHandle, params->RecNumber, params->FieldIdentifier,
711 params->Value, params->BufferLength, params->StringLength);
714 static NTSTATUS wrap_SQLGetDescFieldW( void *args )
716 struct SQLGetDescFieldW_params *params = args;
718 if (!pSQLGetDescFieldW) return SQL_ERROR;
719 return pSQLGetDescFieldW(params->DescriptorHandle, params->RecNumber, params->FieldIdentifier,
720 params->Value, params->BufferLength, params->StringLength);
723 static NTSTATUS wrap_SQLGetDescRec( void *args )
725 struct SQLGetDescRec_params *params = args;
727 if (!pSQLGetDescRec) return SQL_ERROR;
728 return pSQLGetDescRec(params->DescriptorHandle, params->RecNumber, params->Name, params->BufferLength,
729 params->StringLength, params->Type, params->SubType, params->Length,
730 params->Precision, params->Scale, params->Nullable);
733 static NTSTATUS wrap_SQLGetDescRecW( void *args )
735 struct SQLGetDescRecW_params *params = args;
737 if (!pSQLGetDescRecW) return SQL_ERROR;
738 return pSQLGetDescRecW(params->DescriptorHandle, params->RecNumber, params->Name, params->BufferLength,
739 params->StringLength, params->Type, params->SubType, params->Length,
740 params->Precision, params->Scale, params->Nullable);
743 static NTSTATUS wrap_SQLGetDiagField( void *args )
745 struct SQLGetDiagField_params *params = args;
747 if (!pSQLGetDiagField) return SQL_ERROR;
748 return pSQLGetDiagField(params->HandleType, params->Handle, params->RecNumber, params->DiagIdentifier,
749 params->DiagInfo, params->BufferLength, params->StringLength);
752 static NTSTATUS wrap_SQLGetDiagFieldW( void *args )
754 struct SQLGetDiagFieldW_params *params = args;
756 if (!pSQLGetDiagFieldW) return SQL_ERROR;
757 return pSQLGetDiagFieldW(params->HandleType, params->Handle, params->RecNumber, params->DiagIdentifier,
758 params->DiagInfo, params->BufferLength, params->StringLength);
761 static NTSTATUS wrap_SQLGetDiagRec( void *args )
763 struct SQLGetDiagRec_params *params = args;
765 if (!pSQLGetDiagRec) return SQL_ERROR;
766 return pSQLGetDiagRec(params->HandleType, params->Handle, params->RecNumber, params->Sqlstate,
767 params->NativeError, params->MessageText, params->BufferLength,
768 params->TextLength);
771 static NTSTATUS wrap_SQLGetDiagRecA( void *args )
773 struct SQLGetDiagRecA_params *params = args;
775 if (!pSQLGetDiagRecA) return SQL_ERROR;
776 return pSQLGetDiagRecA(params->HandleType, params->Handle, params->RecNumber, params->Sqlstate,
777 params->NativeError, params->MessageText, params->BufferLength,
778 params->TextLength);
781 static NTSTATUS wrap_SQLGetDiagRecW( void *args )
783 struct SQLGetDiagRecW_params *params = args;
785 if (!pSQLGetDiagRecW) return SQL_ERROR;
786 return pSQLGetDiagRecW(params->HandleType, params->Handle, params->RecNumber, params->Sqlstate,
787 params->NativeError, params->MessageText, params->BufferLength,
788 params->TextLength);
791 static NTSTATUS wrap_SQLGetEnvAttr( void *args )
793 struct SQLGetEnvAttr_params *params = args;
795 if (!pSQLGetEnvAttr) return SQL_ERROR;
796 return pSQLGetEnvAttr(params->EnvironmentHandle, params->Attribute, params->Value,
797 params->BufferLength, params->StringLength);
800 static NTSTATUS wrap_SQLGetFunctions( void *args )
802 struct SQLGetFunctions_params *params = args;
804 if (!pSQLGetFunctions) return SQL_ERROR;
805 return pSQLGetFunctions(params->ConnectionHandle, params->FunctionId, params->Supported);
808 static NTSTATUS wrap_SQLGetInfo( void *args )
810 struct SQLGetInfo_params *params = args;
812 if (!pSQLGetInfo) return SQL_ERROR;
813 return pSQLGetInfo(params->ConnectionHandle, params->InfoType, params->InfoValue,
814 params->BufferLength, params->StringLength);
817 static NTSTATUS wrap_SQLGetInfoW( void *args )
819 struct SQLGetInfoW_params *params = args;
821 if (!pSQLGetInfoW) return SQL_ERROR;
822 return pSQLGetInfoW(params->ConnectionHandle, params->InfoType, params->InfoValue,
823 params->BufferLength, params->StringLength);
826 static NTSTATUS wrap_SQLGetStmtAttr( void *args )
828 struct SQLGetStmtAttr_params *params = args;
830 if (!pSQLGetStmtAttr) return SQL_ERROR;
831 return pSQLGetStmtAttr(params->StatementHandle, params->Attribute, params->Value,
832 params->BufferLength, params->StringLength);
835 static NTSTATUS wrap_SQLGetStmtAttrW( void *args )
837 struct SQLGetStmtAttrW_params *params = args;
839 if (!pSQLGetStmtAttrW) return SQL_ERROR;
840 return pSQLGetStmtAttrW(params->StatementHandle, params->Attribute, params->Value,
841 params->BufferLength, params->StringLength);
844 static NTSTATUS wrap_SQLGetStmtOption( void *args )
846 struct SQLGetStmtOption_params *params = args;
848 if (!pSQLGetStmtOption) return SQL_ERROR;
849 return pSQLGetStmtOption(params->StatementHandle, params->Option, params->Value);
852 static NTSTATUS wrap_SQLGetTypeInfo( void *args )
854 struct SQLGetTypeInfo_params *params = args;
856 if (!pSQLGetTypeInfo) return SQL_ERROR;
857 return pSQLGetTypeInfo(params->StatementHandle, params->DataType);
860 static NTSTATUS wrap_SQLGetTypeInfoW( void *args )
862 struct SQLGetTypeInfoW_params *params = args;
864 if (!pSQLGetTypeInfoW) return SQL_ERROR;
865 return pSQLGetTypeInfoW(params->StatementHandle, params->DataType);
868 static NTSTATUS wrap_SQLMoreResults( void *args )
870 struct SQLMoreResults_params *params = args;
872 if (!pSQLMoreResults) return SQL_ERROR;
873 return pSQLMoreResults(params->StatementHandle);
876 static NTSTATUS wrap_SQLNativeSql( void *args )
878 struct SQLNativeSql_params *params = args;
880 if (!pSQLNativeSql) return SQL_ERROR;
881 return pSQLNativeSql(params->hdbc, params->szSqlStrIn, params->cbSqlStrIn, params->szSqlStr,
882 params->cbSqlStrMax, params->pcbSqlStr);
885 static NTSTATUS wrap_SQLNativeSqlW( void *args )
887 struct SQLNativeSqlW_params *params = args;
889 if (!pSQLNativeSqlW) return SQL_ERROR;
890 return pSQLNativeSqlW(params->hdbc, params->szSqlStrIn, params->cbSqlStrIn, params->szSqlStr,
891 params->cbSqlStrMax, params->pcbSqlStr);
894 static NTSTATUS wrap_SQLNumParams( void *args )
896 struct SQLNumParams_params *params = args;
898 if (!pSQLNumParams) return SQL_ERROR;
899 return pSQLNumParams(params->hstmt, params->pcpar);
902 static NTSTATUS wrap_SQLNumResultCols( void *args )
904 struct SQLNumResultCols_params *params = args;
906 if (!pSQLNumResultCols) return SQL_ERROR;
907 return pSQLNumResultCols(params->StatementHandle, params->ColumnCount);
910 static NTSTATUS wrap_SQLParamData( void *args )
912 struct SQLParamData_params *params = args;
914 if (!pSQLParamData) return SQL_ERROR;
915 return pSQLParamData(params->StatementHandle, params->Value);
918 static NTSTATUS wrap_SQLParamOptions( void *args )
920 struct SQLParamOptions_params *params = args;
922 if (!pSQLParamOptions) return SQL_ERROR;
923 return pSQLParamOptions(params->hstmt, params->crow, params->pirow);
926 static NTSTATUS wrap_SQLPrepare( void *args )
928 struct SQLPrepare_params *params = args;
930 if (!pSQLPrepare) return SQL_ERROR;
931 return pSQLPrepare(params->StatementHandle, params->StatementText, params->TextLength);
934 static NTSTATUS wrap_SQLPrepareW( void *args )
936 struct SQLPrepareW_params *params = args;
938 if (!pSQLPrepareW) return SQL_ERROR;
939 return pSQLPrepareW(params->StatementHandle, params->StatementText, params->TextLength);
942 static NTSTATUS wrap_SQLPrimaryKeys( void *args )
944 struct SQLPrimaryKeys_params *params = args;
946 if (!pSQLPrimaryKeys) return SQL_ERROR;
947 return pSQLPrimaryKeys(params->hstmt, params->szCatalogName, params->cbCatalogName,
948 params->szSchemaName, params->cbSchemaName,
949 params->szTableName, params->cbTableName);
952 static NTSTATUS wrap_SQLPrimaryKeysW( void *args )
954 struct SQLPrimaryKeysW_params *params = args;
956 if (!pSQLPrimaryKeysW) return SQL_ERROR;
957 return pSQLPrimaryKeysW(params->hstmt, params->szCatalogName, params->cbCatalogName,
958 params->szSchemaName, params->cbSchemaName,
959 params->szTableName, params->cbTableName);
962 static NTSTATUS wrap_SQLProcedureColumns( void *args )
964 struct SQLProcedureColumns_params *params = args;
966 if (!pSQLProcedureColumns) return SQL_ERROR;
967 return pSQLProcedureColumns(params->hstmt, params->szCatalogName, params->cbCatalogName,
968 params->szSchemaName, params->cbSchemaName, params->szProcName,
969 params->cbProcName, params->szColumnName, params->cbColumnName);
972 static NTSTATUS wrap_SQLProcedureColumnsW( void *args )
974 struct SQLProcedureColumnsW_params *params = args;
976 if (!pSQLProcedureColumnsW) return SQL_ERROR;
977 return pSQLProcedureColumnsW(params->hstmt, params->szCatalogName, params->cbCatalogName,
978 params->szSchemaName, params->cbSchemaName, params->szProcName,
979 params->cbProcName, params->szColumnName, params->cbColumnName);
982 static NTSTATUS wrap_SQLProcedures( void *args )
984 struct SQLProcedures_params *params = args;
986 if (!pSQLProcedures) return SQL_ERROR;
987 return pSQLProcedures(params->hstmt, params->szCatalogName, params->cbCatalogName,
988 params->szSchemaName, params->cbSchemaName, params->szProcName,
989 params->cbProcName);
992 static NTSTATUS wrap_SQLProceduresW( void *args )
994 struct SQLProceduresW_params *params = args;
996 if (!pSQLProceduresW) return SQL_ERROR;
997 return pSQLProceduresW(params->hstmt, params->szCatalogName, params->cbCatalogName,
998 params->szSchemaName, params->cbSchemaName, params->szProcName,
999 params->cbProcName);
1002 static NTSTATUS wrap_SQLPutData( void *args )
1004 struct SQLPutData_params *params = args;
1006 if (!pSQLPutData) return SQL_ERROR;
1007 return pSQLPutData(params->StatementHandle, params->Data, params->StrLen_or_Ind);
1010 static NTSTATUS wrap_SQLRowCount( void *args )
1012 struct SQLRowCount_params *params = args;
1014 if (!pSQLRowCount) return SQL_ERROR;
1015 return pSQLRowCount(params->StatementHandle, params->RowCount);
1018 static NTSTATUS wrap_SQLSetConnectAttr( void *args )
1020 struct SQLSetConnectAttr_params *params = args;
1022 if (!pSQLSetConnectAttr) return SQL_ERROR;
1023 return pSQLSetConnectAttr(params->ConnectionHandle, params->Attribute, params->Value,
1024 params->StringLength);
1027 static NTSTATUS wrap_SQLSetConnectAttrW( void *args )
1029 struct SQLSetConnectAttrW_params *params = args;
1031 if (!pSQLSetConnectAttrW) return SQL_ERROR;
1032 return pSQLSetConnectAttrW(params->ConnectionHandle, params->Attribute, params->Value,
1033 params->StringLength);
1036 static NTSTATUS wrap_SQLSetConnectOption( void *args )
1038 struct SQLSetConnectOption_params *params = args;
1040 if (!pSQLSetConnectOption) return SQL_ERROR;
1041 return pSQLSetConnectOption(params->ConnectionHandle, params->Option, params->Value);
1044 static NTSTATUS wrap_SQLSetConnectOptionW( void *args )
1046 struct SQLSetConnectOptionW_params *params = args;
1048 if (!pSQLSetConnectOptionW) return SQL_ERROR;
1049 return pSQLSetConnectOptionW(params->ConnectionHandle, params->Option, params->Value);
1052 static NTSTATUS wrap_SQLSetCursorName( void *args )
1054 struct SQLSetCursorName_params *params = args;
1056 if (!pSQLSetCursorName) return SQL_ERROR;
1057 return pSQLSetCursorName(params->StatementHandle, params->CursorName, params->NameLength);
1060 static NTSTATUS wrap_SQLSetCursorNameW( void *args )
1062 struct SQLSetCursorNameW_params *params = args;
1064 if (!pSQLSetCursorNameW) return SQL_ERROR;
1065 return pSQLSetCursorNameW(params->StatementHandle, params->CursorName, params->NameLength);
1068 static NTSTATUS wrap_SQLSetDescField( void *args )
1070 struct SQLSetDescField_params *params = args;
1072 if (!pSQLSetDescField) return SQL_ERROR;
1073 return pSQLSetDescField(params->DescriptorHandle, params->RecNumber, params->FieldIdentifier,
1074 params->Value, params->BufferLength);
1077 static NTSTATUS wrap_SQLSetDescFieldW( void *args )
1079 struct SQLSetDescFieldW_params *params = args;
1081 if (!pSQLSetDescFieldW) return SQL_ERROR;
1082 return pSQLSetDescFieldW(params->DescriptorHandle, params->RecNumber, params->FieldIdentifier,
1083 params->Value, params->BufferLength);
1086 static NTSTATUS wrap_SQLSetDescRec( void *args )
1088 struct SQLSetDescRec_params *params = args;
1090 if (!pSQLSetDescRec) return SQL_ERROR;
1091 return pSQLSetDescRec(params->DescriptorHandle, params->RecNumber, params->Type, params->SubType,
1092 params->Length, params->Precision, params->Scale, params->Data,
1093 params->StringLength, params->Indicator);
1096 static NTSTATUS wrap_SQLSetEnvAttr( void *args )
1098 struct SQLSetEnvAttr_params *params = args;
1100 if (!pSQLSetEnvAttr) return SQL_ERROR;
1101 return pSQLSetEnvAttr(params->EnvironmentHandle, params->Attribute, params->Value, params->StringLength);
1104 static NTSTATUS wrap_SQLSetParam( void *args )
1106 struct SQLSetParam_params *params = args;
1108 if (!pSQLSetParam) return SQL_ERROR;
1109 return pSQLSetParam(params->StatementHandle, params->ParameterNumber, params->ValueType,
1110 params->ParameterType, params->LengthPrecision, params->ParameterScale,
1111 params->ParameterValue, params->StrLen_or_Ind);
1114 static NTSTATUS wrap_SQLSetPos( void *args )
1116 struct SQLSetPos_params *params = args;
1118 if (!pSQLSetPos) return SQL_ERROR;
1119 return pSQLSetPos(params->hstmt, params->irow, params->fOption, params->fLock);
1122 static NTSTATUS wrap_SQLSetScrollOptions( void *args )
1124 struct SQLSetScrollOptions_params *params = args;
1126 if (!pSQLSetScrollOptions) return SQL_ERROR;
1127 return pSQLSetScrollOptions(params->statement_handle, params->f_concurrency,
1128 params->crow_keyset, params->crow_rowset);
1131 static NTSTATUS wrap_SQLSetStmtAttr( void *args )
1133 struct SQLSetStmtAttr_params *params = args;
1135 if (!pSQLSetStmtAttr) return SQL_ERROR;
1136 return pSQLSetStmtAttr(params->StatementHandle, params->Attribute, params->Value, params->StringLength);
1139 static NTSTATUS wrap_SQLSetStmtAttrW( void *args )
1141 struct SQLSetStmtAttrW_params *params = args;
1143 if (!pSQLSetStmtAttrW) return SQL_ERROR;
1144 return pSQLSetStmtAttrW(params->StatementHandle, params->Attribute, params->Value, params->StringLength);
1147 static NTSTATUS wrap_SQLSetStmtOption( void *args )
1149 struct SQLSetStmtOption_params *params = args;
1151 if (!pSQLSetStmtOption) return SQL_ERROR;
1152 return pSQLSetStmtOption(params->StatementHandle, params->Option, params->Value);
1155 static NTSTATUS wrap_SQLSpecialColumns( void *args )
1157 struct SQLSpecialColumns_params *params = args;
1159 if (!pSQLSpecialColumns) return SQL_ERROR;
1160 return pSQLSpecialColumns(params->StatementHandle, params->IdentifierType, params->CatalogName,
1161 params->NameLength1, params->SchemaName, params->NameLength2,
1162 params->TableName, params->NameLength3, params->Scope, params->Nullable);
1165 static NTSTATUS wrap_SQLSpecialColumnsW( void *args )
1167 struct SQLSpecialColumnsW_params *params = args;
1169 if (!pSQLSpecialColumnsW) return SQL_ERROR;
1170 return pSQLSpecialColumnsW(params->StatementHandle, params->IdentifierType, params->CatalogName,
1171 params->NameLength1, params->SchemaName, params->NameLength2,
1172 params->TableName, params->NameLength3, params->Scope, params->Nullable);
1175 static NTSTATUS wrap_SQLStatistics( void *args )
1177 struct SQLStatistics_params *params = args;
1179 if (!pSQLStatistics) return SQL_ERROR;
1180 return pSQLStatistics(params->StatementHandle, params->CatalogName, params->NameLength1,
1181 params->SchemaName, params->NameLength2, params->TableName,
1182 params->NameLength3, params->Unique, params->Reserved);
1185 static NTSTATUS wrap_SQLStatisticsW( void *args )
1187 struct SQLStatisticsW_params *params = args;
1189 if (!pSQLStatisticsW) return SQL_ERROR;
1190 return pSQLStatisticsW(params->StatementHandle, params->CatalogName, params->NameLength1,
1191 params->SchemaName, params->NameLength2, params->TableName,
1192 params->NameLength3, params->Unique, params->Reserved);
1195 static NTSTATUS wrap_SQLTablePrivileges( void *args )
1197 struct SQLTablePrivileges_params *params = args;
1199 if (!pSQLTablePrivileges) return SQL_ERROR;
1200 return pSQLTablePrivileges(params->hstmt, params->szCatalogName, params->cbCatalogName,
1201 params->szSchemaName, params->cbSchemaName, params->szTableName,
1202 params->cbTableName);
1205 static NTSTATUS wrap_SQLTablePrivilegesW( void *args )
1207 struct SQLTablePrivilegesW_params *params = args;
1209 if (!pSQLTablePrivilegesW) return SQL_ERROR;
1210 return pSQLTablePrivilegesW(params->hstmt, params->szCatalogName, params->cbCatalogName,
1211 params->szSchemaName, params->cbSchemaName, params->szTableName,
1212 params->cbTableName);
1215 static NTSTATUS wrap_SQLTables( void *args )
1217 struct SQLTables_params *params = args;
1219 if (!pSQLTables) return SQL_ERROR;
1220 return pSQLTables(params->StatementHandle, params->CatalogName, params->NameLength1,
1221 params->SchemaName, params->NameLength2, params->TableName,
1222 params->NameLength3, params->TableType, params->NameLength4);
1225 static NTSTATUS wrap_SQLTablesW( void *args )
1227 struct SQLTablesW_params *params = args;
1229 if (!pSQLTablesW) return SQL_ERROR;
1230 return pSQLTablesW(params->StatementHandle, params->CatalogName, params->NameLength1,
1231 params->SchemaName, params->NameLength2, params->TableName,
1232 params->NameLength3, params->TableType, params->NameLength4);
1235 static NTSTATUS wrap_SQLTransact( void *args )
1237 struct SQLTransact_params *params = args;
1239 if (!pSQLTransact) return SQL_ERROR;
1240 return pSQLTransact(params->EnvironmentHandle, params->ConnectionHandle, params->CompletionType);
1243 const unixlib_entry_t __wine_unix_call_funcs[NB_ODBC_FUNCS] =
1245 odbc_process_attach,
1246 odbc_process_detach,
1247 wrap_SQLAllocConnect,
1248 wrap_SQLAllocEnv,
1249 wrap_SQLAllocHandle,
1250 wrap_SQLAllocHandleStd,
1251 wrap_SQLAllocStmt,
1252 wrap_SQLBindCol,
1253 wrap_SQLBindParam,
1254 wrap_SQLBindParameter,
1255 wrap_SQLBrowseConnect,
1256 wrap_SQLBrowseConnectW,
1257 wrap_SQLBulkOperations,
1258 wrap_SQLCancel,
1259 wrap_SQLCloseCursor,
1260 wrap_SQLColAttribute,
1261 wrap_SQLColAttributeW,
1262 wrap_SQLColAttributes,
1263 wrap_SQLColAttributesW,
1264 wrap_SQLColumnPrivileges,
1265 wrap_SQLColumnPrivilegesW,
1266 wrap_SQLColumns,
1267 wrap_SQLColumnsW,
1268 wrap_SQLConnect,
1269 wrap_SQLConnectW,
1270 wrap_SQLCopyDesc,
1271 wrap_SQLDataSources,
1272 wrap_SQLDataSourcesA,
1273 wrap_SQLDataSourcesW,
1274 wrap_SQLDescribeCol,
1275 wrap_SQLDescribeColW,
1276 wrap_SQLDescribeParam,
1277 wrap_SQLDisconnect,
1278 wrap_SQLDriverConnect,
1279 wrap_SQLDriverConnectW,
1280 wrap_SQLDrivers,
1281 wrap_SQLDriversW,
1282 wrap_SQLEndTran,
1283 wrap_SQLError,
1284 wrap_SQLErrorW,
1285 wrap_SQLExecDirect,
1286 wrap_SQLExecDirectW,
1287 wrap_SQLExecute,
1288 wrap_SQLExtendedFetch,
1289 wrap_SQLFetch,
1290 wrap_SQLFetchScroll,
1291 wrap_SQLForeignKeys,
1292 wrap_SQLForeignKeysW,
1293 wrap_SQLFreeConnect,
1294 wrap_SQLFreeEnv,
1295 wrap_SQLFreeHandle,
1296 wrap_SQLFreeStmt,
1297 wrap_SQLGetConnectAttr,
1298 wrap_SQLGetConnectAttrW,
1299 wrap_SQLGetConnectOption,
1300 wrap_SQLGetConnectOptionW,
1301 wrap_SQLGetCursorName,
1302 wrap_SQLGetCursorNameW,
1303 wrap_SQLGetData,
1304 wrap_SQLGetDescField,
1305 wrap_SQLGetDescFieldW,
1306 wrap_SQLGetDescRec,
1307 wrap_SQLGetDescRecW,
1308 wrap_SQLGetDiagField,
1309 wrap_SQLGetDiagFieldW,
1310 wrap_SQLGetDiagRec,
1311 wrap_SQLGetDiagRecA,
1312 wrap_SQLGetDiagRecW,
1313 wrap_SQLGetEnvAttr,
1314 wrap_SQLGetFunctions,
1315 wrap_SQLGetInfo,
1316 wrap_SQLGetInfoW,
1317 wrap_SQLGetStmtAttr,
1318 wrap_SQLGetStmtAttrW,
1319 wrap_SQLGetStmtOption,
1320 wrap_SQLGetTypeInfo,
1321 wrap_SQLGetTypeInfoW,
1322 wrap_SQLMoreResults,
1323 wrap_SQLNativeSql,
1324 wrap_SQLNativeSqlW,
1325 wrap_SQLNumParams,
1326 wrap_SQLNumResultCols,
1327 wrap_SQLParamData,
1328 wrap_SQLParamOptions,
1329 wrap_SQLPrepare,
1330 wrap_SQLPrepareW,
1331 wrap_SQLPrimaryKeys,
1332 wrap_SQLPrimaryKeysW,
1333 wrap_SQLProcedureColumns,
1334 wrap_SQLProcedureColumnsW,
1335 wrap_SQLProcedures,
1336 wrap_SQLProceduresW,
1337 wrap_SQLPutData,
1338 wrap_SQLRowCount,
1339 wrap_SQLSetConnectAttr,
1340 wrap_SQLSetConnectAttrW,
1341 wrap_SQLSetConnectOption,
1342 wrap_SQLSetConnectOptionW,
1343 wrap_SQLSetCursorName,
1344 wrap_SQLSetCursorNameW,
1345 wrap_SQLSetDescField,
1346 wrap_SQLSetDescFieldW,
1347 wrap_SQLSetDescRec,
1348 wrap_SQLSetEnvAttr,
1349 wrap_SQLSetParam,
1350 wrap_SQLSetPos,
1351 wrap_SQLSetScrollOptions,
1352 wrap_SQLSetStmtAttr,
1353 wrap_SQLSetStmtAttrW,
1354 wrap_SQLSetStmtOption,
1355 wrap_SQLSpecialColumns,
1356 wrap_SQLSpecialColumnsW,
1357 wrap_SQLStatistics,
1358 wrap_SQLStatisticsW,
1359 wrap_SQLTablePrivileges,
1360 wrap_SQLTablePrivilegesW,
1361 wrap_SQLTables,
1362 wrap_SQLTablesW,
1363 wrap_SQLTransact,
1366 static NTSTATUS load_odbc(void)
1368 const char *s = getenv("LIB_ODBC_DRIVER_MANAGER");
1370 #ifdef SONAME_LIBODBC
1371 if (!s || !s[0]) s = SONAME_LIBODBC;
1372 #endif
1373 if (!s || !s[0] || !(libodbc = dlopen( s, RTLD_LAZY | RTLD_GLOBAL )))
1375 ERR_(winediag)("failed to open library %s: %s\n", debugstr_a(s), dlerror());
1376 return STATUS_DLL_NOT_FOUND;
1379 #define LOAD_FUNC(name) \
1380 p##name = dlsym( libodbc, #name );
1382 LOAD_FUNC(SQLAllocConnect);
1383 LOAD_FUNC(SQLAllocEnv);
1384 LOAD_FUNC(SQLAllocHandle);
1385 LOAD_FUNC(SQLAllocHandleStd);
1386 LOAD_FUNC(SQLAllocStmt);
1387 LOAD_FUNC(SQLBindCol);
1388 LOAD_FUNC(SQLBindParam);
1389 LOAD_FUNC(SQLBindParameter);
1390 LOAD_FUNC(SQLBrowseConnect);
1391 LOAD_FUNC(SQLBrowseConnectW);
1392 LOAD_FUNC(SQLBulkOperations);
1393 LOAD_FUNC(SQLCancel);
1394 LOAD_FUNC(SQLCloseCursor);
1395 LOAD_FUNC(SQLColAttribute);
1396 LOAD_FUNC(SQLColAttributeW);
1397 LOAD_FUNC(SQLColAttributes);
1398 LOAD_FUNC(SQLColAttributesW);
1399 LOAD_FUNC(SQLColumnPrivileges);
1400 LOAD_FUNC(SQLColumnPrivilegesW);
1401 LOAD_FUNC(SQLColumns);
1402 LOAD_FUNC(SQLColumnsW);
1403 LOAD_FUNC(SQLConnect);
1404 LOAD_FUNC(SQLConnectW);
1405 LOAD_FUNC(SQLCopyDesc);
1406 LOAD_FUNC(SQLDataSources);
1407 LOAD_FUNC(SQLDataSourcesA);
1408 LOAD_FUNC(SQLDataSourcesW);
1409 LOAD_FUNC(SQLDescribeCol);
1410 LOAD_FUNC(SQLDescribeColW);
1411 LOAD_FUNC(SQLDescribeParam);
1412 LOAD_FUNC(SQLDisconnect);
1413 LOAD_FUNC(SQLDriverConnect);
1414 LOAD_FUNC(SQLDriverConnectW);
1415 LOAD_FUNC(SQLDrivers);
1416 LOAD_FUNC(SQLDriversW);
1417 LOAD_FUNC(SQLEndTran);
1418 LOAD_FUNC(SQLError);
1419 LOAD_FUNC(SQLErrorW);
1420 LOAD_FUNC(SQLExecDirect);
1421 LOAD_FUNC(SQLExecDirectW);
1422 LOAD_FUNC(SQLExecute);
1423 LOAD_FUNC(SQLExtendedFetch);
1424 LOAD_FUNC(SQLFetch);
1425 LOAD_FUNC(SQLFetchScroll);
1426 LOAD_FUNC(SQLForeignKeys);
1427 LOAD_FUNC(SQLForeignKeysW);
1428 LOAD_FUNC(SQLFreeConnect);
1429 LOAD_FUNC(SQLFreeEnv);
1430 LOAD_FUNC(SQLFreeHandle);
1431 LOAD_FUNC(SQLFreeStmt);
1432 LOAD_FUNC(SQLGetConnectAttr);
1433 LOAD_FUNC(SQLGetConnectAttrW);
1434 LOAD_FUNC(SQLGetConnectOption);
1435 LOAD_FUNC(SQLGetConnectOptionW);
1436 LOAD_FUNC(SQLGetCursorName);
1437 LOAD_FUNC(SQLGetCursorNameW);
1438 LOAD_FUNC(SQLGetData);
1439 LOAD_FUNC(SQLGetDescField);
1440 LOAD_FUNC(SQLGetDescFieldW);
1441 LOAD_FUNC(SQLGetDescRec);
1442 LOAD_FUNC(SQLGetDescRecW);
1443 LOAD_FUNC(SQLGetDiagField);
1444 LOAD_FUNC(SQLGetDiagFieldW);
1445 LOAD_FUNC(SQLGetDiagRec);
1446 LOAD_FUNC(SQLGetDiagRecA);
1447 LOAD_FUNC(SQLGetDiagRecW);
1448 LOAD_FUNC(SQLGetEnvAttr);
1449 LOAD_FUNC(SQLGetFunctions);
1450 LOAD_FUNC(SQLGetInfo);
1451 LOAD_FUNC(SQLGetInfoW);
1452 LOAD_FUNC(SQLGetStmtAttr);
1453 LOAD_FUNC(SQLGetStmtAttrW);
1454 LOAD_FUNC(SQLGetStmtOption);
1455 LOAD_FUNC(SQLGetTypeInfo);
1456 LOAD_FUNC(SQLGetTypeInfoW);
1457 LOAD_FUNC(SQLMoreResults);
1458 LOAD_FUNC(SQLNativeSql);
1459 LOAD_FUNC(SQLNativeSqlW);
1460 LOAD_FUNC(SQLNumParams);
1461 LOAD_FUNC(SQLNumResultCols);
1462 LOAD_FUNC(SQLParamData);
1463 LOAD_FUNC(SQLParamOptions);
1464 LOAD_FUNC(SQLPrepare);
1465 LOAD_FUNC(SQLPrepareW);
1466 LOAD_FUNC(SQLPrimaryKeys);
1467 LOAD_FUNC(SQLPrimaryKeysW);
1468 LOAD_FUNC(SQLProcedureColumns);
1469 LOAD_FUNC(SQLProcedureColumnsW);
1470 LOAD_FUNC(SQLProcedures);
1471 LOAD_FUNC(SQLProceduresW);
1472 LOAD_FUNC(SQLPutData);
1473 LOAD_FUNC(SQLRowCount);
1474 LOAD_FUNC(SQLSetConnectAttr);
1475 LOAD_FUNC(SQLSetConnectAttrW);
1476 LOAD_FUNC(SQLSetConnectOption);
1477 LOAD_FUNC(SQLSetConnectOptionW);
1478 LOAD_FUNC(SQLSetCursorName);
1479 LOAD_FUNC(SQLSetCursorNameW);
1480 LOAD_FUNC(SQLSetDescField);
1481 LOAD_FUNC(SQLSetDescFieldW);
1482 LOAD_FUNC(SQLSetDescRec);
1483 LOAD_FUNC(SQLSetEnvAttr);
1484 LOAD_FUNC(SQLSetParam);
1485 LOAD_FUNC(SQLSetPos);
1486 LOAD_FUNC(SQLSetScrollOptions);
1487 LOAD_FUNC(SQLSetStmtAttr);
1488 LOAD_FUNC(SQLSetStmtAttrW);
1489 LOAD_FUNC(SQLSetStmtOption);
1490 LOAD_FUNC(SQLSpecialColumns);
1491 LOAD_FUNC(SQLSpecialColumnsW);
1492 LOAD_FUNC(SQLStatistics);
1493 LOAD_FUNC(SQLStatisticsW);
1494 LOAD_FUNC(SQLTablePrivileges);
1495 LOAD_FUNC(SQLTablePrivilegesW);
1496 LOAD_FUNC(SQLTables);
1497 LOAD_FUNC(SQLTablesW);
1498 LOAD_FUNC(SQLTransact);
1499 #undef LOAD_FUNC
1500 return STATUS_SUCCESS;