Condividi tramite


Funzione DbgPrint (wdm.h)

La routine DbgPrint invia un messaggio al debugger del kernel quando vengono specificate le condizioni specificate (vedere la sezione Osservazioni di seguito).

Sintassi

ULONG DbgPrint(
  PCSTR Format,
  ...   
);

Parametri

Format

Specifica un puntatore alla stringa di formato da stampare. La stringa Formato supporta la maggior parte dei campi delle specifiche di formatodi stampaf. Tuttavia, i codici di formato Unicode (%C, %S, %lc, %ls, %wc, %ws e %wZ) possono essere usati solo con IRQL = PASSIVE_LEVEL. La routine DbgPrint non supporta alcun tipo a virgola mobile (%f, %e, % E, % g, % G, % a o %A).

...

Specifica gli argomenti per la stringa di formato, come in printf.

Valore restituito

Se ha esito positivo, DbgPrint restituisce il codice NTSTATUS STATUS_SUCCESS; in caso contrario, restituisce il codice di errore appropriato.

Commenti

DbgPrint e DbgPrintEx possono essere chiamati in IRQL=DIRQL<. Tuttavia, i codici di formato Unicode (%C, %S, %lc, %ls, %wc, %ws e %wZ) possono essere usati solo in IRQL=PASSIVE_LEVEL. Inoltre, poiché il debugger usa interruzioni interprocesso (IPIs) per comunicare con altri processori, la chiamata a DbgPrint in IRQL DIRQL>può causare deadlock.

Solo i driver in modalità kernel possono chiamare la routine DbgPrint .

DbgPrint invia un messaggio solo se si applicano determinate condizioni. In particolare, si comporta come la routine DbgPrintEx con il componente DEFAULT e un livello di importanza del messaggio di DPFLTR_INFO_LEVEL. In altre parole, le due chiamate di funzione seguenti sono identiche:

DbgPrint ( Format, arguments )

DbgPrintEx ( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments )

Per altre informazioni sul filtro dei messaggi, sui componenti e sul livello di importanza dei messaggi, vedere Lettura e filtro dei messaggi di debug.

È consigliabile usare DbgPrintEx anziché DbgPrint, perché consente di controllare le condizioni in cui viene inviato il messaggio.

A meno che non sia assolutamente necessario, non è necessario ottenere una stringa dall'input utente o da un altro processo e passarlo a DbgPrint. Se si usa una stringa che non è stata creata, è necessario verificare che si tratta di una stringa di formato valida e che i codici di formato corrispondano all'elenco di argomenti in tipo e quantità. La procedura consigliata per la codifica è che tutte le stringhe di formato siano statiche e definite in fase di compilazione.

Non esiste alcun limite superiore alle dimensioni della stringa Format o al numero di argomenti. Tuttavia, qualsiasi singola chiamata a DbgPrint trasmetterà solo 512 byte di informazioni. Esiste anche un limite alle dimensioni del buffer DbgPrint. Per informazioni dettagliate, vedere Buffer DbgPrint e debugger .

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h)
Libreria NtDll.lib (modalità utente); NtosKrnl.lib (modalità kernel)
DLL NtDll.dll (modalità utente); NtosKrnl.exe (modalità kernel)
IRQL IRQL = DIRQL <(vedere la sezione Commenti)

Vedi anche

DbgPrintEx

KdPrint

KdPrintEx