2010年6月28日月曜日

V-USBによるUSB2.0インタラプト転送デバイスの作成(4)

WinDBGの.kdfilesコマンドについてちょっとメモしときます。

.kdfilesコマンドを使うとホストPCで作成したドライバファイル(*.sys)をターゲットPCへ転送してくれます。WinDBGのヘルプ(英語)にも解説が書いてありますが、ここにも書いておきます。

【STEP1】mapファイルの作成

map
\Systemroot\system32\drivers\sample.sys
C:\work\driver\sample.sys

[解説]
上のパスがターゲットへのドライバファイルのコピー先のパスです。下のパスがホストのコピー元のドライバファイルへのパスです。ドライバ名は自分の作ったドライバのファイル名を指定します。

マップファイルはC:\work\mapfileに保存したと仮定します。マップフィル名はmapfile.iniと仮に設定します。どんな名前でもいいです。

【STEP2】環境変数の設定

各ターゲットOSのビルド環境DOS窓で以下の環境変数を設定します。

[ここは環境によって表示が違う]> set _NT_KD_FILES=c:\work\mapfile\mapfile.ini

【STEP3】
WinDBGを立ち上げて、ターゲットPCをデバッグできる状態にしてから、
ブレークし、コマンドが入力できるようにします。
GUIのコマンド入力エディットボックスから以下のコマンドを入力します。

kd> .kdfiles c:\work\mapfile\mapfile.ini

入力するとログ画面に以下のようなメッセージが表示されます。


KD file associations loaded from 'c:\work\mapfile\mapfile.ini'
以上により、ドライバファイルの自動転送の「準備」ができました。gコマンドを入力してターゲットOSを実行させましょう。

しかし、ドライバはどのタイミングでターゲットにコピーされるのでしょうか?

「ターゲット システム上でドライバが読み込まれるたびに指定された場所からドライバを読み込みます。」 from Windows Driver Kit クイック スタート ガイド(Version : 1.0.0.061114)

です。.kdfilesコマンドを打ったからといってターゲットOSにドライバは転送されません。私はここで少しはまりました。

USB機器だったら、新しくデバイスをビルドして、デバイスを抜き差しすれば新しいドライバはターゲットPCへ転送されます。

詳しくは、WinDBGのヘルプで
Mapping Driver Files(ただし英語)
を参照してください。

Keep Starting!!!

0 件のコメント: