驱动程序包选择过程概述
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)签名
等于或高于驱动程序包设备设置类中 LowerLogoVersion 值的 Windows 版本的 WHQL 签名。
Windows 如何选择驱动程序包
Windows 选择排名值最低的驱动程序包与设备匹配,作为最佳匹配项。
但是,如果有多个排名相同并能很好匹配设备的驱动程序包,Windows 会使用驱动程序包的日期和版本来选择驱动程序。 驱动程序的日期和时间版本由 INF DriverVer 指令 指定,该指令包含在驱动程序包的 INF 文件中。
Windows 使用以下条件为设备选择驱动程序包匹配项:
Windows 选择排名值最低的驱动程序包与设备匹配,作为最佳匹配项。
对于排名相等的驱动程序包匹配项,Windows 选择具有最新日期的驱动程序包。
对于排名和日期相等的驱动程序包,Windows 选择具有最高版本的驱动程序包。
对于排名、日期和版本相等的驱动程序包,Windows 可以选择任何驱动程序包。
谨慎
尽管驱动程序包中的日期的优先级高于版本,但建议在驱动程序包发生更改时更新版本和日期。 有关详细信息,请参阅 用于命名和版本控制 INF 文件的最佳做法。