Consommation d’événements (suivi d’événements)
Les consommateurs de trace d’événements peuvent traiter les événements d’un ou de plusieurs fournisseurs. Les consommateurs peuvent traiter des événements à partir d’un fichier journal ou en temps réel. Vous pouvez consommer des événements en temps réel uniquement si le contrôleur spécifie le mode de journalisation en temps réel pour la session. Pour des raisons de performances, le traitement en temps réel n’est pas recommandé avant Windows Vista.
Pour spécifier la session de trace à partir de laquelle vous souhaitez traiter les événements, vous utilisez la structure EVENT_TRACE_LOGFILE . Vous devez initialiser une copie de cette structure pour chaque fichier journal ou session en temps réel que vous souhaitez traiter.
Pour utiliser des événements à partir d’un fichier journal, définissez le membre LogFileName sur le nom du fichier journal. Pour utiliser des événements à partir d’une session en temps réel, définissez le membre LoggerName sur le nom de la session. Vous utilisez également cette structure pour spécifier le rappel BufferCallback et le rappel EventCallback ou EventRecordCallback utilisés pour traiter les événements.
- EventRecordCallback : reçoit et traite tous les événements (y compris l’événement d’en-tête) à partir d’un ou plusieurs fichiers journaux et d’une session en temps réel. Vous implémentez ce rappel si vous utilisez les fonctions d’assistance des données de trace pour analyser les données d’événement ou si vous souhaitez récupérer des métadonnées relatives à l’événement.
- EventCallback : reçoit et traite tous les événements (y compris l’événement d’en-tête) à partir d’un ou plusieurs fichiers journaux et d’une session en temps réel.
- BufferCallback : reçoit et traite des informations récapitulatives sur la mémoire tampon actuelle, telles que les événements perdus. ETW appelle le rappel après avoir livré tous les événements de la mémoire tampon au consommateur. Le consommateur peut également utiliser ce rappel pour annuler le traitement des événements ; Toutefois, si vous consommez des événements en temps réel, ETW remet les événements jusqu’à ce que le contrôleur arrête la session.
Après avoir défini une ou plusieurs sessions de suivi, appelez la fonction OpenTrace pour chaque session de trace que vous souhaitez traiter ; vous pouvez traiter des événements à partir d’un ou plusieurs fichiers journaux, mais à partir d’une seule session en temps réel. Vous transmettez ensuite la liste des handles de session de trace retournés par OpenTrace à la fonction ProcessTrace . La fonction ProcessTrace combine les événements, les trie dans l’ordre chronologique, puis les remet aux rappels un par un. Les événements peuvent être filtrés pour inclure uniquement ceux qui tombent dans une période spécifique à l’aide des paramètres StartTime et EndTime . La fonction ProcessTrace bloque le thread jusqu’à ce que votre consommateur traite tous les événements dans les sessions de trace, que BufferCallback retourne FALSE ou que vous appelez CloseTrace.
Avant Windows Vista : Vous pouvez appeler CloseTrace uniquement après le retour de ProcessTrace .
Pour obtenir un exemple qui montre comment consommer des événements publiés à l’aide d’un manifeste, MOF ou de fichiers TMF, consultez Récupération de données d’événement à l’aide de TDH. Notez qu’à compter de Windows Vista, vous devez utiliser les fonctions TDH (Trace Data Helper) pour consommer des événements.
Pour obtenir un exemple qui montre comment consommer des événements publiés à l’aide de MOF, consultez Récupération de données d’événement à l’aide de MOF.