IRP_MN_CANCEL_REMOVE_DEVICE

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

0x03

主要なコード

IRP_MJ_PNP

送信時

PnP マネージャーは、デバイスが取り外されないことをデバイスのドライバーに通知するために、この IRP を送信します。

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

入力パラメーター

なし

出力パラメーター

なし

I/O 状態ブロック

ドライバーは、この IRP に対して、Irp->IoStatus.Status を STATUS_SUCCESS に設定する必要があります。 ドライバーがこの IRP に失敗した場合、デバイスは不整合な状態のままになります。

操作

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

この IRP に応答して、ドライバーは、IRP_MN_QUERY_REMOVE_DEVICE 要求を受け取る前の状態にデバイスを戻します。

ドライバーがこの IRP を受け取ったときにデバイスが既に起動していた場合は、ドライバーは単に状態を成功に設定して、次のドライバーに IRP を渡します (または、ドライバーがバス ドライバーの場合は IRP を完了します)。 このような取り消し/取り出し IRP の場合では、ファンクションまたはフィルター ドライバーは、完了ルーチンを設定する必要はありません。 たとえば、ドライバーが前の IRP_MN_QUERY_REMOVE_DEVICE に失敗したために、デバイスが取り外し保留中の状態ではない場合があります。

PnP マネージャーは、IRP_MN_CANCEL_REMOVE_DEVICE 要求が完了した後、GUID_TARGET_DEVICE_REMOVE_CANCELLED を使用して、EventCategoryTargetDeviceChange 通知コールバックを呼び出します。 このようなコールバックは、IoRegisterPlugPlayNotification を呼び出すことによってデバイスに登録されます。 PnP マネージャーは、RegisterDeviceNotification を呼び出すことによって、デバイス上の通知に登録されたユーザー モード コンポーネントも呼び出します。

ファイル システムがデバイスにマウントされている場合は、取り外しクエリ通知に応答して行ったすべての操作を元に戻す必要があります。

取り外し IRP の処理の詳細と、すべてのプラグ アンド プレイのマイナー IRP を処理するための一般的な規則については、「プラグ アンド プレイ」を参照してください。

この IRP の送信

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

要件

ヘッダー

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

関連項目

IoRegisterPlugPlayNotification

IRP_MN_QUERY_REMOVE_DEVICE