IRP_MN_QUERY_RESOURCE_REQUIREMENTS
PnP 管理器使用此 IRP 获取设备的资源要求列表。
总线驱动程序必须为需要硬件资源的子设备处理此请求。 总线筛选器驱动程序可以处理此请求。 函数和筛选器驱动程序不处理此 IRP。
值
0x0B
主要代码
发送时间
当枚举设备、将资源分配给设备之前,以及驱动程序报告其设备的资源要求已更改时,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。
要求
标头 |
Wdm.h(包括 Wdm.h、Ntddk.h 或 Ntifs.h) |