次の方法で共有


vDbgPrintEx 関数 (wdm.h)

特定の条件が満たされた場合、 vDbgPrintEx ルーチンはカーネル デバッガーに文字列を送信します。

構文

NTSYSAPI ULONG vDbgPrintEx(
  [in] ULONG   ComponentId,
  [in] ULONG   Level,
  [in] PCCH    Format,
  [in] va_list arglist
);

パラメーター

[in] ComponentId

このルーチンを呼び出しているコンポーネント。 このパラメーターは、Dpfilter.h で定義されているコンポーネント名フィルター ID のいずれかである必要があります。 ドライバーの出力と Windows コンポーネントの出力が混在しないようにするには、 ComponentId に次の値のみを使用する必要があります。

  • DPFLTR_IHVVIDEO_ID
  • DPFLTR_IHVAUDIO_ID
  • DPFLTR_IHVNETWORK_ID
  • DPFLTR_IHVSTREAMING_ID
  • DPFLTR_IHVBUS_ID
  • DPFLTR_IHVDRIVER_ID

[in] Level

送信されるメッセージの重大度。 このパラメーターには、任意の 32 ビット整数を指定できます。 0 ~ 31 (含む) の値は、32 ~ 0xFFFFFFFFの値とは異なる方法で処理されます。 値の処理方法の詳細については、「 デバッグ メッセージの読み取りとフィルター処理」を参照してください。

[in] Format

印刷する書式指定文字列へのポインター。 Format 文字列は、ほとんどの printf スタイルの書式設定コードをサポートしています。 ただし、Unicode 形式コード (%C%S%lc%ls%wc%ws%wZ) は IRQL = PASSIVE_LEVELでのみ使用できます。 vDbgPrintEx ルーチンは、浮動小数点型 (%f%e、%E%g%G%a、または %A) をサポートしていません。

[in] arglist

書式指定文字列の引数リスト。 vDbgPrintEx ルーチンは、vprintf と同じ方法でこのリストを使用します。

戻り値

操作が成功した場合、vDbgPrintEx はSTATUS_SUCCESSを返します。 それ以外の場合、このルーチンは適切なエラー コードを返します。

注釈

vDbgPrintEx ルーチンを呼び出すことができるのは、カーネル モード ドライバーだけです。

vDbgPrintEx は IRQL = DIRQL <で呼び出すことができます。 ただし、Unicode 形式コード (%wc および %ws) は IRQL = PASSIVE_LEVELでのみ使用できます。 また、デバッガーはプロセス間割り込み (IPI) を使用して他のプロセッサと通信するため、IRQL > DIRQL で vDbgPrintEx を呼び出すとデッドロックが発生する可能性があります。

vDbgPrintEx は、作成した文字列をカーネル デバッガーに渡すか、 ComponentIdLevel、および対応するコンポーネント フィルター マスクの値に応じてまったく何も行いません。 vDbgPrintEx の機能の詳細については、「デバッグ メッセージの読み取りとフィルター処理」を参照してください。

絶対に必要でない限り、ユーザー入力または別のプロセスから文字列を取得し、 vDbgPrintEx に渡さないでください。 作成しなかった文字列を使用する場合は、この文字列が有効な書式指定文字列であり、書式コードが型と数量の引数リストと一致することを確認する必要があります。 最適なコーディング方法は、コンパイル時にすべての 書式 指定文字列を静的に定義することです。

Format 文字列のサイズや arglist リスト内の引数の数に上限はありません。 ただし、 vDbgPrintEx への 1 回の呼び出しでは、512 バイトの情報のみが送信されます。

デバッガーが使用するバッファーのサイズにも制限があります。 この制限の詳細については、「 DbgPrint バッファーとデバッガー」を参照してください。

このルーチンは Wdm.h で定義されています。 コンポーネント フィルター ID は Dpfilter.h で定義されます。

要件

要件
サポートされている最小のクライアント Microsoft Windows XP 以降のオペレーティング システム バージョンで使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Dpfilter.h、Wdm.h、Ntddk.h、Ndis.h を含む)
Library NtDll.lib (ユーザー モード);NtosKrnl.lib (カーネル モード)
[DLL] NtDll.dll (ユーザー モード);NtosKrnl.exe (カーネル モード)
IRQL <= DIRQL (「コメント」セクションを参照)

こちらもご覧ください

DbgPrintEx