PnP管理器如何确定适当的功能驱动程序?

时间:2019-03-08 08:51:36

标签: windows usb driver wdm

我正在研究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相对应。
(看到注册表中的某个地方?向总线驱动程序发送一些请求?等等。)

1 个答案:

答案 0 :(得分:0)

当总线驱动程序检测并报告 PDO 设备时,PnP管理器将多个IRP_MJ_PNP发送到 PDO 设备。包括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>)并用此<{ em> PDO 。如果尚未设置此值-是通过系统中已安装的inf文件搜索-以获得最佳匹配HardwareIDCompatibleIDs。如果找到驱动程序-结果保存在Service REG_SZ值下,下次不搜索