1

kdPrint または debugPrint 関数の呼び出しによって生成された Windows カーネル デバッガー文字列をどのように読み取ることができますか?

特にユーザーモードでの読み込みですが、カーネルモードでもOK!

DebugView と同じことですが、デバッガーに与えられた特定のメッセージ (文字列) のみをフィルター処理して処理したいと考えています。

4

1 に答える 1

1

ユーザー モードで DBWIN " API "があります。

  1. 名前付き (「DBWIN_BUFFER」) 共有メモリ領域 (4096 バイト、最初の DWORD はプロセス pid) と 2 つのイベントを作成します。
  2. DBWIN_BUFFER_READY 名前付きイベントを通知する
  3. DBWIN_DATA_READY 名前付きイベントを待ちます
  4. 共有メモリを読み取ります (そして、ステップ #2 に進み、次の出力を取得します)

NT6 のカーネル モードでは、DbSetDebugPrintCallbackがあります。

古いものでは、ある種のフック (int 0x2d / DebugService) を行う必要があります。それに関するヘルプを見つけるのに最適な場所は、おそらくOSR ニュース グループです。

編集: Vista 以降では、Debug Print Filterレジストリ エントリを設定して、DbgPrint[Ex] からのデバッグ出力メッセージを有効にする必要があります (KdPrint の場合、カーネル デバッガ IIRC が必要です)。

于 2010-04-21T13:44:50.930 に答える