IRP_MN_QUERY_PNP_DEVICE_STATE

函数、筛选器和总线驱动程序可以处理此请求。

Value47

0x14

主要代码

IRP_MJ_PNP

发送时间

设备驱动程序从首次启动设备时发送 的IRP_MN_START_DEVICE 请求成功返回后,PnP 管理器会发送此 IRP。 停止资源重新均衡后,不会在启动时发送此 IRP。 当设备的驱动程序调用 IoInvalidateDeviceState 时,PnP 管理器也会发送此 IRP。

PnP 管理器在任意线程的上下文中PASSIVE_LEVEL IRQL 发送此 IRP。

输入参数

输出参数

在 I/O 状态块中返回。

I/O 状态块

驱动程序将 Irp-IoStatus.Status> 设置为STATUS_SUCCESS或适当的错误状态,例如STATUS_UNSUCCESSFUL。

成功后,驱动程序会将 Irp-IoStatus.Information> 设置为PNP_DEVICE_STATE位掩码。

如果函数或筛选器驱动程序不处理此 IRP,它将调用 IoSkipCurrentIrpStackLocation,不设置 IoCompletion 例程,并将 IRP 向下传递到下一个驱动程序。 此类驱动程序不得修改 Irp-IoStatus>,也不得完成 IRP。

如果总线驱动程序不处理此 IRP,它将保持 Irp-IoStatus.Status> 原样并完成 IRP。

Operation

此 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