新しい WDK (Build 10586) と EWDK を使ってドライバーをビルドするまで
何もインストールせずにドライバーをビルドできる環境があれば嬉しい…そう思ったことはありませんか?
皆さまこんにちは。WDK サポートチームの JS です。
以前は、「Windows 10 でサンプル ドライバーをビルドするまで」で Windows 10 用に新しく公開されたキットを紹介しましたが、そのキットが、2015 年 11 月 の November Update に合わせて、新しく公開されました。また、新しいドライバービルド用の環境として、Enterprise WDK (EWDK) と呼ばれる新しいキットが公開されました。
EWDK では、コマンド ラインをベースにしたビルド環境と提供しております。また、ビルド環境もファイルでまとまっているため、詳細なインストール手順はなく、ファイルのダウンロードとシンプルなコマンドの実行だけで利用することが可能です。
Visual Studio と統合されている従来の WDK を利用するためには、事前に、マシンに Visual Studio 及び WDK を都度 インストールする必要がありましたが、コンパクトになったこの EWDK を利用することでそれらの工程を経ることなくビルドに進めることが可能となっております。
サンプル ドライバーのビルドまでのステップについて、前回のバージョンから少々 変更点がありますので、この記事では、最新のツールを利用した、Toaster サンプルのビルドまでに必要な手順を、改めてご紹介したいと思います。EWDK を使ったドライバーのビルド手順も記載しましたので、併せてご参照いただけたら幸いです。
1. 新しい Visual Studio と WDK を使った Toaster サンプルのビルド
a. こちらより必要なツールをダウンロードすることができます。
Download the WDK, WinDbg, and associated tools
https://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx
まずは Visual Studio 2015 Update 1 をインストールしましょう。ここでは、Visual Studio Community 2015 をダウンロードしています。
なお、ダウンロードの前は Windows Update を実行し、OS を最新の状態にしてください。
b. ダウンロードした EXE ファイルを起動すると、ウィザードが表示されます。前回と違い、インストールする機能を選ぶ必要はありませんので、インストールの種類として 「Windows 10 開発者の標準」 を選択します。
[ インストール] ボタンをクリックし、インストールを開始します。UAC ダイアログが表示された場合は、 [はい] をクリックし、引き続きインストールに進みます。
c. セットアップが完了したら、 [起動] をクリックし、一度 Visual Studio を起動しましょう。最初の起動時に必要な処理を行います。
d. 手順 a の URL より、"Install Windows Driver Kit (WDK) 10" のボタンをクリックし、WDK のセットアップ用ファイルをダウンロードします。ファイルを起動しウィザードを開始しましょう。
進め方としては、前回の WDK と同じく、インストール先のパスを設定の上 [Next] をクリックした後、次の利用規約の画面で [Accept] をクリックし、インストールを開始します。完了後の画面で [Close] をクリックすることでインストールが完成します。
e. ダウンロード後はおなじみの Toaster サンプルをビルドします。
前回と同じく、サンプル ドライバーは Github より ZIP ファイルとしてダウンロードいただけます。
Driver samples for Windows 10
https://github.com/Microsoft/Windows-driver-samples
サンプルは、<Root フォルダ>\general\toaster\toastDrv パスにあります。Toaster.sln ファイルを選択し、Visual Studio でソリューションを開きましょう。
f. 今回、ソリューションの展開後に一つ変更を加える必要があります。
以下 3 つのプロジェクトにて、INF ファイルの元となる INX ファイルの記述を以下の例のとおり、コメントアウトします (削除でも OK です)。
o Filter\Generic\filter
o Filter\Sideband\filter
o Func\Featured\wdffeatured
[ClassInstall32] ;Addreg=ToasterClassReg CopyFiles=ToasterClassInstallerCopyFiles
;[ToasterClassReg] ;HKR,,,0,%ClassName% ;HKR,,Icon,,100 ;HKR,,Installer32,,"tostrcls.dll,ToasterClassInstaller" ;HKR,,DeviceCharacteristics,0x10001,0x100 ;Use same security checks on relative opens ;HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GA;;;BA)(A;;GA;;;LS)" ;Allow generic all access to system, built-in Admin, and Local System. ;This one overrides the security set by the driver |
上記の変更を加えた理由は、新しいバージョンの WDK では、Class Installer におけるレジストリの追加 (Addreg) を許容していないためです。もし変更をされていない場合は、以下のようなエラーが出ますので、ご注意ください。
エラー 1308 Found legacy AddReg operation defining class installers (Installer32). wdffeatured C:\toastDrv\kmdf\func\featured\wdffeatured.inx 34 エラー 1308 Found legacy AddReg operation defining class installers (Installer32). filter (Kmdf\Filter\Generic\filter) C:\toastDrv\kmdf\filter\filter.inx 34 エラー 1308 Found legacy AddReg operation defining class installers (Installer32). filter (Kmdf\Filter\Generic\filter) C:\toastDrv\kmdf\filter\filter.inx 34 |
g. 準備ができましたので、任意の対象プラットフォームに設定の上ビルドします。
- EWDK を使った Toaster サンプルのビルド
a. 以下のサイトより、利用規約に同意いただいた上で、ページ下部にある [Accept license terms] ボタンをクリックします。クリックするとそのまま EWDK の ZIP ファイルがダウンロードされます。
EULA - Enterprise WDK
https://msdn.microsoft.com/en-us/windows/hardware/mt612818.aspx
b. ZIP ファイルを任意のフォルダーに展開します。
c. 管理者コマンド プロンプトより、展開先のディレクトリをワーキングディレクトリにした上で、コマンド "LaunchBuildEnvcmd.cmd" を入力します。入力すると、以下の画像の通り、コマンドプロンプトがビルド環境用のものに移ります。
d. EWDK 環境のコマンド プロンプトにて、対象のソリューションファイルまたはプロジェクト ファイルを対象に、ビルド用プログラム Msbuild.exe を実行します。
ここでは、サンプルの Toaster ドライバーのソリューション ファイルに対し、ビルド構成を「Release・x86」を指定した以下のコマンドでビルドを行っています。特にエラーがなければ、これでビルドが完了します。
>Msbuild *.sln /p:configuration=release /p:platform=Win32 |
Msbuild.exe にて指定可能なオプションの一覧は、以下のドキュメントから確認ができますので、ご参照ください。
MSBuild Command-Line Reference
https://msdn.microsoft.com/ja-jp/library/ms164311.aspx
なお、ここで一つ注意事項があります。EWDK はご覧の通り無償で提供しているため、有償版の Visual Studio にのみ含まれているライブラリは含まれておらず、そのようなライブラリを利用するモジュールはビルドすることができません。例えば、今回のビルド例として使用しました Toaster サンプル ドライバーは、EWDK に含まれていない Active Template Library (ATL) と呼ばれるライブラリを利用したプロジェクトがあり、以下の通りエラーが発生します。
また、EWDK に含まれていないライブラリとして Microsoft Foundation Class (MFC) がありますので、予めご留意ください。
以上が、新しい WDK と EWDK を利用した、Toaster サンプルのビルド方法となります。最新の開発環境でドライバーの開発を進める予定の方々に、この記事がお役に立てたら幸いです。
参考
EWDK の詳細については、以下の MSDN サイトでも確認いただけます。随時 更新されておりますので、ご参照いただけますと幸いです。
Installing the Enterprise WDK 10
https://msdn.microsoft.com/windows/hardware/drivers/develop/installing-the-enterprise-wdk