DbgPrintEx-Funktion (wdm.h)

Die DbgPrintEx-Routine sendet eine Zeichenfolge an den Kernel-Debugger, wenn die angegebenen Bedingungen erfüllt sind.

Syntax

NTSYSAPI ULONG DbgPrintEx(
  [in] ULONG ComponentId,
  [in] ULONG Level,
  [in] PCSTR Format,
       ...   
);

Parameter

[in] ComponentId

Gibt die Komponente an, die diese Routine aufruft. Dies muss eine der in der Dpfilter.h-Headerdatei definierten Komponentennamen-IDs sein. Um die Ausgabe Ihres Treibers mit der Ausgabe von Windows-Komponenten zu vermeiden, sollten Sie nur die folgenden Werte für ComponentId verwenden:

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

[in] Level

Gibt den Schweregrad der gesendeten Nachricht an. Dies kann eine beliebige 32-Bit-Ganzzahl sein. Werte zwischen 0 und 31 (inklusive) werden anders behandelt als Werte zwischen 32 und 0xFFFFFFFF. Ausführliche Informationen finden Sie unter Lesen und Filtern von Debuggen von Nachrichten.

[in] Format

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

...

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

Rückgabewert

Falls erfolgreich, gibt DbgPrintEx den NTSTATUS-Code STATUS_SUCCESS zurück; andernfalls gibt er den entsprechenden Fehlercode zurück.

Bemerkungen

Nur Kernelmodustreiber können die DbgPrintEx-Routine aufrufen.

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

DbgPrintEx übergibt entweder die angegebene Zeichenfolge an den Kernel-Debugger oder macht nichts, abhängig von den Werten von ComponentId, Level und den entsprechenden Komponentenfiltermasken. Ausführliche Informationen finden Sie unter Lesen und Filtern von Debuggen von Nachrichten.

Es sei denn, es ist absolut erforderlich, sollten Sie keine Zeichenfolge aus der Benutzereingabe oder einem anderen Prozess abrufen und an DbgPrintEx übergeben. Wenn Sie eine Zeichenfolge verwenden, die Sie nicht erstellt haben, müssen Sie überprüfen, ob dies eine gültige Formatzeichenfolge ist, und dass die Formatcodes der Argumentliste in Typ und Menge entsprechen. Die bewährte Codierungspraxis gilt für alle Formatzeichenfolgen , die zur Kompilierungszeit statisch und definiert werden sollen.

Es gibt keine Obergrenze für die Größe der Formatzeichenfolge oder die Anzahl der Argumente. Jeder einzelne Aufruf von DbgPrintEx sendet jedoch nur 512 Bytes von Informationen. Es gibt auch einen Grenzwert für die Größe des DbgPrint-Puffers. Ausführliche Informationen finden Sie im DbgPrint-Puffer und im Debugger .

Anforderungen

   
Unterstützte Mindestversion (Client) Verfügbar in Microsoft Windows XP und höher.
Zielplattform Universell
Header wdm.h (enthalten Wdm.h)
Bibliothek NtDll.lib (Benutzermodus); NtosKrnl.lib (Kernelmodus)
DLL NtDll.dll (Benutzermodus); NtosKrnl.exe (Kernelmodus)
IRQL <= DIRQL (siehe Abschnitt "Kommentare")

Siehe auch

DbgPrint

KdPrint

KdPrintEx

vDbgPrintEx