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