IRP_MN_QUERY_RESOURCE_REQUIREMENTS

PnP 管理器使用此 IRP 获取设备的资源要求列表。

总线驱动程序必须为需要硬件资源的子设备处理此请求。 总线筛选器驱动程序可以处理此请求。 函数和筛选器驱动程序不处理此 IRP。

0x0B

主要代码

IRP_MJ_PNP

发送时间

当枚举设备、将资源分配给设备之前,以及驱动程序报告其设备的资源要求已更改时,PnP 管理器会发送此 IRP。

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

输入参数

输出参数

在 I/O 状态块中返回。

I/O 状态块

处理此 IRP 的驱动程序将 Irp-IoStatus.Status> 设置为STATUS_SUCCESS或适当的错误状态。

成功后,驱动程序会将 Irp-IoStatus.Information> 设置为指向包含所请求信息的IO_RESOURCE_REQUIREMENTS_LIST的指针。 发生错误时,驱动程序将 Irp-IoStatus.Information> 设置为零。

Operation

如果总线驱动程序返回资源要求列表以响应此 IRP,则会从分页内存中分配 IO_RESOURCE_REQUIREMENTS_LIST 。 PnP 管理器在不再需要缓冲区时释放缓冲区。

如果设备不需要硬件资源,则设备的总线驱动程序无需修改 Irp-IoStatus.Status 或 Irp-IoStatus.Information>>,即可完成 IRP (IoCompleteRequest) 。

如果总线筛选器驱动程序处理此 IRP,它将修改总线驱动程序创建的资源要求列表。 总线筛选器驱动程序修改 IRP 备份设备堆栈时的列表。 总线筛选器驱动程序必须保留资源要求列表中的资源顺序,并且不得更改它不处理的资源标记。 如果总线筛选器驱动程序更改了资源要求列表的大小,则驱动程序必须分配分页内存中的新结构并释放以前的结构。 如果总线筛选器驱动程序将新资源要求添加到列表中,并且资源已分配给设备,则驱动程序必须筛选 出IRP_MN_START_DEVICE IRP 中的新资源,以便不会将其传递给总线驱动程序。

函数和非总线筛选器驱动程序不处理此 IRP;它们将其传递给下一个较低级别的驱动程序,且不更改 Irp-IoStatus>

有关处理即插即用次要 IRP 的一般规则,请参阅即插即用。

发送此 IRP

预留给系统使用。 驱动程序不得发送此 IRP。

要求

标头

Wdm.h(包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另请参阅

IO_RESOURCE_REQUIREMENTS_LIST