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 コード ハンドラー
インストーラー操作
DIF_REMOVE要求に応答して、インストーラーは通常、いくつかのクリーンアップ操作を実行します。 この場合、共同インストーラーはNO_ERRORを返し、クラス インストーラーはERROR_DI_DO_DEFAULTを返します。
インストーラーがデバイスを削除すべきでないと判断した場合、インストーラーは Win32 エラー コードを返して DIF 要求を失敗させます。 DI_QUIETINSTALL フラグがクリアされている場合、インストーラーは、デバイスが削除されていない理由を説明するメッセージをユーザーに表示する必要があります。
共同インストーラーは、 SetupDiRemoveDevice を呼び出してデバイス自体を削除しないでください。 共同インストーラーは通常、デバイスが正常に削除された後、後処理でこの要求を処理します。
たとえば、共同インストーラーがレジストリ内の情報を削除する必要がある場合、共同インストーラーは後処理で削除要求に成功した場合にのみ削除する必要があります。 共同インストーラーは、その前処理パスで、レジストリ情報をコンテキスト パラメーターに格納し、後処理を要求するためにERROR_DI_POSTPROCESSING_REQUIREDを返す必要があります。 この DIF 要求の後処理のために共同インストーラーを呼び出Windows場合、共同インストーラーは DIF の状態がNO_ERRORされていることを確認してから、レジストリ情報を削除する必要があります。 共同インストーラーが前処理パス内のレジストリ情報を削除し、クラス インストーラー (または別の共同インストーラー) がDIF_REMOVEに失敗した場合、共同インストーラーによってデバイスが予測できない状態のままになる可能性があります。
インストーラーは、ファイルが別のデバイスで使用されている場合に備えて、この DIF 要求を処理するときにファイルを削除しないでください。
Windowsは、PnP クエリ削除および削除処理を開始する前に、この DIF 要求を送信します。
DIF コードの詳細については、「DIF コードの 処理」を参照してください。
Requirements
Version |
Microsoft Windows 2000 以降のバージョンのWindowsでサポートされています。 |
ヘッダー |
Setupapi.h (Setupapi.h を含む) |