IRP_MN_REMOVE_DEVICE
すべての PnP ドライバーは、この IRP を処理する必要があります。
値
0x02
主要なコード
送信時
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 を含む) |