0

NDIS フィルター ドライバーを開発しようとしています。ただし、読み込めないようです。debugおよびtestsigning起動オプションを有効にしています。私のドライバーはテスト署名されており、証明書はストアroottrustedpublisherストアにロードされています。

有効testsigningにする前は、ドライバーが ntbootlog.txt に次のように表示されていました。

ドライバー \SystemRoot\system32\DRIVERS\mydriver.sys をロードしませんでした

を有効testsigningにした後、ドライバーがまったく表示されません。ただし、これはインターフェイス プロパティに表示されます。現在使用しているドライバーは非常に最小限のパススルー NDIS フィルター ドライバーですが、フィルターを無効にするまでインターフェイスが壊れています。フィルターを無効にすると、すべて正常に動作します。

ドライバーは、windbg のモジュール リストには表示されませんが「アンロードされたモジュール」リストには表示されます。これは、ドライバーがある時点で読み込まれたことを示しています。私のドライバーは、すべての必須の NDIS フックと同様に、DriverEntryとの間にいくつかの出力を生成します。DriverUnloadこの出力はいずれも windbg's!dbgprintに表示されません。これは、ドライバーDriverEntryが呼び出されたことがないことを示しています。

この問題をデバッグする方法がわかりません。ここで何が起こっているのかについて、誰かが私にいくつかのヒントを教えてくれますか?

Windows 2008 R2 DataCenter のチェック ビルドを使用しています。現在、1 台のマシンのセットアップに制限されています。

4

2 に答える 2

0

最初に、DriverEntry にトレース文字列のみを出力する単純なドライバーをロードし、テスト署名してロードしてみてください。トレースが表示された場合、特定のドライバーの何が問題なのかを理解しようとします。そうでない場合は、システムのカーネル トレースが無効になっている可能性があり、NDIS ドライバーが問題のために読み込まれていません。

于 2011-03-19T06:18:31.407 に答える
0

ドライバーがアンロードされたモジュールのリストに表示される場合、ドライバーはロードされています。

使用する場合は、 MSDNのドキュメント、特にフィルタリングに関するセクションDbgPrintを必ずお読みください。

ドライバーの読み込みをキャッチするには、sxe ld:mydriverこれを使用して、ドライバー エントリにブレークポイントを設定できます。これをデバッグするもう 1 つの簡単な方法は、DriverEntry にハードコーディングされたブレークポイントを配置することです。DbgBreakPoint()

于 2011-03-25T23:36:26.453 に答える