DCH 设计原则和最佳做法

本文介绍符合 DCH 的驱动程序包的设计原则和最佳做法。 DCH 代表声明性 (D)、组件化 (C) 和硬件支持应用 (H)。

DCH 设计原则

对于符合 DCH 的驱动程序包,需要考虑三种设计原则:

  • 声明性:仅使用声明性 INF 指令安装驱动程序包。 不要包括 coinstallers 或 RegisterDll 函数。

  • 组件化:版本特定、OEM 特定以及可选自定义的驱动程序包与基本驱动程序包分离。 因此,仅提供核心设备功能的基本驱动程序包可以独立于自定义项进行定位、测试和维护。

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

若要查看驱动程序示例如何应用 DCH 设计原则,请参阅 符合 DCH 的驱动程序包示例

DCH 概述

符合 DCH 的驱动程序包包含一个 INF 文件和二进制文件,用于在 基于 UWP 的 Windows 版本上安装和运行。 它们还会在共享一组常见接口的其他版本的 Windows 10 和 11 上安装和运行。

符合 DCH 的驱动程序二进制文件可以使用 Kernel-Mode 驱动程序框架(KMDF),User-Mode 驱动程序框架 2(UMDF)或 Windows 驱动程序模型(WDM)。

符合 DCH 的驱动程序包包含以下部分:

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

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

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

IHV 认证基本驱动程序包后,可以在所有 OEM 系统上部署它。 由于基础驱动程序包可以跨共享硬件部件的所有系统使用,因此Microsoft可以广泛测试基本驱动程序包。 Microsoft 可以使用 Windows 预览体验计划测试,而不是将分发限制在特定计算机上。

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

DCH 要求

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

  1. 为驱动程序包创建 INF 文件:

    1. 查看 在通用驱动程序包中有效的 INF 节和指令的列表

    2. 使用 InfVerif 工具验证驱动程序包的 INF 文件是否遵循声明性 (D) 要求。 包应通过 infverif /k 命令的检查。

  2. 确保不包含核心驱动程序功能的任何可选组件包都与基本驱动程序包分开。

  3. 与驱动程序包关联的硬件支持应用必须通过 Microsoft 应用商店分发。

DCH 最佳做法

针对 DCH 符合性进行开发时,请遵循以下最佳做法:

  • 如果将 Windows 驱动程序工具包(WDK)与最新版本的 Visual Studio 配合使用,请将驱动程序项目属性中的 目标平台 值设置为 Universal。 此设置会自动添加正确的库,并在生成过程中运行正确的 INF 验证和 ApiValidator。 要完成本任务,请按照以下步骤操作:

    1. 打开驱动程序项目属性。
    2. 选择 “驱动程序设置”。
    3. 使用下拉菜单将 目标平台 值设置为 Universal
  • 如果您的 INF 文件执行依赖于目标平台的任何自定义设置步骤,请考虑将这些步骤分离为扩展 INF 文件。 可以独立于基本驱动程序包更新扩展 INF,使其更可靠且更易于服务。 有关详细信息,请参阅 使用扩展 INF 文件

  • 如果您希望提供与您的设备兼容的应用程序,请确保集成 HSA。 有关详细信息,请参阅 HSA:驱动程序开发人员的步骤。 OEM 可以使用 部署映像服务和管理(DISM)预加载 HSA 应用,或者用户可以从 Microsoft 应用商店手动下载该应用。