Driver Verifier はWindows OSにインストールされているドライバ検証ツールです。
ここではドライバ開発向けの使用方法のメモを書きます。
- Special pool メモリのオーバーラン・アンダーラン等を監視します
- Pool traching ドライバアンロード時にメモリ割り当ての開放をチェックします
- Force IRQL checking ページドメモリへの誤ったIRQLレベルでスピンロック保持中にアクセスする事をチェックします。
- I/O verifacation 専用プールからのIRP割り当てドライバのI/O操作を検証します
- Deadlock detect デットロックを監視します
- DMA checking WIndows XP以降で、DMAルーチン(バッファ、アダプタ、マップ等)を監視します。
- Low resource simulation ランダムにプール確保やリソース要求を失敗させて、リソースエラーチェックを監視します。
使用方法はDDKがインストールされていれば、「Tools」「Driver verifier」にあります。GUIとCUIがありますが好みで使用してください。基本的に上記チェック項目を任意に選択して、自分のドライバファイル(***.sys)を選択してリブートすれば自動的に検証してくれます。以下WinDbgで検出されたエラーと警告。
WDM DRIVER ERROR: [*******.sys @ 0xF85852E4] IRP_MJ_SYSTEM_CONTROL has been completed by someone other than the ProviderId. This IRP should either have been completed earlier or should have been passed down (Irp = 832C2F00 ). The IRP was targetted at DeviceObject 82306A50 IRP_MJ_SYSTEM_CONTROL.IRP_MN_BOGUS [ DevObj=82254020, FileObject=00000000, Parameters=82306A50 00000000 00000000 00000000 ] http://www.microsoft.com/hwdq/bc/default.asp?os=5.1.2600&major=0xc9&minor=0x220&lang=0x9 Break, Ignore, Zap, Remove, Disable all (bizrd)? remove r Breakpoint removed
上記エラー情報とコードが出てきます。次に進むには
input> remove 又は disable とプロンプトに入力します。
エラーの意味はたくさんあるので全て説明できませんが、DDKヘルプの「Blue Screen Data」や「Bug Check Codes」で表示されているmajor番号で意味を理解してください。
※ちなみにターゲットPCではなく自身のPCでVerifierすると、ブルースクリーンになりますので、そのときはリブートしてセーフモードでVerifierを立ち上げて、「Delete existing settings」を選択して全ての検証項目を外してください。 テーマ:プログラミング - ジャンル:コンピュータ
|