KdPrint マクロ (wdm.h)
KdPrint マクロは、カーネル デバッガーにメッセージを送信します。
KdPrint は 、指定した条件が適用される場合にのみメッセージを送信します。 詳細については、以下のセクションを参照してください。
KdPrint の呼び出しには、二重かっこが必要です。
構文
void KdPrint(
[in] _x_
);
パラメーター
[in] _x_
印刷する書式指定文字列へのポインターを指定します。 書式指定文字列は、ほとんどの printf スタイルの書式指定構文をサポートしています。 ただし、Unicode 形式コード (%C、 %S、 %lc、 %ls、 %wc、 %ws、 および %wZ) は、IRQL = PASSIVE_LEVELでのみ使用できます。 KdPrint ルーチンは、浮動小数点型 (%f、%e、%E、%g、%G、%a、または %A) をサポートしていません。
戻り値
なし
解説
KdPrint は、デバッグ構成用にコンパイルされるコード内の DbgPrint ルーチンと同じです。 リリース構成用にコンパイルされた場合、このルーチンは無効です。 KdPrint ルーチンを呼び出すことができるのは、カーネル モード ドライバーだけです。
KdPrint は 、特定の条件が適用される場合にのみメッセージを送信します。 具体的には、DEFAULT コンポーネントとメッセージの重要度レベルがDPFLTR_INFO_LEVELの KdPrintEx のように動作します。 つまり、次の 2 つの関数呼び出しは同じです。
KdPrint (( Format, arguments ))
KdPrintEx (( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments ))
メッセージ のフィルター処理、コンポーネント、およびメッセージの重要度レベルの詳細については、「 デバッグ メッセージの読み取りとフィルター処理」を参照してください。
使用している Windows のバージョンに関係なく、 KdPrintEx ではメッセージの送信条件を制御できるため、 KdPrint の代わりに KdPrintEx を使用することをお勧めします。
絶対に必要でない限り、ユーザー入力または別のプロセスから文字列を取得して KdPrint に渡すべきではありません。 作成しなかった文字列を使用する場合は、これが有効な書式指定文字列であること、および書式コードが型と数量の引数リストと一致することを確認する必要があります。 最適なコーディング方法は、すべての 書式指定 文字列を静的にし、コンパイル時に定義することです。
Format 文字列のサイズや引数の数に上限はありません。 ただし、 KdPrint を 1 回呼び出すと、512 バイトの情報のみが送信されます。 DbgPrint バッファーのサイズにも制限があります。 詳細については、「 DbgPrint バッファーとデバッガー 」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wdm.h を含む) |
Library | NtosKrnl.lib (DbgPrint を参照)。 |
[DLL] | NtosKrnl.exe |