IRP_MN_REMOVE_DEVICE

すべての PnP ドライバーは、この IRP を処理する必要があります。

0x02

主要なコード

IRP_MJ_PNP

送信時

PnP マネージャーは、デバイスのソフトウェア表現 (デバイス オブジェクトなど) を削除するようドライバーに指示するために、この IRP を使用します。 PnP マネージャーは、デバイスが順序正しく削除された場合 (たとえば、ユーザーによるプラグの取り外しや、ハードウェア プログラムの取り出し)、不意に削除された場合 (ユーザーが事前の警告なしにスロットからデバイスを抜いた場合)、またはユーザーがドライバーの更新を要求したときに、この IRP を送信します。

Windows 2000 以降のシステムでは、デバイス スタックのドライバーの 1 つがデバイスの IRP_MN_START_DEVICE 要求に失敗した場合も、PnP マネージャーはこの IRP を送信します。

デバイスを順序正しく削除する場合、PnP マネージャーは削除 IRP の前に IRP_MN_QUERY_REMOVE_DEVICE を送信します。 この場合、削除 IRP を受信すると、デバイスは削除保留中の状態になります。 Microsoft Windows 2000 以降でデバイスを突然削除する場合、PnP マネージャーは削除 IRP の前に IRP_MN_SURPRISE_REMOVAL を送信します。 この場合、削除 IRP が到着すると、デバイスは不意の削除状態になります。 ドライバーは、デバイスが起動する前に削除 IRP を受け取ることもできます。 この場合、IRP が到着すると、デバイスは非起動状態になります。

PnP マネージャーは、システム スレッドのコンテキストの IRQL PASSIVE_LEVEL でこの IRP を送信します。

入力パラメーター

なし

出力パラメーター

なし

I/O 状態ブロック

ドライバーは、Irp->IoStatus.Status を STATUS_SUCCESS に設定する必要があります。 ドライバーは、この IRP に失敗してはなりません。

操作

この IRP は、最初にデバイス スタックの最上位にあるドライバーによって処理され、次にスタック内の各下位ドライバーによって処理されます。

この IRP に応答して、ドライバーは、デバイスの電源を切る、デバイスのソフトウェア表現 (デバイス オブジェクトなど) を削除する、デバイスのリソースを解放するなどのタスクを実行します。

この IRP の処理の詳細については、「IRP_MN_REMOVE_DEVICE 要求の処理」を参照してください。 デバイスの削除のサポートに関する一般的な情報については、「デバイスの削除」を参照してください。

この IRP の送信

システムで使用するために予約されています。 ドライバーは、この IRP を送信することはできません。

バス ドライバーは、その子デバイス (子 PDO) の 1 つ (または複数) がコンピューターから物理的に取り外されことを検出した場合、IoInvalidateDeviceRelations を呼び出して、PnP マネージャーに変更を報告します。 その後、PnP マネージャーは、削除されたすべてのデバイスに対して取削除 IRPを送信します。

要件

ヘッダー

Wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)

関連項目

IoInvalidateDeviceRelations

IoRegisterPlugPlayNotification

IRP_MN_CANCEL_REMOVE_DEVICE

IRP_MN_QUERY_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL