Skip navigation.
ホーム
BLOG-ROMMER 日高のブログ

Windows 8 時代のデバイスドライバ開発

今回はWindows 8 共に公開された。WDK 8.0 を使用したWindows 8 向けのデバイスドライバ開発方法の概要について解説する。なおWDKとは Windows Driver Kitのことで、Windows デバイスドライバ開発に必要なものを集めた開発キットである。MS-DOSやWindows 98, Windows XPの頃には、DDK (Driver Deveropment Kit) と呼ばれていた。

はじめに(どのOS用のドライバが開発できるのか?)

各OSのバージョンへの対応は次の通りとなる。

開発対象

WDK 8 が開発対象としているのは、次のOSである。

  • Windows Vista
  • Windows 7
  • Windows 8
  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Server 2012

Windows XP, Windows Server2003(派生製品を含む)用のドライバ開発は、一世代古いWDK 7.1.0 を使用して開発を行う。他の古い開発キットは評価キットや検証ツールがサポートしないため、使用してはならない。

入手先

WDK8とWDK7.1.0は、以下のページのリンク先から誰でも無料で入手できる。

Windows Driver Kit のダウンロード
http://msdn.microsoft.com/ja-JP/windows/hardware/hh852365

このページへはWindows用ハードウェアやデバイスドライバ開発のポータルである Windows 8 向けハードウェアの設計、開発、および認定 のページの Windows 8 開発用キットとツールをダウンロードする からリンクしている。

またMSDN Subscriber downloadからも英語版OSのダウンロード項目として入手できる。

動作環境

WDK 8 をインストールしてドライバを開発することができる動作環境は次の通りである。

  • Windows Vista SP1以降
  • Windows 7
  • Windows 8
  • Windows Server 2008 SP1以降
  • Windows Server 2008 R2
  • Windows Server 2012

重要なことは、WDK 8 からはWDK にはコンパイラや開発ツールが含まれなくなり、WDK がVisual Studio 2012のアドオンとなったという点だ。つまり、WDKをインストールして使用するためには、Visual studio 2012 (professional版以上の有償版)を事前にインストールしておく必要がある。セミナーや評価目的での利用には、Visual Studio の試用期間が90日あるので、これを利用して使う必要がある。

WDK8の注意点

WDK 8 の大きな特徴は、WinDBG (カーネルデバッガ) を初めとする各種のドライバ開発ツールのほとんどが、Visual Studio に統合されたということである。またこの統合により、コンパイラエンジンもVisual Studioのものを利用するので、C++プログラムの記述方法やエラー表示がドライバ用のコードとアプリケーション用のコードとで同じになった。

もう一つの特徴はドライバ開発の標準手順をすべて、Visual Studio のメニューから呼び出して自動実行することも可能となった点だ。例えば、事前に設定を正しく行っておけば、次の様な今まで各手順に応じて手作業でコマンドを実行したり、ファイルコピー操作を行っていた手順がでデバッグ開始のキーを押すだけの操作で全て自動で行うことができるようになった。

自動実行に必要な注意点は、開発用ホストとターゲットマシン環境を明確に区別して用意する必要があるという点だ。今までは開発したドライバをテストする環境は、ロゴテスト(現在はWindows HCK テストと名前が変わった)を実行するのでなければ、自由に用意することができた。
例えば、ドライバをビルドする開発環境上でテストをしたり、あるいは他の目的で使用しているマシンを一時的にテスト用ターゲットとして利用したりすることが可能だった。

WDK 8では自動デバッグ機能等の標準でWDKが用意している機能を使用してデバッグやテスト実行を行う場合には、ドライバをテストするターゲット環境を各テストOS別に専用に用意する必要がある。これらのテスト環境はマルチブート環境を使用して用意することも可能だが、ドライバテスト専用の特殊なモードで起動するため、原則としてドライバテスト以外の他の用途には利用できなくなる。従ってWDK 8を使用して標準的な手法でドライバ開発を行う場合には、最低でもドライバをコンパイルしてテストやデバッガを起動する開発環境マシンと、開発対象のドライバを走らせるテストマシンの2台のマシンが必要となる。VM環境の利用は推奨されてない。実際の開発ツール自体は基本的には従来とは変わらないため、自動デバッグ機能を利用しないのであれば、従来通り好きな環境でドライバを実行してテストをすることも勿論可能ではある。

インストール

Visual Studio のインストール

最初にVisual Studio 2012 professional 以上をインストールしておく。無償の各種Express版や以前の2010等の古いバージョンはWDK8のドライバ開発には一切利用できない。Windowsドライバ開発では、複数マシンへのOSのインストールを頻繁に行うので、実質的にはVisual Stdioを含むMSDNの購読が必須であると考えても良い。

WDKのインストール

ダウンロードしたwdksetup.exeを起動してWDK8をインストールする。インストーラはインターネットからインストールするコンテンツを入手するため、インストール対象のマシンは必ずインターネットにアクセスできるようにしておく必要がある。

CoInstaller Packageのインストール

WDK8のインストール完了後、自動的にWindows Driver Frameworks (WDF) Co-Installerのページが開くのでCoInstaller Packageのインストールを行う。CoInstaller PackageはWindows Vista以降で導入された新しいWindowsデバイスドライバのフレームワーク(WDF, Windows Driver Foundation) のランタイムライブラリである。これは開発したドライバをインストールする際にドライバ・パッケージの中に含める必要があるので、必ずインストールを行う。