驱动程序包选择过程概述
Windows 将 驱动程序包 表示为 驱动程序节点,其中包括对设备的所有软件支持,例如任何文件、服务和注册表项。 设备的服务包括函数驱动程序以及任何上级和较低级别的设备筛选器驱动程序。
某些设备需要供应商提供的驱动程序包,该包专为该设备设计,或者设计为支持一系列设备的驱动程序包。 但是,其他设备可由系统提供的驱动程序包驱动,该包支持一系列设备或给定 设备安装类的所有设备。 Windows 选择与设备最匹配的驱动程序包。 如果 Windows 找不到此类驱动程序包,它会从越来越通用的驱动程序包中进行选择。
Windows 如何搜索驱动程序包
Windows 在特定位置搜索与设备匹配的 驱动程序包 。 如果满足以下条件,则驱动程序包与设备匹配:
总线驱动程序为设备报告的 (ID) 或兼容 ID 的硬件标识符之一与驱动程序包 INF 文件的 INF 模型部分条目中的 hw-id 或 compatible-id 字符串匹配。
包含匹配项的 INF 模型部分的 TargetOSVersion 修饰适用于要安装设备的操作系统版本。
有关 TargetOSVersion 修饰的详细信息,请参阅 将平台扩展与操作系统版本组合。
有关 Windows 搜索匹配驱动程序的位置的详细信息,请参阅 Windows 在何处搜索驱动程序。
Windows 如何对驱动程序包进行排名
Windows 创建每个适用 驱动程序包 中所有匹配项的列表,并为每个匹配项分配一个排名。 如果驱动程序包的 INF 模型 部分 条目中有多个行与设备匹配,则单个驱动程序包可能包含设备的多个匹配项。 Windows 表示每个驱动程序包匹配的排名,其整数值大于或等于零。
有关排名过程的详细信息,请参阅 Windows 如何排名驱动程序包。
从 Windows Vista 开始,Windows 还会根据驱动程序包是否经过数字签名对驱动程序包进行排名。 Windows 根据数字签名对驱动程序包进行排名,如下所示:
如果禁用 AllSignersEqual 组策略,则 Windows 对使用 Microsoft 签名签名的驱动程序包进行排名高于使用 Authenticode 签名的驱动程序包。 即使使用 Authenticode 签名的驱动程序包在所有其他方面都与设备更匹配,也会发生此排名。
如果启用了 AllSignersEqual 组策略,则 Windows 对所有数字签名的驱动程序包进行平均排名。
注意
从 Windows 7 开始,默认情况下启用 AllSignersEqual 组策略。 在 Windows Vista 和 Windows Server 2008 中,默认情况下禁用 AllSignersEqual 组策略。 IT 部门可以通过启用或禁用 AllSignersEqual 组策略来替代默认排名行为。
来自 Windows 签名机构的签名包括以下内容:
高级 Windows 硬件质量实验室 (WHQL) 签名和标准 WHQL 签名
收件箱驱动程序包的签名
Windows 持续工程 (Windows SE) 签名
Windows 版本的 WHQL 签名,该签名与驱动程序包的设备安装类的 LowerLogoVersion 值相同或更高
Windows 如何选择驱动程序包
Windows 选择排名值最低的 驱动程序包 匹配项作为设备的最佳匹配项。
但是,如果有多个排名相等的驱动程序包匹配项最适合设备,Windows 将使用驱动程序包的日期和时间版本来选择驱动程序。 驱动程序的日期和版本由包含在驱动程序包的 INF 文件中的 INF DriverVer 指令指定。
Windows 使用以下条件为设备选择驱动程序包匹配项:
Windows 选择排名最低的驱动程序包匹配项作为设备的最佳匹配项。
对于排名相等的驱动程序包匹配项,Windows 会选择具有最新日期的驱动程序包。
对于排名和日期相等的驱动程序包,Windows 会选择版本最高的驱动程序包。
对于级别、日期和时间版本相等的驱动程序包,Windows 可以选择任何驱动程序包。
注意
尽管驱动程序包中的日期在排名中优先于版本,但建议在驱动程序包发生更改时同时更新版本和日期。 有关详细信息 ,请参阅 INF 文件的命名和版本控制最佳做法 。