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