我正在学习Windows Driver的加载过程。但我无法理解以下文章的一部分。
HTTPS://docs.microsoft.com/ja-jp/windows-hardware/drivers/install/step-3–the-driver-for -…
当公交车司机检测并报告时 PDO 设备PnP管理器发送几个 IRP_MJ_PNP 至 PDO 设备。包含 IRP_MN_QUERY_ID 为了得到 设备识别字符串
IRP_MJ_PNP
IRP_MN_QUERY_ID
然后在表单中格式化注册表键路径
\REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Enum\<BusQueryDeviceID>\<BusQueryInstanceID>
到位 <BusQueryDeviceID> 设备返回的字符串 BusQueryDeviceID 并到位 <BusQueryInstanceID> 设备返回的字符串 BusQueryInstanceID ( Parameters.QueryId.IdType )
<BusQueryDeviceID>
BusQueryDeviceID
<BusQueryInstanceID>
BusQueryInstanceID
Parameters.QueryId.IdType
此键已打开或创建。然后是查询 BusQueryHardwareIDs 和 BusQueryCompatibleIDs 。保存此查询的结果 HardwareID 和 CompatibleIDs REG_MULTI_SZ 值。
BusQueryHardwareIDs
BusQueryCompatibleIDs
HardwareID
CompatibleIDs
REG_MULTI_SZ
然后PnP经理寻找 Service REG_SZ 此键下的值 - 如果已经存在 - 驱动程序( \REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Services\<Service> )加载它 AddDevice 跟这个打电话 PDO 。如果此值尚未设置 - 是通过系统中已安装的inf文件进行搜索 - 以获得最佳匹配 HardwareID 和 CompatibleIDs 。如果找到驱动程序 - 结果保存在 Service REG_SZ 值,因为下次不搜索
Service
REG_SZ
\REGISTRY\MACHINE\SYSTEM\CurrentControlSet\Services\<Service>
AddDevice