PnP经理如何确定合适的功能驱动程序?

问题描述 投票:0回答:1

我正在学习Windows驱动程序的加载过程。 但我无法理解以下文章的一部分。

https://docs.microsoft.com/ja-jp/windows-hardware/drivers/install/step-3--the-driver-for-the-device-is-installed

在本文中,有以下描述。

“4. PnP管理器为设备加载适当的功能驱动程序和任何可选的过滤器驱动程序。”

我对上面的描述有疑问。 PnP经理如何确定适当的功能驱动程序?

例如, 当USB存储器插入Windows PC时,PnP管理器将在加载与USB相关的驱动程序后加载disk.sys。 在这种情况下,我想知道为什么PnP管理器可以判断设备对应于disk.sys。 (看到注册表中的某个地方?向总线驱动程序发送一些请求?等等......)

windows usb driver wdm
1个回答
0
投票

当总线驱动程序检测并报告PDO设备时,PnP管理器向PDO设备发送几个IRP_MJ_PNP。包括IRP_MN_QUERY_ID获取Device Identification Strings

然后在表单中格式化注册表键路径

\REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Enum\<BusQueryDeviceID>\<BusQueryInstanceID>

设备为<BusQueryDeviceID>返回的BusQueryDeviceID字符串和<BusQueryInstanceID>设备返回的BusQueryInstanceID字符串(Parameters.QueryId.IdType

此键已打开或创建。然后查询BusQueryHardwareIDsBusQueryCompatibleIDs。此查询的结果保存在HardwareIDCompatibleIDs REG_MULTI_SZ值中。

然后PnP经理在这个密钥下查找Service REG_SZ值 - 如果它已经存在 - 加载驱动程序(\REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Services\<Service>)并且用这个PDO调用AddDevice。如果这个值尚未设置 - 是通过系统中已安装的inf文件进行搜索 - 最佳匹配HardwareIDCompatibleIDs。如果找到驱动程序 - 结果保存在Service REG_SZ值下,以备下次不搜索

© www.soinside.com 2019 - 2024. All rights reserved.