Freigeben über


DbgPrint-Funktion (wdm.h)

Die DbgPrint-Routine sendet eine Nachricht an den Kerneldebugger, wenn die von Ihnen angegebenen Bedingungen gelten (siehe abschnitt Hinweise unten).

Syntax

ULONG DbgPrint(
  PCSTR Format,
  ...   
);

Parameter

Format

Gibt einen Zeiger auf die zu druckende Formatzeichenfolge an. Die Formatzeichenfolgeunterstützt die meistenDruckformatspezifikationsfelder. Die Unicode-Formatcodes (%C, %S, %lc, %ls, %wc, %ws und %wZ) können jedoch nur mit IRQL = PASSIVE_LEVEL verwendet werden. Die DbgPrint-Routine unterstützt keinen der Gleitkommatypen (%f, %e, %E, %g, %G, %a oder %A).

...

Gibt Argumente für die Formatzeichenfolge an, wie in printf.

Rückgabewert

Bei erfolgreicher Ausführung gibt DbgPrint den NTSTATUS-Code STATUS_SUCCESS zurück. Andernfalls wird der entsprechende Fehlercode zurückgegeben.

Hinweise

DbgPrint und DbgPrintEx können unter IRQL<=DIRQL aufgerufen werden. Unicode-Formatcodes (%C, %S, %lc, %ls, %wc, %ws und %wZ) können jedoch nur bei IRQL=PASSIVE_LEVEL verwendet werden. Da der Debugger auch Interprocess Interrupts (IPIs) verwendet, um mit anderen Prozessoren zu kommunizieren, kann das Aufrufen von DbgPrint unter IRQL>DIRQL zu Deadlocks führen.

Nur Kernelmodustreiber können die DbgPrint-Routine aufrufen.

DbgPrint sendet eine Nachricht nur, wenn bestimmte Bedingungen gelten. Insbesondere verhält es sich wie die DbgPrintEx-Routine mit der DEFAULT-Komponente und einer Nachrichtenrelevanzebene von DPFLTR_INFO_LEVEL. Mit anderen Worten, die folgenden beiden Funktionsaufrufe sind identisch:

DbgPrint ( Format, arguments )

DbgPrintEx ( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments )

Weitere Informationen zur Nachrichtenfilterung, zur Komponenten- und Nachrichtenrelevanzebene finden Sie unter Lesen und Filtern von Debugnachrichten.

Es wird empfohlen, DbgPrintEx anstelle von DbgPrint zu verwenden, da Sie auf diese Weise die Bedingungen steuern können, unter denen die Nachricht gesendet wird.

Sofern dies nicht unbedingt erforderlich ist, sollten Sie keine Zeichenfolge aus einer Benutzereingabe oder einem anderen Prozess abrufen und an DbgPrint übergeben. Wenn Sie eine Zeichenfolge verwenden, die Sie nicht erstellt haben, müssen Sie überprüfen, ob es sich um eine gültige Formatzeichenfolge handelt und dass die Formatcodes mit der Argumentliste in Typ und Menge übereinstimmen. Die bewährte Codierungsmethode besteht darin, dass alle Formatzeichenfolgen zur Kompilierzeit statisch und definiert sind.

Es gibt keine Obergrenze für die Größe der Formatzeichenfolge oder die Anzahl von Argumenten. Jeder einzelne Aufruf von DbgPrint überträgt jedoch nur 512 Bytes an Informationen. Es gibt auch eine Begrenzung für die Größe des DbgPrint-Puffers. Weitere Informationen finden Sie unter DbgPrint-Puffer und Debugger .

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (einschließen von Wdm.h)
Bibliothek NtDll.lib (Benutzermodus); NtosKrnl.lib (Kernelmodus)
DLL NtDll.dll (Benutzermodus); NtosKrnl.exe (Kernelmodus)
IRQL IRQL <= DIRQL (siehe Abschnitt Kommentare)

Weitere Informationen

DbgPrintEx

KdPrint

KdPrintEx