DCH 设计原则和最佳做法

本页介绍符合 DCH 的驱动程序包的设计原则和最佳做法。

DCH 设计原则

要使驱动程序包符合 DCH,需要考虑三个设计原则:

  • 声明性 (D) :仅使用声明性 INF 指令安装驱动程序包。 请勿包括共同安装程序或 RegisterDll 函数。

  • 组件化 (C) :特定于版本的驱动程序包、特定于 OEM 的自定义项和可选的自定义项独立于基本驱动程序包。 因此,基础驱动程序包(仅提供核心设备功能)可以独立于自定义项进行目标定位、外部测试和服务。

  • 硬件支持应用 (H) :与驱动程序包关联的任何用户界面 (UI) 组件都必须打包为硬件支持应用 (HSA) 或预装在 OEM 设备上。 HSA 是与驱动程序包配对的可选设备特定应用。 此类应用可以是通用 Windows 平台 (UWP),也可以是桌面桥应用。 必须通过 Microsoft Store 分发和更新 HSA。 有关详细信息,请参阅硬件支持应用 (HSA):适用于驱动程序开发人员的步骤硬件支持应用 (HSA):适用于应用开发人员的步骤

首字母缩略词“DCH”指的是上面列出的原则。 请参阅符合 DCH 的驱动程序包示例页,以了解驱动程序示例如何应用 DCH 设计原则。

概述

符合 DCH 的驱动程序包中有 INF 文件,以及在基于通用 Windows 平台 (UWP) 的 Windows 版本上安装和运行的二进制文件。 它们还在共用一组公用接口的其他 Windows 10 和 Windows 11 版本上安装和运行。

符合 DCH 的驱动程序二进制文件可使用 KMDFUMDF 2 或 Windows 驱动程序模型 (WDM)。

符合 DCH 的驱动程序包由以下部分组成:

  • 基本驱动程序包
  • 可选组件包
  • 可选硬件支持应用

基本驱动程序包包含所有核心功能和共享代码。 可选组件包可以包含自定义项和其他设置。

通常,设备制造商或独立硬件供应商 (IHV) 写入基本驱动程序包。 然后,系统构建者或原始设备制造商 (OEM) 将提供任何可选组件包。

在获得 IHV 认证后,基础驱动程序包就可以部署在所有 OEM 系统上。 由于可以在共享硬件部件的所有系统中使用基准驱动程序包,因此 Microsoft 可以通过 Windows 预览体验成员外部测试广泛地测试基准驱动程序包,而不是将分发局限于特定计算机。

OEM 仅验证它为 OEM 系统提供的可选自定义项。

要求

若要创建遵循 DCH 设计原则的驱动程序包,请按照以下步骤操作:

  • 为驱动程序包创建 INF 文件:
    1. 查看 通用驱动程序包中有效的 INF 部分和指令的列表
    2. 使用 InfVerif 工具验证驱动程序包的 INF 文件是否遵循声明性 (D) 要求。 它应该通过 infverif /k
  • 确保所有不包含核心驱动程序功能的可选组件包都与基础驱动程序包分离。
  • 与驱动程序包关联的硬件支持应用必须通过 Microsoft Store 分发。

最佳实践

  • 如果结合使用 Windows 驱动程序工具包 (WDK) 与最新的 Visual Studio,请将驱动程序项目属性中的“目标平台”值设置为 Universal。 这会自动添加正确的库,并且它会在生成过程中运行正确的 INF 验证和 APiValidator。 若要实现此目的,请执行以下操作:

    1. 打开驱动程序项目属性。
    2. 选择“驱动程序设置”。
    3. 使用下拉菜单将“目标平台”设置为
  • 如果 INF 执行依赖于目标平台的任何自定义设置操作,请考虑将其分离形成一个扩展 INF。 可以独立于基础驱动程序包更新扩展 INF,以提高稳健性和可用性。 有关详细信息,请参阅使用扩展 INF 文件

  • 如果要提供适用于设备的应用程序,请包含硬件支持应用。 有关详细信息,请参阅硬件支持应用 (HSA):适用于驱动程序开发人员的步骤。 OEM 可以使用 DISM - 部署映像服务和管理预加载此类应用。 或者,用户可以从 Microsoft Store 手动下载此应用。