DCH 設計原則とベスト プラクティス

このページでは、DCH準拠のドライバー パッケージの設計原則とベスト プラクティスについて説明します。

DCH 設計原則

ドライバパッケージをDCH準拠にするには、3つの設計原則を考慮する必要があります:

  • 宣言型(D): 宣言的なINFディレクティブのみを使用して、ドライバーパッケージをインストールします。 共同インストーラーや RegisterDll 関数を含めないでください。

  • コンポーネント化(C): エディション固有のドライバーパッケージ、OEM固有のカスタマイズ、およびオプションのカスタマイズは、ベース ドライバーパッケージとは別のものです。 その結果、コアデバイスの機能のみを提供するベースドライバパッケージは、カスタマイズとは独立してターゲット設定、飛行、およびサービスを実行できます。

  • ハードウェアサポートアプリ(H): ドライバー パッケージに関連付けられたユーザーインターフェイス (UI) コンポーネントは、ハードウェア サポート アプリ (HSA) としてパッケージ化するか、OEMデバイスにプレインストールする必要があります。 HSAは、ドライバーパッケージとペアになっているオプションのデバイス固有のアプリです。 このアプリケーションは、場合によって、ユニバーサル Windows プラットフォーム (UWP) またはデスクトップ ブリッジ アプリとなります。 Microsoft Store を通じて HSA を配布および更新する必要があります。 詳細については、ハードウェアサポートアプリを参照(HSA): ドライバー開発者向け手順およびハードウェアサポートアプリ(HSA): アプリ開発者の手順

"DCH" という頭字語は上記の原則を示しています。 ドライバーのサンプルで DCH 設計原則を適用する方法を確認するには、「DCH 準拠のドライバー パッケージの例」ページを参照してください。

概要

DCH 準拠のドライバー パッケージには、Windows のユニバーサル Windows プラットフォーム (UWP) ベース エディションにインストールされて動作する INF ファイルとバイナリが含まれています。 これらは、共通のインターフェイス セットを共有する Windows 10 および 11 の他のエディションにもインストールされ、実行されます。

DCH 準拠のドライバー バイナリは、KMDFUMDF 2、または Windows Driver Model (WDM) を使うことができます。

DCH準拠のドライバーパッケージは次の部分で構成されます。

  • 基本ドライバーパッケージ
  • オプションのコンポーネント パッケージ
  • オプションのハードウェア サポート アプリ

基本ドライバーパッケージには、すべてのコア機能と共有コードが含まれています。 オプションのコンポーネント パッケージには、カスタマイズおよびその他の設定を含めることができます。

通常、デバイスメーカーまたは独立系ハードウェア ベンダー (IHV) がベースドライバーパッケージを作成します。 次に、システム ビルダー (相手先ブランド供給 (OEM)) が、オプションのコンポーネント パッケージを提供します。

IHV がベース ドライバー パッケージを認定したら、すべての OEM システムで展開できます。 ベース ドライバー パッケージは、ハードウェア部分を共有するすべてのシステム全体で使用できるため、Microsoft では、特定のマシンに配布を限定するのではなく、Windows Insider のフライティングを介してベース ドライバー パッケージを広範にテストできます。

OEM は、OEM システムに対して提供するオプションのカスタマイズのみを検証します。

要件

DCH 設計原則に従うドライバー パッケージを作成するには、次の手順に従います。

  • ドライバーパッケージのINFファイルを作成します。
    1. ユニバーサルのドライバパッケージで有効なINFセクションとディレクティブのリストを確認します
    2. このInfVerifツールを使用して、ドライバーパッケージのINFファイルが宣言的(D)要件に従っていることを確認します。 infverif /k を渡す必要があります。
  • 主要なドライバー機能を含んでいないオプションのコンポーネント パッケージが、ベース ドライバー パッケージから分離されていることを確認します。
  • ドライバー パッケージに関連付けられているハードウェア サポート アプリケーションは、Microsoft Store を通じて配布する必要があります。

ベスト プラクティス

  • 利用可能な最新の Visual Studio で Windows Driver Kit (WDK) を使用している場合は、ドライバー プロジェクト プロパティの [ターゲット プラットフォーム] の値を Universal に設定します。 これによって、正しいライブラリが自動的に追加され、適切な INF 検証と ApiValidator がビルドの一部として実行されます。 手順は次のとおりです。

    1. ドライバープロジェクトのプロパティを開きます。
    2. ドライバー設定を選択ください。
    3. ドロップ・ダウンのメニューを使用してターゲットプラットフォームUniversalまで設定します。
  • INFがターゲットプラットフォームに依存するカスタムセットアップアクションを実行する場合は、それらを拡張INFに分離することを検討してください。 拡張 INF はベース ドライバー パッケージとは独立して更新できるので、堅牢性とサービス性が向上します。 詳細については、「拡張 INF ファイルの使用」を参照してください。

  • デバイスで動作するアプリケーションを提供したい場合は、ハードウェアサポートアプリを含めてください。 詳細については、ハードウェアサポートアプリを参照(HSA): ドライバー開発者向けの手順。 OEM は DISM (展開イメージのサービスと管理) を使ってそのようなアプリを事前に読み込むことができます。 または、ユーザーは Microsoft Store からアプリを手動でダウンロードすることもできます。