DbgPrint, fonction (wdm.h)
La routine DbgPrint envoie un message au débogueur du noyau lorsque les conditions que vous spécifiez s’appliquent (voir la section Remarques ci-dessous).
Syntaxe
ULONG DbgPrint(
PCSTR Format,
...
);
Paramètres
Format
Spécifie un pointeur vers la chaîne de format à imprimer. La chaîne Format prend en charge la plupart des champs de spécification de formatde style printf. Toutefois, les codes de format Unicode (%C, %S, %lc, %ls, %wc, %ws et %wZ) ne peuvent être utilisés qu’avec IRQL = PASSIVE_LEVEL. La routine DbgPrint ne prend pas en charge les types à virgule flottante (%f, %e, %E, %g, %G, %a ou %A).
...
Spécifie les arguments de la chaîne de format, comme dans printf.
Valeur retournée
En cas de réussite, DbgPrint retourne le code NTSTATUS STATUS_SUCCESS ; sinon, il retourne le code d’erreur approprié.
Remarques
DbgPrint et DbgPrintEx peuvent être appelés à l’adresse IRQL<=DIRQL. Toutefois, les codes de format Unicode (%C, %S, %lc, %ls, %wc, %ws et %wZ) ne peuvent être utilisés que dans IRQL=PASSIVE_LEVEL. En outre, étant donné que le débogueur utilise des interruptions interprocessus (IPIs) pour communiquer avec d’autres processeurs, l’appel de DbgPrint à IRQL>DIRQL peut provoquer des blocages.
Seuls les pilotes en mode noyau peuvent appeler la routine DbgPrint .
DbgPrint envoie un message uniquement si certaines conditions s’appliquent. Plus précisément, il se comporte comme la routine DbgPrintEx avec le composant DEFAULT et un niveau d’importance du message de DPFLTR_INFO_LEVEL. En d’autres termes, les deux appels de fonction suivants sont identiques :
DbgPrint ( Format, arguments )
DbgPrintEx ( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments )
Pour plus d’informations sur le filtrage des messages, les composants et le niveau d’importance des messages, consultez Lecture et filtrage des messages de débogage.
Il est recommandé d’utiliser DbgPrintEx au lieu de DbgPrint, car cela vous permet de contrôler les conditions dans lesquelles le message est envoyé.
Sauf si cela est absolument nécessaire, vous ne devez pas obtenir de chaîne à partir d’une entrée utilisateur ou d’un autre processus et la passer à DbgPrint. Si vous utilisez une chaîne que vous n’avez pas créée, vous devez vérifier qu’il s’agit d’une chaîne de format valide et que les codes de format correspondent à la liste d’arguments en type et en quantité. La meilleure pratique de codage consiste à ce que toutes les chaînes de format soient statiques et définies au moment de la compilation.
Il n’existe aucune limite supérieure à la taille de la chaîne Format ou au nombre d’arguments. Toutefois, tout appel unique à DbgPrint ne transmet que 512 octets d’informations. Il existe également une limite à la taille de la mémoire tampon DbgPrint. Pour plus d’informations, consultez Mémoire tampon DbgPrint et débogueur .
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h) |
Bibliothèque | NtDll.lib (mode utilisateur) ; NtosKrnl.lib (mode noyau) |
DLL | NtDll.dll (mode utilisateur) ; NtosKrnl.exe (mode noyau) |
IRQL | IRQL <= DIRQL (voir la section Commentaires) |