ドライバを作成するための環境を作りましょう。MicrosoftはWDK(Windows Driver Kit)というドライバ開発に必要となるツールを提供してくれています。
http://msdn.microsoft.com/ja-jp/windows/hardware/hh852365.aspx
WDKを使用してドライバのサンプルをビルドするには、まずPCにビルドできる環境を作らなければなりません。下記のソフトウェアをインストールします。
http://code.msdn.microsoft.com/windowshardware/Windows-8-Driver-Samples-5e1aa62e
最新版のWDKはVisual Studioを使用して、ドライバ、アプリをビルドします。今回は「PortIO」ドライバを例としてビルドします。ビルドの手順は以下の通りです。
環境準備でダウンロードした「Windows Driver Kit(WDK)8.1 Sample.zip」を開きます。
zipファイルの中の「PortIO Sample Driver\C++」の中のportio.slnをVisual Studioで開きます。
作成したい環境のビルド構成を選択し、ビルドします(図2、図3)。図の環境はWindows8 x64なので、ソリューション構成が「Win8 Debug|x64」を選択しています。また、ビルドを実行する際は、環境に対応したWDKが必要となります。ビルドに成功すると、genport.sys、genport.inf、gpdread.exe、gpdwrite.exeが、以下のパスに作成されます(表1)。
作成されるパス | |
---|---|
genport.sys、genport.inf | ...\C++\sys\(対応bit数)\(対応する環境のフォルダ)\ |
gpdread.exe | ...\C++\gpdread\(対応bit数)\(対応環境名のフォルダ)\ |
gpdwrite.exe | ...\C++\gpdwrite\(対応bit数)\(対応環境名のフォルダ)\ |
※ドライバは署名無しには動きません。WDKのサンプルには全てテスト署名がつく設定になっていますので、OSをテストモードで起動すればサンプルのドライバが動作します。ドライバを自作する場合の署名の付け方は以下を参考にしてください。
参考として、WindowsXP以前のドライバのビルド方法も以下に記載しておきます。旧版ではVisualStdioを使用せず、WDKを使用してドライバをビルドします。以下はOSが7で、WDKのバージョンが7600.16385.1の環境を使用しています。
図4の場合、WDKがC:\WinDDK\7600.16385.1\src\general\portioの中のsys、gpdwrite、gpdreadのファイルの中にそれぞれgenport.c、Gpdwrite.c、Gpdread.cがあることを確認します。WDKをインストールした場所、バージョンにより、\src....の前の部分は変わります。
[スタート]→[すべてのプログラム]→[Windows Driver Kits]→[Build Environments]→[Windows 7(対象環境)]→[x64 Free Build Environment(対象環境)]の順でWDKを起動します。(図5)個々の環境によってはこの手順と違うスタートメニューからの表示が異なる場合があります。
WDKを起動すると図6の画面が表示されます。ビルドしたいファイルが含まれるフォルダに移動します。ここではgenport.cをビルドします。"cd src\general\portio\sys"とタイプし、移動し、"build"とタイプすることでビルドが開始されます。ビルドが終わるとビルドされたソース数、リンク数が表示されます。同様にgpdwrite.c、gpdread.cをビルドすることができます。
サンプルコードが実際にビルドされたかを確認するために、サンプルコードがあったファイルに移動します。そこから"..sys\objfre_win7_amd64\amd64"に移動し、ビルドに成功していれば、そこにビルドされたファイルが生成されています。図7で、genport.sysが生成されているが確認できます。同様にして、gpdwrite.exe, gpdread.exeが生成されていることを確認します。