IRP_MN_STOP_DEVICE

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

0x04

主要なコード

IRP_MJ_PNP

送信時

PnP マネージャーは、デバイスのハードウェア リソースを再構成できるように、デバイスを停止するために、この IRP を送信します。

Windows 2000 以降のシステムでは、PnP マネージャーは、前の IRP_MN_QUERY_STOP_DEVICE が正常に完了した場合にのみ、この IRP を送信します。

Windows 98/Me では、PnP マネージャーは、デバイスが無効になっているとき、およびデバイス スタックが IRP_MN_START_DEVICE 要求に失敗したときにも、この IRP を送信します。 開始に失敗した場合では、PnP マネージャーは、前の IRP_MN_QUERY_STOP_DEVICE 要求なしでこの IRP を送信します。

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

入力パラメーター

なし

出力パラメーター

なし

I/O 状態ブロック

ドライバーは、Irp->IoStatus.Status を STATUS_SUCCESS に設定する必要があります。

操作

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

この IRP に応答して、Windows 2000 以降のドライバーは、デバイスを停止して、I/O ポートや割り込みなど、デバイスで使用されているハードウェア リソースを解放します。

Windows 2000 以降では、停止 IRP は、デバイスのハードウェア リソースを解放して再構成できるようにする目的でのみ使用されます。 リソースが再構成されると、デバイスは再起動されます。 停止 IRP は、取り外し IRP の前処理となるものではありません。 PnP IRP がデバイスに送信される順序の詳細については、「プラグ アンド プレイ」を参照してください。

Windows 98/Me では、停止 IRP は、起動の失敗後、およびデバイスが無効になっている場合にも使用されます。 これらのオペレーティング システムで実行される WDM ドライバーは、デバイスを停止し、受信するすべての I/O を失敗させ、ユーザー モード インターフェイスを無効にして登録解除する必要があります。

ドライバーは、この IRP に失敗してはなりません。 ドライバーは、デバイスのハードウェア リソースを解放できない場合、直前のクエリ停止 IRP に失敗する必要があります。

停止 IRP の処理の詳細については、「デバイスの停止」を参照してください。

この IRP の送信

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

要件

ヘッダー

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

関連項目

IRP_MN_QUERY_STOP_DEVICE

IRP_MN_START_DEVICE

IoSetDeviceInterfaceState

IoRegisterDeviceInterface