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 呼叫 DbgPrint 和 DbgPrintEx。 不過,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 (請參閱批注一節) |