Partager via


Fonction EtwWriteEx (wdm.h)

La fonction EtwWriteEx est une fonction de suivi pour les événements de publication qui prennent en charge le filtrage dans votre code de pilote en mode noyau.

Syntaxe

NTSTATUS EtwWriteEx(
  [in]           REGHANDLE              RegHandle,
  [in]           PCEVENT_DESCRIPTOR     EventDescriptor,
  [in]           ULONG64                Filter,
  [in]           ULONG                  Flags,
  [in, optional] LPCGUID                ActivityId,
  [in, optional] LPCGUID                RelatedActivityId,
  [in]           ULONG                  UserDataCount,
  [in, optional] PEVENT_DATA_DESCRIPTOR UserData
);

Paramètres

[in] RegHandle

Pointeur vers le handle d’inscription du fournisseur d’événements, retourné par la fonction EtwRegister si l’inscription du fournisseur d’événements réussit.

[in] EventDescriptor

Pointeur vers la structure EVENT_DESCRIPTOR.

[in] Filter

Identificateurs d’instance qui identifient la session dans laquelle l’événement n’est pas écrit. Autrement dit, la valeur est un masque de sessions qui doivent être exclues de la journalisation (filtrées). Utilisez une or au niveau du bit pour spécifier plusieurs identificateurs. Défini sur zéro si vous ne prenez pas en charge les filtres ou si l’événement est écrit dans toutes les sessions (aucun filtre n’a échoué). Pour plus d’informations sur l’obtention de l’identificateur d’une session, consultez le paramètre FilterData de votre rappel EtwEnableCallback.

[in] Flags

Réservé. Doit être égal à zéro (0).

[in, optional] ActivityId

Identificateur qui indique l’activité associée à l’événement. Le ActivityID permet de regrouper les événements associés et est utilisé dans le suivi de bout en bout. Si la valeur EST NULL, ETW obtient l’identificateur du stockage local du thread. Pour plus d’informations sur l’obtention de cet identificateur, consultez EtwActivityIdControl.

[in, optional] RelatedActivityId

Identificateur d’activité du composant précédent. Utilisez ce paramètre pour lier les événements de votre composant aux événements du composant précédent. Pour obtenir l’identificateur d’activité défini pour le composant précédent, consultez les descriptions du paramètre ControlCode de la fonction EtwActivityIdControl.

[in] UserDataCount

Nombre de structures EVENT_DATA_DESCRIPTOR dans UserData. Le nombre maximal est 128.

[in, optional] UserData

Pointeur vers le tableau de structures EVENT_DATA_DESCRIPTOR. Définissez ce paramètre sur NULL si UserDataCount est égal à zéro. Les données doivent être dans l’ordre spécifié dans le manifeste.

Valeur de retour

Retourne ERROR_SUCCESS en cas de réussite ou d’une des valeurs suivantes lors de l’erreur.

Remarques

La fonction EtwWriteEx est l’équivalent en mode noyau de la fonction EventWriteEx en mode utilisateur. Les données d’événement écrites avec cette fonction nécessitent un manifeste. Le manifeste est incorporé dans le fournisseur. Le fournisseur doit donc être disponible pour qu’un consommateur consomme les données. Pour vous assurer qu’il existe un consommateur pour l’événement que vous publiez, vous pouvez précéder l’appel de EtwWrite avec un appel à EtwEventEnabled ou EtwProviderEnabled.

Utilisez les paramètres ActivityId et RelatedActivityId lorsque vous souhaitez lier des événements dans différents composants dans un scénario de suivi de bout en bout. Par exemple, les composants A, B et C effectuent un travail sur une activité associée et souhaitent lier leurs événements afin qu’un consommateur puisse consommer tous les événements liés à cette activité.

Vous pouvez appeler EtwWriteEx à n’importe quel irQL. Toutefois, quand IRQL est supérieur à APC_LEVEL, toutes les données transmises au EtwWrite, EtwWriteEx, EtwWriteString, Fonctions EtwWriteTransfer ne doivent pas être paginables. Autrement dit, toute routine en mode noyau qui s’exécute à IRQL supérieure à APC_LEVEL ne peut pas accéder à la mémoire paginable. Les données transmises au EtwWrite, EtwWriteEx, EtwWriteStringet fonctions EtwWriteTransfer doivent résider dans la mémoire de l’espace système, quel que soit l’irQL.

Exigences

Exigence Valeur
client minimum pris en charge Windows 7
serveur minimum pris en charge Windows Server 2008 R2
plateforme cible Universel
d’en-tête wdm.h
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe

Voir aussi

EtwWrite

EventWrite

EventWriteEx