在合作伙伴中心使用扩展 INF 文件

可以在 Windows 硬件开发人员中心为扩展 INF 文件创建发货标签,以便能够像其他提交一样对其进行共享和发布。 本文介绍打包、提交和发布这些程序包的过程。 有关如何创建和安装扩展 INF 的详细信息,请参阅使用扩展 INF 文件

将扩展 INF 发布到 Windows 更新的要求

如果要将扩展 INF 发布到 Windows 更新,必须选中发货标签上的自动驱动程序推广复选框。 之所以不能将扩展 INF 作为可选项进行发布,是因为它们未列在设备管理器中,因此最终用户无法启动“更新驱动程序”操作。 要查看这些复选框,必须先注册驱动程序外部测试

注意

要让 Windows 更新提供扩展 INF,所有系统都必须至少运行 RS3 2018 年 1 月 3 日 - KB4056892 (10.0.16299.192)。

提交和发布扩展 INF

此部分介绍如何提交和发布 INF 包。 有关常见错误和常见问题解答的信息,请参阅突出显示的项和常见问题解答。

重要

Microsoft 建议始终为每个扩展 INF 创建一个单独的提交,以及一个仅包含基准驱动程序提交的单独提交。 在单个提交中发布基准驱动程序和扩展 INF 会导致以下问题:

  • 合作伙伴中心会将所有发货标签归类并评估为“扩展驱动程序”。 要查找属于“扩展”的项,请在开发人员中心搜索框中输入 @IsExtensionDriver:"True"
  • 发布到 Windows 更新后,用户可能会被迫多次下载驱动程序包:安装基本驱动程序后,针对 PnP 检测到的每个适用扩展再次下载一次。

创建提交程序包

基准驱动程序包

  1. 正常使用基本驱动程序和扩展 INF 开始硬件实验室工具包 (HLK) 测试运行。 HLK 结果会被用于所有程序包创建步骤。

    显示 HLK 测试运行的文件输出的图像。

  2. 从“Drivers”文件夹中删除扩展 INF 模板项,并且只将基准驱动程序文件添加回 HLK 程序包中。

    显示基础驱动程序文件的图像。

  3. 创建此 HLKx 包并为其签名以制作基准驱动程序包。

    注意

    基准驱动程序包必须始终与现有扩展后向兼容。

扩展 INF 包

  1. 使用基本驱动程序包 HLK 测试运行的相同 HLK 结果,选择程序包>替换驱动程序

    显示 HLK 中的“替换驱动程序”选项的图像。

  2. 将扩展 INF 添加到具有任何引用的二进制文件的驱动程序文件夹。 如果有多个扩展 INF,则只能添加一个文件。

  3. 创建此新 HLK 程序包并为其签名。 此程序包是扩展 INF 程序包。

  4. 对每个扩展 INF 重复此过程,每次都删除驱动程序文件夹内容。

将程序包提交到合作伙伴中心

为创建的每个程序包创建一个新的提交,并将其上传到硬件开发人员中心。 以后,为需要共享或发布的项创建发货标签。 有关详细信息,请参阅创建新硬件提交使用发货标签管理驱动程序分发

ExtensionID

ExtensionID 是你生成的用于驱动程序世系标识和版本控制的 GUID。 它描述硬件设备部件或部件系列,并且会向已提交它的 SellerID 自动注册。 此 SellerID 的所有者负责跟踪 ExtensionID 的使用和映射,类似于 CHID 管理。

例如,为新系统部件创建 ExtensionID 时:

  • ExtensionID 所有权将被分配给 SellerID。
  • 组织中使用部件或部件系列的每个系统项目都会共享相同的 ExtensionID。
  • ExtensionID 在部件的生命周期中保持不变。

注意

  • 如果你使用与 SellerID 不相关的 ExtensionID,则合作伙伴中心将拒绝你的提交,并通知你该 ExtensionID 已属于另一个组织:
  • 对于给定的设备,会针对每个唯一的 ExtensionID 值只安装一个扩展 INF。 因此,如果设备具有多个扩展 INF,则每一项都将需要一个新的 ExtensionID。 这也意味着,如果两个扩展 INF 面向具有不同 ExtensionID 的相同设备,那么将应用这两个扩展 INF。 有关详细信息,请参阅使用扩展 INF 文件

如果你的组织管理另一个组织的项目和提交,请注意以下各项:

  • ExtensionID 所有权已分配给完成提交的 SellerID。
  • 通过使用其他组织的 SellerID,你可以使用其 ExtensionID。
  • 要使用组织的 SellerID,需要针对部件或部件系列创建自己的 ExtensionID。

