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 でした。ただし、1 つ以上の 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 では、実際にはファイルは削除されません。 呼び出し元のプログラムは、ファイルを削除し、ファイルの使用数を維持する役割を担います。 コンポーネントの使用数とファイル使用量の両方が 0 に達した後にのみ、ファイルは物理的に削除されます。 コンポーネント内の一部のファイルは、ファイル使用量を増やした他のアプリケーションによってファイルが使用されているかどうかに応じて、削除でき、他のファイルは削除できません。

SQLRemoveDriver は、アップグレード プロセスの一部としても呼び出されます。 アプリケーションがアップグレードを実行する必要があることを検出し、以前にドライバーをインストールした場合は、ドライバーを削除してから再インストールする必要があります。 最初に SQLRemoveDriver を呼び出してコンポーネントの使用数を減らし、 次に SQLInstallDriverEx を 呼び出してコンポーネントの使用数を増やす必要があります。 アプリケーション セットアップ プログラムは、古いファイルを新しいファイルに置き換える必要があります。 ファイルの使用数は変わらず、古いバージョンのファイルを使用する他のアプリケーションでは新しいバージョンが使用されるようになります。

対象 解決方法については、
ドライバーの追加、変更、または削除 ConfigDriver (セットアップ DLL 内)
ドライバーの追加、変更、または削除 SQLConfigDriver
ドライバーのインストール SQLInstallDriverEx