windows-nt/Source/XPSP1/NT/inetsrv/iis/iisrearc/iisplus/odbc/dynodbc.cxx
2020-09-26 16:20:57 +08:00

114 lines
3.5 KiB
C++

/*++
Copyright (c) 1995-1996 Microsoft Corporation
Module Name:
dynodbc.c
Abstract:
This module provides functions for dynamically loading the ODBC
functions.
Author:
Murali R. Krishnan (MuraliK) 3-Nov-1995
Revision History:
--*/
#include "precomp.hxx"
#define ODBC_MODULE_NAME "odbc32.dll"
#define LOAD_ENTRY( hMod, Name ) \
( p##Name = ( pfn##Name )GetProcAddress( ( hMod ), #Name ) )
//
// ODBC DLL Entry Points, fill by calling LoadODBC
//
pfnSQLAllocConnect pSQLAllocConnect ;
pfnSQLAllocEnv pSQLAllocEnv ;
pfnSQLAllocStmt pSQLAllocStmt ;
pfnSQLBindCol pSQLBindCol ;
pfnSQLCancel pSQLCancel ;
pfnSQLColAttributes pSQLColAttributes ;
pfnSQLConnect pSQLConnect ;
pfnSQLDescribeCol pSQLDescribeCol ;
pfnSQLDisconnect pSQLDisconnect ;
pfnSQLError pSQLError ;
pfnSQLExecDirect pSQLExecDirect ;
pfnSQLExecute pSQLExecute ;
pfnSQLFetch pSQLFetch ;
pfnSQLFreeConnect pSQLFreeConnect ;
pfnSQLFreeEnv pSQLFreeEnv ;
pfnSQLFreeStmt pSQLFreeStmt ;
pfnSQLGetCursorName pSQLGetCursorName ;
pfnSQLNumResultCols pSQLNumResultCols ;
pfnSQLPrepare pSQLPrepare ;
pfnSQLRowCount pSQLRowCount ;
pfnSQLSetCursorName pSQLSetCursorName ;
pfnSQLTransact pSQLTransact ;
pfnSQLSetConnectOption pSQLSetConnectOption;
pfnSQLDrivers pSQLDrivers ;
pfnSQLDataSources pSQLDataSources ;
pfnSQLBindParameter pSQLBindParameter ;
pfnSQLGetInfo pSQLGetInfo ;
pfnSQLMoreResults pSQLMoreResults ;
static BOOL s_fODBCLoaded = FALSE;
BOOL
DynLoadODBC(
VOID
)
{
HMODULE hMod;
if( s_fODBCLoaded )
{
return TRUE;
}
if( ( hMod = ( HMODULE ) LoadLibraryA( ODBC_MODULE_NAME ) ) )
{
if( LOAD_ENTRY( hMod, SQLAllocConnect ) &&
LOAD_ENTRY( hMod, SQLAllocEnv ) &&
LOAD_ENTRY( hMod, SQLAllocStmt ) &&
LOAD_ENTRY( hMod, SQLBindCol ) &&
LOAD_ENTRY( hMod, SQLCancel ) &&
LOAD_ENTRY( hMod, SQLColAttributes ) &&
LOAD_ENTRY( hMod, SQLConnect ) &&
LOAD_ENTRY( hMod, SQLDescribeCol ) &&
LOAD_ENTRY( hMod, SQLDisconnect ) &&
LOAD_ENTRY( hMod, SQLError ) &&
LOAD_ENTRY( hMod, SQLExecDirect ) &&
LOAD_ENTRY( hMod, SQLExecute ) &&
LOAD_ENTRY( hMod, SQLFetch ) &&
LOAD_ENTRY( hMod, SQLFreeConnect ) &&
LOAD_ENTRY( hMod, SQLFreeEnv ) &&
LOAD_ENTRY( hMod, SQLFreeStmt ) &&
LOAD_ENTRY( hMod, SQLNumResultCols ) &&
LOAD_ENTRY( hMod, SQLPrepare ) &&
LOAD_ENTRY( hMod, SQLRowCount ) &&
LOAD_ENTRY( hMod, SQLTransact ) &&
LOAD_ENTRY( hMod, SQLSetConnectOption ) &&
LOAD_ENTRY( hMod, SQLDrivers ) &&
LOAD_ENTRY( hMod, SQLDataSources ) &&
LOAD_ENTRY( hMod, SQLGetInfo ) &&
LOAD_ENTRY( hMod, SQLBindParameter ) &&
LOAD_ENTRY( hMod, SQLMoreResults ) )
{
s_fODBCLoaded = TRUE;
}
}
return ( s_fODBCLoaded );
} // DynLoadODBC()