为扩展 INF 的初始版本(即首次自定义和提交扩展 INF)生成新的扩展ID,包括在首次收到新设备的新共享发货标签时。 Visual Studio 在“工具”>“创建 GUID”中包含一个 GUID 创建实用程序,但是如果任何联机 GUID 生成工具与以下注册表格式匹配,那么该工具应该可以使用。

显示在 Visual Studio 中创建 GUID 屏幕的图像。

要更新已持续发布的扩展 INF,请保持 ExtensionID 不变并递增 DriverVer 指令所指定的版本和/或日期。 系统会(按该顺序)使用驱动程序日期和驱动程序版本,以便区分具有相同 ExtensionID 的多个扩展 INF。

发布扩展 INF

要发布扩展 INF 提交,请按照将驱动程序发布到 Windows 更新中的步骤进行操作。 请确保选择两个自动驱动程序推广选项,并且扩展 INF 具有特定目标。

显示自动驱动程序推广的图像。

如果未看到这些驱动程序推广选项,则可能需要注册驱动程序外部测试

所有扩展 INF 在完成驱动程序外部测试过程以后才能通过 Windows 更新进行分发。 外部测试成功后,将向零售系统提供文件。 如果加入 Windows 预览体验成员计划,则可在此阶段更快地访问驱动程序。

扩展 INF 定向和排名差异

由于扩展是针对特定设备的自定义项,因此必须始终具有针对性。 在使用扩展 INF 定向时,请遵循以下准则:

  • 如果可能,扩展 INF 文件必须具有由四部分组成的硬件 ID (HWID)。
  • 除了由四个部分组成的 HWID 外,CHID 还可以被添加到分机 INF 的发货标签中。
  • 对于没有由四个部分组成的 HWID 的部件和部件系列,必须在发货标签上标明 CHID。

此定向信息对于通过 Windows 更新 (WU) 进行分发期间准确评估扩展 INF 至关重要。 在以下两个阶段中,WU 会评估驱动程序:

  1. 适用性阶段(此时 WU 会生成一个适用于给定系统的驱动程序列表)。
  2. 排名阶段(在此阶段,Windows PnP 和 WU 会确定要安装列表中的哪个驱动程序)。

一般来说,关于扩展 INF 的排序和定向有几个主要原则:

  • 扩展 INF 的 ExtensionID 不用于适用性 - 仅用于世系和版本标识。

  • WU 会为每个适用的扩展 ID 提供(并通过 PnP 安装)排名最高的扩展驱动程序。

  • 扩展驱动程序按日期和版本排序,而日期和版本包含在 DriverVer 指令中。 WU 和 PnP 都使用此项。 有关详细信息,请参阅 INF 版本部分INF DriverVer 指令

  • PnP 和 WU 在扩展驱动程序方面不考虑特征或标识符分数(即两部分与四部分)。

  • 在 WU 上对扩展驱动程序排名时不使用 CHID 信息(即,不能“阻止”具有 CHID 定向的其他扩展驱动程序)。

  • 有关 Windows 操作系统中的驱动程序选择和定向的信息,请参阅 Using an Extension INF file(使用扩展 INF 文件)

常见问题解答

驱动程序开发

我们每次更新基准驱动程序时是否都需要更改 ExtensionID?

不,更新基准驱动程序时,应该保持相同的扩展 ID。 ExtensionID 用于版本比较和驱动程序世系标识。 它不应在驱动程序世系中发生变化。

制造

我们是否可以为制造目的将 IHV 提供的扩展 INF 与其 ExtensionID 配合使用?

否。 如果你计划对扩展的服务方面负责,则必须在制造期间使用自己的扩展 INF 和 ExtensionID。

驱动程序更新

每次更新和发布基准驱动程序包时,我们是否需要将更新的扩展 INF 发布到 Windows 更新?

不,一定不要这么做。 基准驱动程序包必须始终与现有扩展后向兼容。

向最终用户的系统发布并应用更新的基准驱动程序时会发生什么情况?

应用基准驱动程序更新时,如有必要,可评估和应用当前安装的扩展 INF。 如果没有安装扩展 INF,则 Windows 更新会下载最新的适用版本。

当我们将操作系统更新到最新版本时,是否需要发布更新的扩展 INF 或 ExtensionID?

不需要,现有的 ExtensionID 和扩展 INF 会继续工作。

如果两个系统的自定义项相同,那么这两个系统是否可以共享相同的扩展 INF?

是的。 如果多个系统使用相同的设置,或者如果你想要在更广泛的一组设备中自定义设置,则一个扩展 INF 就已足够。 将适用的四部分硬件 ID 添加到扩展 INF 中。 有关详细信息,请参阅使用扩展 INF 文件

硬件开发人员中心

Windows 驱动程序