Windows Vista 時代のデバイス・ドライバ開発
第2回

サンプル・ドライバのビルドとインストール&テスト方法
日高 亜友，川出 智幸，相良 徹

連載第 2 回目の今回は，デバイス・ドライバ開発のサンプルとして用意されているソースを実際にビルドし，インストールして動作させるまでの具体的な手順について解説する．一般的な 32 ビット Windows だけでなく，64 ビット Windows 環
境における操作手順についても解説する．

（編集部）

Server 2003 SP1 以前をターゲットとする製品向けのドライバ開発には，WDK は使用せずに Windows Server 2003

1．前回の訂正

SP1 DDK を使用せよ」という趣旨の説明が書いてありまし
まず先月号の連載の中で，「DDK と WDK のサポート環境」について重大な誤りがあったので訂正します．正しくた．しかし，この制限は WDK の正式版のリリースとともになくなるということでした（リスト 1 を参照）．

は表 1 に示すように，今後は RTM（リリース）版 WDK を

筆者らは WDK がベータ版のころから DDK や WDK を使用して，すべての各対象 OS をターゲットとして開発で使用してきため，今まで利用目的別にそれらのバージョンきるようになります．

を使い分けることに違和感はありませんでした．しかし今先日筆者らは，Microsoft 社の WDK 関連の開発スタッ後は，WDK だけで Windows 2000 から Windows Server

フと直接ミーティングを持つ機会がありました．そこでLonghorn までの OS をターゲットとしたデバイス・ドラ

WDK に対するいくつかの疑問点を指摘したところ，WDKイバを開発できるようになります．の Release Note には，彼らも気づかなかった重大な誤りがあることが分かりました．Release Note の WDK Build

2．ビルドの準備

Environments 節の When to Use This WDK 項をはじめとする Microsoft 社のいくつかのサイトには，「Windowsまず，開発するホスト・コンピュータは，連載第 1 回（本誌 2007 年 5 月号，pp.141-147）の手順に従って WDK が完全にインストールされている状態であるとします．WDK表 1 DDK と WDK のサポート環境
環 境アーキテクチャ
SVSP1DDK
WDK

ホスト環境
wlh wnet wxp w2k○○○○○○○―

ターゲット環境wlh wnet wxp w2k―○○○○○○○

凡例）
SVSP1DDK
Windows Server 2003 SP1 DDK○ サポートWDKWindows Driver Kit リリース版― 未サポート
wlhWindows Vista と Windows Server Longhorn（x86，x64，ia64）
wnet
Windows 2003 Server SP1（x86，x64，ia64）
wxp
Windows XP SP2（x86）w2k
Windows 2000 SP4（x86）※灰色が修正部分をインストールした後の準備としては，以下に示す手順で開発に必要な各開発ターゲット用のコマンド・プロンプトのショートカット・アイコンをデスクトップに取り出しておきます．そして，以下の手順でマウスを操作します．
スタートを右クリック → 開く（All Users）→ プログラ
ム → Windows Driver Kits → WDK 6000 → Build
Environments → Windows Vista and Windows Server
Longhorn → Windows Vista and Windows Server
Longhorn x86 Checked Build Environment をコピー&

リスト 1 WDK Release Note などでの誤った記述
WDK Build Environments
When to Use This WDK
Use the WDK build environments in this version of the WDK for evaluation and preview purposes only. Do not use these
WDK build environments for production-level coding. At this time, you should use the Windows Server 2003 SP1 DDKfor production.

150 KEYWORD ―― Toaster ドライバ，バス・ドライバ，ファンクション・ドライバ，PORTIO ドライバ，64ビット環境，ドライバ署名

June 2007

Windows Vista 時代のデバイス・ドライバ開発（b）コマンド・プロンプトのデスクトップへのコピー（a）ビルド用コマンド・プロンプト

図 1 開発ターゲット用のコマンド・プロンプトのショートカット・アイコンの作成

ドラッグして，デスクトップにコピー（図 1）
この説明の例では，x86 版 Windows Vista が稼働しているホスト環境において，同じ x86 版 Windows Vista 環境（Windows Vista and Windows Server Longhorn x86）をル・ソース・コードのトップ・ディレクトリに移動
コマンド入力例を以下，および図 2 に示します．
C:¥WinDDK¥6000> cd general¥toaster¥bus｜｜ 作業ディレクトリ指定

開発対象として，そのデバッグ・ビルド（Checked BuildC:¥WinDDK¥6000¥src¥general¥toaster¥bus>

Environment）用のアイコンをコピーしています．ほかのbuild -ceZ ｜｜ ビルド・コマンド入力

ターゲット・アーキテクチャ向けの開発や，複数のアーキエラーが出なければ，Toaster バス・ドライバのビルドテクチャ向けの開発では，必要な各開発対象に応じた環境作業は終了です．ビルドしてできたオブジェクト・コードのコマンド・プロンプトを使用します．

やデバッグ情報ファイル，中間生成オブジェクトは，このこれらの各開発ターゲット用のコマンド・プロンプト・

場合であれば，objchk_wlh_x86¥ i386 といったように，アイコンには，WDK に含まれるコンパイラとライブラリ

開発対象のアーキテクチャ別のサブディレクトリに生成さを使用して，デバイス・ドライバをビルド（コンパイルとれます．以下に，Build コマンドの代表的なオプションをリンク作業のこと）するために必要な環境変数が設定され示します．ています．これらを使用して，複数のアーキテクチャ向け¡? …指定可能なすべてのオプション・リストを表示のドライバを開発できるので，WDK によるデバイス・ドライバの開発は基本的にクロス開発であるといえます．
Checked Build Environment は，デバッグに必要なオプションと，ソース・コードやシンボル情報を持つオブジェクトを生成するための環境です．デバッグが終わり，製品版やロゴ取得用テストを行うためのオブジェクトを生成するためには，Free Build Environ-ment を使用します．以下に，WDK に含まれる「Toaster Bus Enumerator（ バス列挙子）ドライバ」のサンプル・ソース・コードを使用したビルド手順を示します．
（1）Checked Build Environment のアイコンを開く（2）コマンド・プロンプトにより，ビルド対象のサンプ

June 2007

図 2 ビルド手順（その 1）

151