分享方式:


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 以遞增元件使用量計數。 應用程式安裝程式必須將舊檔案取代為新的檔案。 檔案使用計數會維持不變,而使用舊版檔案的其他應用程式現在會使用較新版本。

如需下列資訊 請參閱
新增、修改或移除驅動程式 ConfigDriver (在安裝 DLL 中)
新增、修改或移除驅動程式 SQLConfigDriver
安裝驅動程式 SQLInstallDriverEx