Visual Studio または MSBuild を使用したドライバーのビルド
このトピックでは、Visual Studio開発環境を使用してドライバーをビルドする方法、またはVisual Studioコマンド プロンプト ウィンドウとMicrosoft Build Engine (MSBuild) を使用してコマンド ラインからドライバーをビルドする方法について説明します。
Windows 用ドライバーを開発するには、Visual Studio に SDK と WDK をインストールし、ドライバー設定を構成する必要があります。 コンピューター上の SDK と WDK のバージョンが一致していることを確認します。
Visual Studio を使用して、ドライバーをビルドする
Visual Studio でプロジェクトやソリューションを構築するのと同じ方法でドライバーを構築します。 ドライバー テンプレートを使用して新しいドライバー プロジェクトを作成すると、テンプレートによって既定の (アクティブな) プロジェクト構成と既定の (アクティブな) ソリューション ビルド構成が定義されます。
ビルド構成の管理と編集の詳細については、「Visual Studio でのビルド」を参照してください。
KMDF ドライバーの設定
VS2022でドライバ設定を行うには、ドライバプロジェクトを右クリックして、プロパティを選択し、 [プロパティ] ->[構成プロパティ] ->[ドライバ設定]に移動します。
ターゲット OS バージョン
ターゲット OS バージョン は、ドライバーが開発されている Windows バージョンを指します。 ターゲット OS バージョンを、ドライバーがサポートする最小バージョンに設定します。 たとえば、Windows 10 のドライバーでは、Windows 10 以降のすべてのバージョンがサポートされている必要があります。
これらのトピックのガイダンスに従って、複数のバージョンの Windows を サポートするように ドライバー パッケージ が適切に記述されていることを確認します。
対象プラットフォーム
Windows ターゲット プラットフォームには、 ユニバーサル ドライバー、 デスクトップ ドライバー および Windows ドライバーの 3 つの分類があります。
ユニバーサル ドライバー は 次の必要があります。
- コインストーラーを使用しません。
- DCH設計原則に準拠していること。 「DCHの設計原則とベスト プラクティス」を参照してください 。
- 合格
InfVerif /u
デスクトップ ドライバー は 次の操作を行う必要があります。
- ユニバーサル ドライバーのすべての要件を満たす。
- Windows ハードウェア互換性プログラム (WHCP) の要件に準拠 していること。
- 合格
InfVerif /h
。 詳細については、InfVerif /hを参照してください。
デスクトップ ドライバーの条件を満たすドライバーは Windows ロゴ認定済みであり、Windows Update プログラムに追加できます。
Windows Drivers は以下の操作が必要です。
- すべてのデスクトップ ドライバーの要件を満たします。
- ドライバー パッケージ分離 の要件に完全に準拠していること。
- 合格
InfVerif /w
- Windows ドライバーは、最も制限の厳しいターゲット プラットフォームの選択であり、すべての信頼性と保守性の要件を満たしています。
次の表は、ドライバーの分類をまとめたものです。
機能 | ユニバーサル ドライバー | デスクトップ ドライバー | Windows ドライバー |
---|---|---|---|
Infverif スイッチ | InfVerif /u |
InfVerif /h |
InfVerif /w |
現在のWHCP要件 | いいえ | 有効 | いいえ |
Windows OS のすべてのバリエーションをサポート | いいえ | 番号 | はい |
X64/ARM64 のサポート | はい | イエス | はい |
APIVALIDATOR のコンプライアンスが必要 | いいえ | 番号 | はい |
デスクトップ OS のサポート (ターゲット OS バージョン) | はい | イエス | はい |
GitHub ドライバー サンプルのサポート | はい | はい | いいえ |
ドライバー構成
ドライバーをビルドするときは、WDK または EWDK を使用して Visual Studio でプラットフォーム アーキテクチャとNT_TARGET_VERSIONが適切に設定されていることを確認します。 開発用の既定のソリューション ビルド構成は、 デバッグ と Win64 です。
- ソリューション エクスプローラー でソリューションを長押し (または右クリック) し、 [構成マネージャー] を選びます。
- [構成マネージャー] から、関心のあるビルドの種類に対応する [アクティブ ソリューション構成] (たとえば、 [デバッグ] または [リリース]) と [アクティブ ソリューション プラットフォーム] (たとえば、 [Win64])を選択します。
- プロジェクトを長押し (または右クリック) して、 [プロパティ]を選択します 。 [ドライバーの設定]、 >[全般] の順に移動し、 [ターゲットの OS バージョン] と [ターゲット プラットフォーム] を設定します。
- ドライバーまたはドライバー パッケージのプロジェクト プロパティを構成します。 展開、ドライバーの署名、またはその他のタスクのプロパティを設定できます。 詳細については、「ドライバーおよびドライバー パッケージのプロジェクト プロパティの構成」を参照してください。
ドライバーを構築するには
- Visual Studio でドライバー プロジェクトまたはソリューションを開きます。
- [ビルド] メニューの [ソリューションのビルド] を選びます (Ctrl + Shift + B)。
- ビルド出力ウィンドウでコンパイル時エラーを表示します。
コマンド ライン (MSBuild) を使ったドライバーのビルド
Visual Studio コマンド プロンプト ウィンドウと Microsoft Build Engine (MSBuild) を使用して、コマンド ラインからドライバーをビルドできます。
Visual Studio のコマンド プロンプト ウィンドウを使ってドライバーをビルドするには
[開発者コマンド プロンプト for VS2022] ウィンドウを開きます。
このウィンドウで MSBuild.exe を使い、プロジェクト (.vcxproj) またはソリューション (.sln) ファイルを指定して、任意の Visual Studio プロジェクトをビルドできます。
プロジェクト ディレクトリに移動し、ターゲットの MSBuild コマンドを入力します 。
たとえば、デフォルトのプラットフォームと構成を使用して MyDriver.vcxproj という Visual Studio ドライバー プロジェクトのクリーン ビルドを実行するには、プロジェクト ディレクトリに移動し、次の MSBuild コマンドを入力します。
msbuild /t:clean /t:build .\MyDriver.vcxproj
特定の構成とプラットフォームを指定するには、次を使用します。
msbuild /t:clean /t:build ProjectFile /p:Configuration=<Debug|Release> /p:Platform=architecture /p:TargetPlatformVersion=a.b.c.d /p:TargetVersion=OS
次のコマンドは、"デバッグ" 構成、"Win32" プラットフォーム、およびWindows 10用のドライバーをビルドします。
msbuild /t:clean /t:build .\MyDriver.vcxproj /p:Configuration="Debug" /p:Platform=Win32 /p:TargetVersion="Windows10" /p:TargetPlatformVersion="10.0.10010.0"
TargetPlatformVersion 設定は省略可能であり、ビルドに使用するキットのバージョンを指定します。 既定値は最新キット バージョンです。
ドライバーとドライバー パッケージのためのプロジェクト プロパティの構成
プロパティ ページ を使用して 、ドライバーとドライバー パッケージのオプションを構成および設定します。 ソリューションを構築するときにドライバーが自動的に署名されるように、またはリモートのテスト コンピューターに自動的に展開されるようにドライバーを構成することを選択できます。
個々のドライバーまたはドライバー パッケージ全体のプロパティを設定できます。 次のセクションでは、ドライバーとドライバー パッケージ専用に構成できる使用可能なプロパティの一部を示します。
ドライバープロジェクトのプロパティ
個々のドライバー ファイルの署名プロパティ - ドライバーへの署名
ドライバ パッケージのプロパティ
ドライバー パッケージのプロパティの署名 - ドライバーの署名
ドライバー パッケージ プロジェクト と Inf2CatのInf2Catプロパティ
WDK コマンド ライン ツール プロジェクトの統合
WDK には、 Stampinf や WPP プリプロセッサ (WPP トレーシング) など、一般的にビルド プロセスに含まれるコマンド ライン ツールが多数用意されています。 これらのツールは Visual Studio とともに配布されていません。 これらのツールを Visual Studio ビルド環境と組み合わせるために、 MSBuild の WDK タスクとしてラップされます。 ドライバー テンプレートのいずれかを使用している場合、または変換した既存のドライバーがある場合は、これらのプロパティ ページがプロジェクトにすでに存在している可能性があります。 そうでない場合は、関連するファイルの種類 (たとえば、メッセージ コンパイラの .mc ファイルや .man ファイル) をプロジェクトまたはソリューションに追加すると、プロパティ ページがプロジェクトに自動的に追加されます。 詳細については、「WDKとVisual Studioビルド環境」を参照してください。
ドライバーのビルドに関するトラブルシューティングのヒント
ビルドの問題のトラブルシューティングを支援するために、Visual Studio でビルド出力の詳細度を上げることができます。
- [ツール]、 >[オプション]の順に選びます。
- [プロジェクトおよびソリューション] フォルダーを選択し、[ビルドして実行] を選びます。
- MSBuild プロジェクトのビルド出力の詳細度 および MSBuild プロジェクトのビルド ログ ファイルの詳細度のオプションを変更します。 デフォルトでは、これらは [最小] に設定されています。
Windows 8 ドライバーの更新
WDK 8 や Windows Driver Kit (WDK) 8.1 を使って作成したプロジェクトやソリューションを、Windows Driver Kit (WDK) 10 と Visual Studio で動作するように変換できます。 プロジェクトまたはソリューションを開く前に、ProjectUpgradeTool を実行します ProjectUpgradeTool はプロジェクトとソリューションを変換し、WDK 10 を使って構築できるようにします。
Windows Driver Kit (WDK) 8以降では、Windowsビルド ユーティリティ (Build.exe) がMSBuildに置き換えられました。 WDK は、Visual Studio プロジェクトをビルドする場合と同じコンパイラとビルド ツールを使うようになりました。 以前のバージョンの WDK でビルドされたドライバー プロジェクトは、Visual Studio 環境で動作するように変換する必要があります。 コマンド ラインから変換ユーティリティを実行することも、既存のソースから新しいVisual Studioプロジェクトを作成して既存のドライバーを変換することもできます。 詳細については、「既存のソース ファイル と WDK および Visual Studio ビルド環境からのドライバーの作成」を参照してください。