次の方法で共有


DIF_REMOVE

DIF_REMOVE要求は、Windows がデバイスを削除しようとしていることをインストーラーに通知し、インストーラーに削除の準備をする機会を与えます。

送信時

ユーザーがデバイス マネージャー内のデバイスを削除したとき。

処理するユーザー

クラス共同インストーラー

処理できる

デバイス共同インストーラー

処理できる

クラスインストーラー

処理できる

インストーラーによる入力

DeviceInfoSet
削除するデバイスを格納している デバイス情報セット への処理を提供します。

DeviceInfoData
デバイス情報セット内のデバイスの SP_DEVINFO_DATA 構造体へのポインターが提供されます。

デバイスインストールパラメーター
DeviceInfoData に関連付けられているデバイス インストール パラメーター (SP_DEVINSTALL_PARAMS) があります。

クラスインストールパラメーター
SP_REMOVEDEVICE_PARAMS 構造体は、DeviceInfoData関連付けられている可能性があります。

SP_DEVINSTALL_PARAMS で DI_CLASSINSTALLPARAMS フラグがクリアされている場合、要求のクラス インストール パラメーターはありません。 この場合、ハードウェア プロファイルは指定されておらず、デバイスはシステム全体から削除されます。

インストーラーによる出力

なし

インストーラーの戻り値

共同インストーラーは、NO_ERROR、ERROR_DI_POSTPROCESSING_REQUIRED、または Win32 エラー コードを返すことができます。

クラス インストーラーがこの要求を正常に処理し、その後 SetupDiCallClassInstaller が既定のハンドラーを呼び出す必要がある場合、クラス インストーラーは ERROR_DI_DO_DEFAULT を返します。

既定のハンドラーの直接呼び出しを含め、クラス インストーラーがこの要求を正常に処理した場合、クラス インストーラーは NO_ERROR を返す必要があり、その後 SetupDiCallClassInstaller は既定のハンドラーをもう一度呼び出しません。

注: クラス インストーラーは既定のハンドラーを直接呼び出すことができますが、クラス インストーラーは既定のハンドラーの操作を置き換えようとしないでください。

既定のハンドラーの呼び出しの詳細については、「既定の DIF コード ハンドラーの呼び出し」を参照してください。

クラス インストーラーでエラーが見つかった場合、インストーラーは適切な Win32 エラー コードを返す必要があり、SetupDiCallClassInstaller は既定のハンドラーを呼び出しません。

既定の DIF コードハンドラー

SetupDiRemoveDevice

インストーラー操作

DIF_REMOVE要求に応答して、インストーラーは通常、いくつかのクリーンアップ操作を実行します。 この場合、共同インストーラーは NO_ERROR を返し、クラス インストーラーは ERROR_DI_DO_DEFAULT を返します。

インストーラーがデバイスを削除すべきでないと判断した場合、インストーラーは Win32 エラー コードを返すことによって DIF 要求を失敗させます。 DI_QUIETINSTALL フラグがクリアされている場合、インストーラーは、デバイスが削除されていない理由を説明するメッセージをユーザーに表示する必要があります。

共同インストーラーは、SetupDiRemoveDevice を呼び出すことによりデバイス自体を削除しないでください。 共同インストーラーは通常、デバイスが正常に削除された後、後処理でこの要求を処理します。

たとえば、共同インストーラーがレジストリ内の情報を削除する必要がある場合、以前のインストーラーが後処理で削除要求に成功した場合にのみ削除する必要があります。 共同インストーラーは、その前処理パスで、レジストリ情報をコンテキスト パラメーターに登録し、後処理を要求するために ERROR_DI_POSTPROCESSING_REQUIRED を返す必要があります。 Windows がこの DIF 要求の後処理のために共同インストーラーを呼び出す場合、共同インストーラーは DIF の状態が NO_ERROR であることをチェックし、レジストリ情報を削除する必要があります。 共同インストーラーが前処理パス内のレジストリ情報を削除し、クラス インストーラー (または別の共同インストーラー) が DIF_REMOVE に失敗した場合、共同インストーラーはデバイスを予測できない状態にしておく可能性があります。

インストーラーは、ファイルが別のデバイスで使用されている場合に備えて、この DIF 要求を処理するときにファイルを削除しないでください。

Windows は、PnP クエリ削除および削除処理を開始する前に、この DIF 要求を送信します。

DIF コードの詳細については、「DIF コードの処理」を参照してください。

要件

バージョン

Microsoft Windows 2000 以降のバージョンの Windows でサポートされています。

ヘッダー

Setupapi.h (Setupapi.h を含む)

関連項目

SetupDiRemoveDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS

SP_REMOVEDEVICE_PARAMS