IRP_MN_QUERY_PNP_DEVICE_STATE

ファンクション ドライバー、フィルター ドライバー、バス ドライバーが、この要求を処理できます。

Value47

0x14

主要なコード

IRP_MJ_PNP

送信時

PnP マネージャーは、デバイスのドライバーが最初に起動されたときに送信された IRP_MN_START_DEVICE 要求から成功を返した後に、この IRP を送信します。 この IRP は、リソースの再調整のための停止後の起動時には送信されません。 PnP マネージャーは、デバイスのドライバーが IoInvalidateDeviceState を呼び出すときにも、この IRP を送信します。

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

入力パラメーター

なし

出力パラメーター

I/O 状態ブロックで返されます。

I/O 状態ブロック

ドライバーは、Irp->IoStatus.Status を STATUS_SUCCESS に設定するか、STATUS_UNSUCCESSFUL などの適切なエラー状態に設定します。

成功した場合、ドライバーは Irp->IoStatus.InformationPNP_DEVICE_STATE ビットマスクに設定します。

ファンクションまたはフィルター ドライバーは、この IRP を処理しない場合、IoSkipCurrentIrpStackLocation を呼び出し、IoCompletion ルーチンを設定せずに、IRP を次の下位ドライバーに渡します。 このようなドライバーは Irp->IoStatus を変更することも、IRP を完了することもしてはなりません。

バス ドライバーは、この IRP を処理しない場合、Irp->IoStatus.Status をそのままにして、IRP を完了します。

操作

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

ドライバーは、デバイスの PnP 状態に関する情報を持っている場合、この IRP を処理します。 ドライバーは、PNP_DEVICE_STATE ビットマスクのフラグを設定または解除することができます。 別のドライバーが Irp->IoStatus.Information に PNP_DEVICE_STATE を設定している場合、ドライバーは、構造体全体を上書きするのではなく、そのビットマスク内のフラグを変更するように注意する必要があります。

プラグ アンド プレイのマイナー IRP の処理に関する一般的な規則については、「プラグ アンド プレイ」を参照してください。

この IRP の送信

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

要件

ヘッダー

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

関連項目

IoInvalidateDeviceState

PNP_DEVICE_STATE