共用方式為


vDbgPrintExWithPrefix 函式 (wdm.h)

如果符合您指定的特定條件, vDbgPrintExWithPrefix 例程會將字串傳送至核心調試程式。 此例程可以將前置詞附加至調試程序輸出,以協助組織偵錯結果。

語法

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

參數

[in] Prefix

在調試程序輸出開頭附加的字串。 您可以藉由新增唯一識別碼,使用此字串來組織調試程序輸出。

例如,元件特定的例程可以在呼叫 vDbgPrintExWithPrefix 時指定元件的名稱。 此例程會自動將元件名稱新增至傳遞至元件偵錯列印例程的所有偵錯輸出開頭。

[in] ComponentId

呼叫這個例程的元件。 此參數必須是 Dpfilter.h 中定義的其中一個元件名稱篩選標識碼。 若要避免將驅動程序的輸出與 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。 vDbgPrintExWithPrefix 例程不支援任何浮點類型 (%f%e%E、%g、%G、%a%A) 。

[in] arglist

格式字串的自變數清單。 vDbgPrintExWithPrefix 例程會以與 vprintf 相同的方式使用此列表。

傳回值

vDbgPrintExWithPrefix 如果作業成功,則會傳回STATUS_SUCCESS。 否則,此例程會傳回適當的錯誤碼。

備註

只有內核模式驅動程式可以呼叫 vDbgPrintExWithPrefix 例程。

vDbgPrintExWithPrefix 可以在 IRQL <= DIRQL 呼叫。 不過,您只能在 IRQL = PASSIVE_LEVEL使用 Unicode 格式代碼 (%wc%ws) 。 此外,由於調試程式會使用進程間中斷 (IP) 與其他處理器通訊,所以呼叫IRQL > DIRQL上的 vDbgPrintExWithPrefix 可能會導致死結。

vDbgPrintExWithPrefix 會根據 ComponentIdLevel 和對應的元件篩選遮罩值,將它建立的字串傳遞至核心調試程式,或完全不執行任何動作。 如需 vDbgPrintEx 功能的詳細資訊,請參閱 讀取和篩選偵錯訊息

除非絕對必要,否則您不應該從使用者輸入或其他進程取得字串,並將它傳遞至 vDbgPrintExWithPrefix。 如果您使用未建立的字串,則必須確認此字串是有效的格式字串,而且格式代碼符合類型和數量中的自變數清單。 最佳程式代碼撰寫做法是讓所有 Format 字串都是靜態的,並在編譯時期定義。

格式 字串的大小 或自變數數目在 arglist 清單中沒有上限。 不過, vDbgPrintExWithPrefix 的任何單一呼叫只會傳輸 512 個字節的資訊。

調試程式所使用的緩衝區大小也有限制。 如需此限制的詳細資訊,請參閱 DbgPrint 緩衝區和調試程式

此例程定義於 Wdm.h 中。 元件篩選標識碼定義於 Dpfilter.h 中。

規格需求

需求
最低支援的用戶端 可在 Microsoft Windows XP 和更新版本的作業系統版本中使用。
目標平台 Universal
標頭 wdm.h (包括 Dpfilter.h、Wdm.h、Ntddk.h、Ndis.h)
程式庫 NtDll.lib (使用者模式) ;NtosKrnl.lib (核心模式)
Dll NtDll.dll (使用者模式) ;NtosKrnl.exe (核心模式)
IRQL <= DIRQL (請參閱批注一節)

另請參閱

DbgPrintEx

vDbgPrintEx