SQLConfigDriver 函数

一致性
引入的版本:ODBC 2.5

摘要
SQLConfigDriver 加载相应的驱动程序设置 DLL 并调用 ConfigDriver 函数。

也可以使用 ODBCCONF.EXE访问 SQLConfigDriver 的功能。

语法

  
BOOL SQLConfigDriver(  
     HWND     hwndParent,  
     WORD     fRequest,  
     LPCSTR   lpszDriver,  
     LPCSTR   lpszArgs,  
     LPSTR    lpszMsg,  
     WORD     cbMsgMax,  
     WORD *   pcbMsgOut);  

参数

hwndParent
[输入]父窗口句柄。 如果句柄为 null,函数将不会显示任何对话框。

fRequest
[输入]请求的类型。 fRequest 必须包含以下值之一:

ODBC_CONFIG_DRIVER:更改驱动程序使用的连接池超时。

ODBC_INSTALL_DRIVER:安装新驱动程序。

ODBC_REMOVE_DRIVER:删除现有驱动程序。

此选项也可以特定于驱动程序,在这种情况下,第一个选项的 fRequest 必须从 ODBC_CONFIG_DRIVER_MAX+1 开始。 任何其他选项的 fRequest 还必须从大于 ODBC_CONFIG_DRIVER_MAX+1 的值开始。

lpszDriver
[输入]在系统信息中注册的驱动程序的名称。

lpszArgs
[输入]一个以 null 结尾的字符串,其中包含特定于驱动程序的 fRequest 的参数。

lpszMsg
[输出]一个以 null 结尾的字符串,其中包含来自驱动程序设置的输出消息。

cbMsgMax
[输入] lpszMsg 的长度。

印刷机
[输出] lpszMsg 中可返回的字节总数。 如果可返回的字节数大于或等于 cbMsgMax则 lpszMsg 中的输出消息将被截断为 cbMsgMax 减去 null 终止字符。 “印刷机”参数可以是 null 指针。

返回

如果成功,函数将返回 TRUE;如果失败,则返回 FALSE。

诊断

SQLConfigDriver 返回 FALSE 时,可以通过调用 SQLInstallerError 获取关联的 *pfErrorCode 值。 下表列出了 SQLInstallerError 可返回的 *pfErrorCode 值,并说明了此函数上下文中的每个值。

*pfErrorCode 错误 说明
ODBC_ERROR_GENERAL_ERR 常规安装程序错误 发生错误,其中没有特定的安装程序错误。
ODBC_ERROR_INVALID_BUFF_LEN 缓冲区长度无效 lpszMsg 参数无效。
ODBC_ERROR_INVALID_HWND 无效的窗口句柄 hwndParent 参数无效。
ODBC_ERROR_INVALID_REQUEST_TYPE 请求类型无效 fRequest 参数不是下列参数之一:

ODBC_INSTALL_DRIVER ODBC_REMOVE_DRIVER

fRequest 参数是一个特定于驱动程序的选项,小于或等于 ODBC_CONFIG_DRIVER_MAX。
ODBC_ERROR_INVALID_NAME 驱动程序或翻译器名称无效 lpszDriver 参数无效。 无法在注册表中找到它。
ODBC_ERROR_INVALID_KEYWORD_VALUE 无效的关键字-值对 lpszArgs 参数包含语法错误。
ODBC_ERROR_REQUEST_FAILED 请求 失败 安装程序无法执行 fRequest 参数请求的操作。 对 ConfigDriver 的 调用失败。
ODBC_ERROR_LOAD_LIBRARY_FAILED 无法加载驱动程序或翻译器安装库 无法加载驱动程序设置库。
ODBC_ERROR_OUT_OF_MEM 内存不足 由于内存不足,安装程序无法执行函数。

注释

SQLConfigDriver 允许应用程序调用驱动程序的 ConfigDriver 例程,而无需知道名称并加载特定于驱动程序的安装 DLL。 安装程序在安装驱动程序安装 DLL 后调用此函数。 调用程序应注意,此函数可能并非适用于所有驱动程序。 在这种情况下,调用程序应继续且不会出错。

Driver-Specific选项

应用程序可以使用 fRequest 参数请求驱动程序公开的特定于驱动程序的功能。 第一个选项的 fRequest 将为 ODBC_CONFIG_DRIVER_MAX+1,其他选项将从该值递增 1。 驱动程序为该函数所需的任何参数都应在 lpszArgs 参数中传递的以 null 结尾的字符串中提供。 提供此类功能的驱动程序应维护特定于驱动程序的选项表。 驱动程序文档中应完整记录选项。 使用特定于驱动程序的选项的应用程序编写者应注意,此用法将使应用程序的互操作性降低。

设置连接池超时

设置驱动程序配置时,可以设置连接池超时属性。 使用 fRequest ODBC_CONFIG_DRIVER 和 lpszArgs 设置为 CPTimeout 调用 SQLConfigDriverCPTimeout 确定连接可以在连接池中保留而不被使用的时间段。 超时过期后,连接将关闭并从池中删除。 默认超时为 60 秒。

当将 fRequest 设置为 ODBC_INSTALL_DRIVER 或 ODBC_REMOVE_DRIVER 调用 SQLConfigDriver 时,驱动程序管理器将加载相应的驱动程序设置 DLL 并调用 ConfigDriver 函数。 使用 fRequest ODBC_CONFIG_DRIVER 调用 SQLConfigDriver 时,所有处理都在 ODBC 安装程序中执行,因此不必加载驱动程序设置 DLL。

消息

驱动程序设置例程可以在 lpszMsg 缓冲区中将文本消息作为以 null 结尾的字符串发送到应用程序。 如果消息大于或等于 cbMsgMax 字符,则 ConfigDriver 函数会将该消息截断为 cbMsgMax 减去 null 终止字符。

有关以下方面的信息 请参阅
添加、修改或删除驱动程序 设置 DLL) 中的 ConfigDriver (
删除默认数据源 SQLRemoveDefaultDataSource