SQLRemoveDriver 函数

一致性
引入的版本:ODBC 3.0

摘要
SQLRemoveDriver 从系统信息中的Odbcinst.ini项更改或删除有关驱动程序的信息。

语法

  
BOOL SQLRemoveDriver(  
     LPCSTR   lpszDriver,  
     BOOL     fRemoveDSN,  
     LPDWORD  lpdwUsageCount);  

参数

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

fRemoveDSN
[输入]有效值为:

TRUE:删除与 lpszDriver 中指定的驱动程序关联的 DSN。 FALSE:请勿删除与 lpszDriver 中指定的驱动程序关联的 DSN。

lpdwUsageCount
[输出]调用此函数后驱动程序的使用情况计数。

返回

如果成功,函数将返回 TRUE;如果失败,则返回 FALSE。 如果在调用此函数时系统信息中不存在任何条目,则函数返回 FALSE。

诊断

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

*pfErrorCode 错误 说明
ODBC_ERROR_GENERAL_ERR 常规安装程序错误 发生错误,其中没有特定的安装程序错误。
ODBC_ERROR_COMPONENT_NOT_FOUND 在注册表中找不到组件 安装程序无法删除驱动程序信息,因为它在注册表中不存在,或者无法在注册表中找到。
ODBC_ERROR_INVALID_NAME 驱动程序或翻译器名称无效 lpszDriver 参数无效。
ODBC_ERROR_USAGE_UPDATE_FAILED 无法递增或递减组件使用情况计数 安装程序未能减少驱动程序的使用计数。
ODBC_ERROR_REQUEST_FAILED 申请失败。 fRemoveDSN 参数为 TRUE;但是,无法删除一个或多个 DSN。 使用 ODBC_REMOVE_DRIVER 请求调用 SQLConfigDriver 失败。
ODBC_ERROR_OUT_OF_MEM 内存不足 由于内存不足,安装程序无法执行函数。

注释

SQLRemoveDriver 补充 了 SQLInstallDriverEx 函数,并更新系统信息中的组件使用情况计数。 仅应从安装应用程序调用此函数。

SQLRemoveDriver 会将组件使用计数值递减 1。 如果组件使用情况计数为 0,则会发生以下情况:

  1. 将调用具有 ODBC_REMOVE_DRIVER 选项的 SQLConfigDriver 函数。 如果 fRemoveDSN 选项设置为 TRUE, 则 ConfigDSN 函数调用 SQLRemoveDSNFromIni 以删除与 lpszDriver 中指定的驱动程序关联的所有数据源。如果 fRemoveDSN 选项设置为 FALSE,则不会删除数据源。

  2. 系统将删除系统信息中的驱动程序条目。 驱动程序条目位于以下系统信息位置的驱动程序名称下:

    HKEY_LOCAL_MACHINE

    SOFTWARE

    ODBC

    Odbcinst.ini

SQLRemoveDriver 实际上不会删除任何文件。 调用程序负责删除文件和维护文件使用情况计数。 仅当组件使用情况计数和文件使用计数都达到零之后,文件才会以物理方式删除。 组件中的某些文件可以删除,而另一些文件则不被删除,具体取决于文件是否由其他应用程序使用,这些应用程序已递增了文件使用计数。

SQLRemoveDriver 也作为升级过程的一部分调用。 如果应用程序检测到它必须执行升级,并且之前已安装了驱动程序,则应删除驱动程序,然后重新安装驱动程序。 应首先调用 SQLRemoveDriver 来递减组件使用量计数,然后调用 SQLInstallDriverEx 来递增组件使用情况计数。 应用程序安装程序必须将旧文件替换为新文件。 文件使用情况计数将保持不变,而使用较旧版本文件的其他应用程序现在将使用较新版本。

有关以下方面的信息 请参阅
添加、修改或删除驱动程序 安装 DLL) 中的 ConfigDriver (
添加、修改或删除驱动程序 SQLConfigDriver
安装驱动程序 SQLInstallDriverEx