IoReportRootDevice 函数 (ntddk.h)
IoReportRootDevice 例程向 PnP 管理器报告 PnP 总线驱动程序无法检测到的设备。 IoReportRootDevice 仅允许为每个驱动程序创建一个设备。
语法
NTSTATUS IoReportRootDevice(
[in] PDRIVER_OBJECT DriverObject
);
参数
[in] DriverObject
指向检测到设备的驱动程序的驱动程序对象的指针。
返回值
IoReportRootDevice 在成功时返回STATUS_SUCCESS,或在失败时返回相应的错误代码。
注解
PnP 总线驱动程序无法检测到的设备的驱动程序使用 IoReportRootDevice 向系统报告其设备。 应报告可由 PnP 总线驱动程序检测到的设备,以响应 IRP_MN_QUERY_DEVICE_RELATIONS 请求。
驱动程序通常从其 DriverEntry 例程调用此例程。
IoReportRootDevice 将设备标记为根枚举设备,并且此标识在系统启动之间是永久性的。 PnP 管理器“检测”根枚举列表中的设备,并将其配置为 PnP 设备:PnP 管理器查询设备信息、标识适当的驱动程序并调用其 AddDevice 例程,并发送所有相应的 PnP IRP。
系统为设备生成一个硬件 ID 字符串,其格式为 ROOT\Driver ,其中 Driver 是驱动程序的服务名称。 驱动程序可以通过处理 IRP_MN_QUERY_ID 请求来提供其他硬件 ID 或兼容的 ID。
驱动程序编写器必须提供与任何指定硬件 ID 或兼容 ID 匹配的 INF 文件。 INF 文件应指定调用 IoReportRootDevice 的原始驱动程序作为要为这些 ID 加载的驱动程序。 系统使用此信息重新生成设备的驱动程序堆栈,例如重启时。 IoReportRootDevice 的调用方必须在系统线程上下文中的 IRQL = PASSIVE_LEVEL 运行。
驱动程序应使用 IoReportDetectedDevice 报告使用资源但无法由 PnP 总线驱动程序而不是 IoReportRootDevice 检测到的硬件设备。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 8 及更高版本的 Windows。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (请参阅备注部分) |