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;否則會傳回適當的錯誤碼。

備註

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

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

只有在套用特定條件時,DbgPrint 才會傳送訊息。 具體而言,其行為就像具有 DEFAULT 元件的 DbgPrintEx 例程,以及DPFLTR_INFO_LEVEL的訊息重要性層級。 換句話說,下列兩個函數調用完全相同:

DbgPrint ( Format, arguments )

DbgPrintEx ( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments )

如需訊息篩選、元件和訊息重要性層級的詳細資訊,請參閱 讀取和篩選偵錯訊息

建議您使用 DbgPrintEx 而不是 DbgPrint,因為這可讓您控制訊息傳送時的條件。

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

Format 字串的大小或自變數數目沒有上限。 不過, 任何對 DbgPrint 的單一呼叫只會傳輸 512 個字節的資訊。 DbgPrint 緩衝區的大小也有限制。 如需詳細資訊 ,請參閱 DbgPrint 緩衝區和調試程式

規格需求

需求
目標平台 Universal
標頭 wdm.h (包含 Wdm.h)
程式庫 NtDll.lib (使用者模式) ;NtosKrnl.lib (核心模式)
Dll NtDll.dll (使用者模式) ;NtosKrnl.exe (核心模式)
IRQL IRQL <= DIRQL (請參閱批注一節)

另請參閱

DbgPrintEx

KdPrint

KdPrintEx