このページの本文へ

世界初!これが7対応ビンボーゆすり感知プログラムだ! (2/5)

2010年02月15日 13時00分更新

文●本間哲平/面白法人カヤック

  • この記事をはてなブックマークに追加
本文印刷

ドライバー開発に欠かせないデバッガー

 続いて、他のデバイスでドライバーを開発したくなったときのために、デバッガーを紹介しておきましょう。「ドライバー開発とかしない!」「マネージコードしか見たくない!」という方はこのページは飛ばしちゃってください。

 デバッグには、前回の記事でインストールしたWDK(Windows Driver Kit)に含まれる「Windows Driver Framework Verifier Control Application」(WdfVerifier)を使います。スタートメニューには登録されないので、直接C:\WinDDK\7600.16385.0\tools\WDF\i386\WdfVerifier.exeを開いて実行してください。あ、上記パスのi386は自分のOSにあわせて読み替えてくださいね。

 起動したらタブから「User Mode Driver Framework Settings」を選択します。WdfVerifierには、ドライバーのホストプロセスが起動したタイミングでデバッガーを自動起動してくれる機能がありますので、ウィンドウの最下段にある「Automatically Launch user-mode debugger when requested」にチェックを入れて有効にしておきます。ちなみにこのチェックボックスは「OK」や「適用」を押さなくてもすぐに反映されます。

 また、ドライバーDLLのロード時に遅延時間も設定できます。遅延時間は「Have Host Process at driver load time, wait」の後のテキストボックスに秒数を指定します。

 起動される側のデバッガーとしては通常、「WinDbg」というツールが使われます。「Tool Preferences」のタブを見ると、User Mode Debugger Preferencesに「Use WinDbg」というラジオボタンがあり、デフォルトで選択されていると思います。

 YUREXの場合は以下のような設定になりました。

WdfVerifierメイン画面

WdfVerifierメイン画面


 ではさっそくYUREXを接続してみましょう。WdfVerifierは起動した状態にしておいてください。YUREXの接続を検知すると、Host Processes for UMDF 1.9.0の欄にドライバーのプロセスが表示され、WinDbgが起動するはずです。

 とりあえずブレークポイントを設定してみます。WinDbgのメニューのFile→Open Source Fileからソースファイルをひとつ選択して開きます。テストとして、最初にアクセスされるエントリーポイントのファイルを開いてみます。「dllsup.cpp」がそれです。詳しくは説明しませんが、必ず通る「DllMain」にブレークポイントを仕掛けてみます。

 行にカーソルを置いてF9キーを押すとブレークポイントを設定できます。この状態で再度YUREXを挿し直してみてください。

 ちゃんとブレークポイントで止まりましたね。F10、F11でそれぞれステップ実行、ステップイン(関数の中まで追いかけて実行)ができます。あとはウォッチウィンドウで変数の状態を見ていれば、基本的なことは大体できると思います。

 F5を押せば次のブレークポイントが現れるか、エラーが起きるまで先に進みます。

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています