Partager via


Macro KdPrintEx (wdm.h)

La macro KdPrintEx envoie une chaîne au débogueur du noyau si les conditions que vous spécifiez sont remplies.

Un appel à KdPrintEx nécessite deux parenthèses.

Syntaxe

void KdPrintEx(
   _x_
);

Paramètres

_x_

Spécifie les arguments de la chaîne de format, comme dans printf .

Valeur de retour

Aucun

Remarques

KdPrintEx est identique à la routine DbgPrintEx dans le code compilé pour une configuration de débogage. Cette routine n’a aucun effet dans le code compilé pour une build de mise en production. Seuls les pilotes en mode noyau peuvent appeler la routine KdPrintEx.

KdPrintEx passe la chaîne spécifiée au débogueur du noyau ou ne fait rien du tout, selon les valeurs deComponentId , Levelet les masques de filtre de composant correspondants. Pour plus d’informations, consultez lecture et filtrage des messages de débogage.

Sauf s’il est absolument nécessaire, vous ne devez pas obtenir une chaîne à partir de l’entrée utilisateur ou d’un autre processus et le transmettre à KdPrintEx. 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 dans le type et la quantité. La meilleure pratique de codage est que toutes les chaînes de format 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 du nombre d’arguments. Toutefois, tout appel unique à KdPrintEx 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 le débogueur.

Cette routine est définie dans ntddk.h et ndis.h ; Les ID de filtre de composant sont définis dans dpfilter.h, ndis.h et wdm.h. Incluez ntddk.h ou ndis.h.

Voici les arguments :

  • ComponentId [in]

    Spécifie le composant appelant cette routine. Il doit s’agir de l’un des ID de filtre de nom de composant définis dans le fichier d’en-tête dpfilter.h. Pour éviter de mélanger la sortie de votre pilote avec la sortie des composants Windows, vous devez utiliser uniquement les valeurs suivantes pour ComponentId:

    • DPFLTR_IHVVIDEO_ID

    • DPFLTR_IHVAUDIO_ID

    • DPFLTR_IHVNETWORK_ID

    • DPFLTR_IHVSTREAMING_ID

    • DPFLTR_IHVBUS_ID

    • DPFLTR_IHVDRIVER_ID

  • Format [in]

    Spécifie un pointeur vers la chaîne de format à imprimer. La chaîne format de prend en charge la plupart deschamps de spécification de formatprintf . Toutefois, les codes de format Unicode (%C, %S, %lc, %ls, %wc, %wset %wZ) ne peuvent être utilisés qu’avec IRQL = PASSIVE_LEVEL. La routine KdPrintEx ne prend pas en charge les types à virgule flottante (%f, %e, %E, %g, %G, %aou %A).

  • Niveau [in]

    Spécifie la gravité de ce message. Il peut s’agir de n’importe quel entier 32 bits. Les valeurs comprises entre 0 et 31 (inclus) sont traitées différemment des valeurs comprises entre 32 et 0xFFFFFFFF. Pour plus d’informations, consultez lecture et filtrage des messages de débogage.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Microsoft Windows XP et versions ultérieures.
plateforme cible Bureau
d’en-tête wdm.h (include Wdm.h)
bibliothèque NtosKrnl.lib (voir DbgPrintEx.)
DLL NtosKrnl.exe

Voir aussi

dbgPrint

dbgPrintEx

KdPrint