テクニカル ドキュメント #19



Doc ID: 19
製品: WinDriver
Version:  --

WinDriver を使用した、ドライバ コードのデバッグ

WinDriver ツールキットを使用する際に、ユーザー モードで開発し、そして、コンパイラのデバッガのように一般的なユーザー モードのデバッグ ツールを使用できます。

WinDriver ツールキットには、デバッグ ツールとして、Debug Monitor ユーティリティ ("Monitor Debug Messages" または "KernelTracer") があります。このユーティリティには、GUI ベースの WinDriver/util/wddebug_gui と コンソール ベースの WinDriver/util/wddebug があります。 このユーティリティの詳細に関しては、WinDriver のユーザー マニュアルおよびテクニカル ドキュメント #12#13 (GUI 以外の使用方法) および #14 (VxWorks の場合) を参照してください。

WinDriver には、WD_DebugAdd() API (v5.03 以降) があります。WD_DebugAdd() API で、コードからのデバッグ メッセージを Debug Monitor ログへ送信します。この API の詳細は、WinDriver のユーザー マニュアルの「関数リファレンス」を参照してください。
注意: ユーザーおよびカーネル モード コード (WinDriver の Kernel PlugIn 機能のいずれかを使用して記述) からこの関数を呼ぶことができ、Kernel PlugIn KP_IntAtIrql() 関数などの HIGH IRQL で起動する関数内からこの関数を呼ぶことができます。

テクニカル ドキュメント #44 の説明のとおり、Debug Monitor ウィンドウの代わりに、カーネル デバッガへデバッグ メッセージを送ることもできます。たとえば、開発環境の PC でシステムがクラッシュまたはハングした場合に、他の PC へデバッグ メッセージのログを取ることができます。

v6.0 以降、WinDriver の多くの関数は、成功か関連するエラー コードを示す値を返し、デバッグ時に役立ちます。USB の場合、WinDriver の v5.20 以降、USB API は、更にステータス情報を返し、エラーの原因を判明します。この情報は、USB 構造体へ追加された dwStatus フィールドに返されます。この戻りのステータス コードは、WinDriver の WD_USB_ERROR_CODES enum で定義されます /include/windrvr.h)。

ernel でコードを開発する際には (Kernel PlugIn を使用)、デバッグ中にカーネル デバッガ (WinDbg - Microsoft 社から無料で提供されているデバッグツール) を使用できます。上記でも述べましたが、ご使用のカーネル デバッガへ Debug Monitor から直接デバッグ メッセージを送信します。

WinDriver のデバッグ処理の詳細に関しましては、WinDriver のユーザー マニュアルの「デバッグ」の章を参照してください。