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,则会发生以下情况:
将调用具有 ODBC_REMOVE_DRIVER 选项的 SQLConfigDriver 函数。 如果 fRemoveDSN 选项设置为 TRUE, 则 ConfigDSN 函数调用 SQLRemoveDSNFromIni 以删除与 lpszDriver 中指定的驱动程序关联的所有数据源。如果 fRemoveDSN 选项设置为 FALSE,则不会删除数据源。
系统将删除系统信息中的驱动程序条目。 驱动程序条目位于以下系统信息位置的驱动程序名称下:
HKEY_LOCAL_MACHINE
SOFTWARE
ODBC
Odbcinst.ini
SQLRemoveDriver 实际上不会删除任何文件。 调用程序负责删除文件和维护文件使用情况计数。 仅当组件使用情况计数和文件使用计数都达到零之后,文件才会以物理方式删除。 组件中的某些文件可以删除,而另一些文件则不被删除,具体取决于文件是否由其他应用程序使用,这些应用程序已递增了文件使用计数。
SQLRemoveDriver 也作为升级过程的一部分调用。 如果应用程序检测到它必须执行升级,并且之前已安装了驱动程序,则应删除驱动程序,然后重新安装驱动程序。 应首先调用 SQLRemoveDriver 来递减组件使用量计数,然后调用 SQLInstallDriverEx 来递增组件使用情况计数。 应用程序安装程序必须将旧文件替换为新文件。 文件使用情况计数将保持不变,而使用较旧版本文件的其他应用程序现在将使用较新版本。
相关函数
有关以下方面的信息 | 请参阅 |
---|---|
添加、修改或删除驱动程序 | 安装 DLL) 中的 ConfigDriver ( |
添加、修改或删除驱动程序 | SQLConfigDriver |
安装驱动程序 | SQLInstallDriverEx |