デバッガーへの出力の送信

ユーザー モード コードとカーネル モード コードは、異なるルーチンを使用して出力をデバッガーに送信します。

ユーザーモード出力ルーチン

OutputDebugString ルーチンは、呼び出しプロセスのデバッガに null で終了する文字列を送信します。 ユーザー モード ドライバーでは、OutputDebugString によってデバッガー コマンド ウィンドウに文字列が表示されます。 デバッガが実行されていない場合、このルーチンは効果がありません。 OutputDebugString は、printf 形式の文字列の可変引数をサポートしません。

このルーチンのプロトタイプは次のとおりです。

VOID OutputDebugString(
   LPCTSTR lpOutputString
   );

このルーチンの完全なドキュメントについては、「デバッガとの通信」を参照してください。

カーネルモード出力ルーチン

DbgPrint ルーチンは、デバッガー ウィンドウに出力を表示します。 このルーチンは、基本的な printf 形式パラメータをサポートします。 DbgPrint を呼び出すことができるのはカーネル モード ドライバーのみです。

DbgPrintEx ルーチンは DbgPrint に似ていますが、メッセージに「タグを付ける」ことができます。 デバッガーの実行時に、特定のタグが付いたメッセージのみの送信を許可できます。 これにより、関心のあるメッセージのみを表示できます。 詳細については、「デバッグ メッセージの読み取りとフィルタリング」を参照してください。

KdPrint および KdPrintEx マクロは、チェックされたビルド環境でコンパイルされた場合、それぞれ DbgPrint および DbgPrintEx と同一です。 無料のビルド環境でコンパイルした場合、効果はありません。