PnP 管理器如何确定适当的函数 driver?

How does PnP manager determine the appropriate function driver?

我正在学习WindowsDriver的加载过程。
但是我看不懂下面文章的一部分。

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

本文中,有如下描述。

"4. PnP 管理器为设备加载适当的函数 driver 和任何可选过滤器 driver。"

我对以上描述有疑问。
PnP 管理器如何确定适当的功能driver?

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

当总线驱动程序检测并报告 PDO 设备 PnP 管理器发送几个 IRP_MJ_PNP to PDO device. including IRP_MN_QUERY_ID for get 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>) 加载并 AddDevice 调用这个 PDO。如果此值尚未设置 - 已通过系统中安装的 inf 文件进行搜索 - 以获得最佳匹配 HardwareIDCompatibleIDs。如果找到驱动程序 - 结果保存在 Service REG_SZ 值下,下次不搜索