C++ ODBC如何确定驱动程序支持哪些功能?

C++ ODBC如何确定驱动程序支持哪些功能?,c++,windows,odbc,C++,Windows,Odbc,我正在调试ODBC驱动程序,在ODBC日志中遇到以下条目 crw32 7e0-235c ENTER SQLGetInfoW HDBC 0x03816BE0 UWORD 6 <SQL_DRIVER_NAME> PTR 0x0180EB18 SWORD

我正在调试ODBC驱动程序,在ODBC日志中遇到以下条目

crw32           7e0-235c    ENTER SQLGetInfoW 
        HDBC                0x03816BE0
        UWORD                        6 <SQL_DRIVER_NAME>
        PTR                 0x0180EB18 
        SWORD                      256 
        SWORD *             0x0180E6EC

crw32           7e0-235c    EXIT  SQLGetInfoW  with return code -1 (SQL_ERROR)
        HDBC                0x03816BE0
        UWORD                        6 <SQL_DRIVER_NAME>
        PTR                 0x0180EB18 
        SWORD                      256 
        SWORD *             0x0180E6EC

        DIAG [IM001] [Microsoft][ODBC Driver Manager] Driver does not support this function (0)
crw32 7e0-235c输入SQLGetInfoW
HDBC 0x03816BE0
UWORD 6
PTR 0x0180EB18
剑256
剑*0x0180E6EC
crw32 7e0-235c退出SQLGetInfoW,返回代码为-1(SQL\U错误)
HDBC 0x03816BE0
UWORD 6
PTR 0x0180EB18
剑256
剑*0x0180E6EC
DIAG[IM001][Microsoft][ODBC驱动程序管理器]驱动程序不支持此功能(0)

ODBC如何确定驱动程序是否支持给定的函数?

有一个名为SQLGetFunctions的ODBC API(请参阅)。它通常在ODBC驱动程序管理器中处理,但ODBC驱动程序可以自己提供。如果驱动程序管理器正在处理它,那么它可能只是查看驱动程序代码导出了哪些函数


顺便说一句,一个真正不支持SQLGetInfo的驱动程序严重损坏。

是的,你是对的。问题在于驱动程序的
SQLGetFunctions
,它错误地返回了驱动程序支持的函数。