IRP_MN_QUERY_PNP_DEVICE_STATE
函数、筛选器和总线驱动程序可以处理此请求。
Value47
0x14
主要代码
发送时间
设备驱动程序从首次启动设备时发送 的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。
要求
标头 |
Wdm.h(包括 Wdm.h、Ntddk.h 或 Ntifs.h) |