structure EVENT_INSTANCE_HEADER (evntrace.h)
La structure EVENT_INSTANCE_HEADER contient des informations de suivi d’événements standard communes à tous les événements écrits par TraceEventInstance. La structure contient également des handles d’inscription pour la classe de trace d’événements et l’événement parent associé, que vous utilisez pour suivre les instances d’une transaction ou les relations hiérarchiques entre les événements associés.
Syntaxe
typedef struct _EVENT_INSTANCE_HEADER {
USHORT Size;
union {
USHORT FieldTypeFlags;
struct {
UCHAR HeaderType;
UCHAR MarkerFlags;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
union {
ULONG Version;
struct {
UCHAR Type;
UCHAR Level;
USHORT Version;
} Class;
} DUMMYUNIONNAME2;
ULONG ThreadId;
ULONG ProcessId;
LARGE_INTEGER TimeStamp;
ULONGLONG RegHandle;
ULONG InstanceId;
ULONG ParentInstanceId;
union {
struct {
ULONG KernelTime;
ULONG UserTime;
} DUMMYSTRUCTNAME;
ULONG64 ProcessorTime;
struct {
ULONG EventId;
ULONG Flags;
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME3;
ULONGLONG ParentRegHandle;
} EVENT_INSTANCE_HEADER, *PEVENT_INSTANCE_HEADER;
Membres
Size
Nombre total d’octets de l’événement. La taille doit inclure la taille de la structure EVENT_INSTANCE_HEADER , ainsi que la taille de toutes les données spécifiques à un événement ajoutées à cette structure. La taille doit être inférieure à la taille de la mémoire tampon de la session de suivi d’événements moins 72 (0x48).
DUMMYUNIONNAME
Union de différentes structures et membres.
DUMMYUNIONNAME.FieldTypeFlags
Réservé.
DUMMYUNIONNAME.DUMMYSTRUCTNAME
Réservé.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.HeaderType
Réservé.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.MarkerFlags
Réservé.
DUMMYUNIONNAME2
Union de classe sous deux formes.
DUMMYUNIONNAME2.Version
Il s’agit d’un cumul des membres de Class. L’octet de faible ordre contient le Type, l’octet suivant contient le Niveau et les deux derniers octets contiennent la version.
DUMMYUNIONNAME2.Class
Structure de classe.
DUMMYUNIONNAME2.Class.Type
Type d’événement. Un fournisseur peut définir ses propres types d’événements ou utiliser les types d’événements prédéfinis répertoriés dans le tableau suivant.
EVENT_TRACE_TYPE_CHECKPOINT
Événement de point de contrôle. Utilisez pour un événement qui n’est pas au début ou à la fin d’une activité.
EVENT_TRACE_TYPE_DC_END
Événement de fin de collecte de données.
EVENT_TRACE_TYPE_DC_START
Événement de début de la collecte de données.
EVENT_TRACE_TYPE_DEQUEUE
Événement Dequeue. À utiliser lorsqu’une activité est mise en file d’attente avant de commencer. Utilisez EVENT_TRACE_TYPE_START pour marquer l’heure à laquelle un élément de travail est mis en file d’attente. Utilisez le type d’événement dequeue pour marquer l’heure à laquelle le travail sur l’élément commence réellement. Utilisez EVENT_TRACE_TYPE_END pour marquer l’heure à laquelle le travail sur l’élément se termine.
EVENT_TRACE_TYPE_END
Événement de fin. Permet de suivre l’état final d’un événement en plusieurs étapes.
EVENT_TRACE_TYPE_EXTENSION
Événement d’extension. Utilisez pour un événement qui est une continuation d’un événement précédent. Par exemple, utilisez le type d’événement d’extension lorsqu’une trace d’événement enregistre plus de données que ne peut le faire une mémoire tampon de session.
EVENT_TRACE_TYPE_INFO
Événement d’information. Il s’agit du type d’événement par défaut.
EVENT_TRACE_TYPE_REPLY
Événement de réponse. À utiliser lorsqu’une application qui demande des ressources peut recevoir plusieurs réponses. Par exemple, si une application cliente demande une URL et que le serveur web répond en envoyant plusieurs fichiers, chaque fichier reçu peut être marqué comme événement de réponse.
EVENT_TRACE_TYPE_START
Événement de démarrage. Permet de suivre l’état initial d’un événement en plusieurs étapes.
Si votre GUID de classe de trace d’événements prend en charge plusieurs types d’événements, les consommateurs utiliseront le type d’événement pour déterminer l’événement et interpréter son contenu.
DUMMYUNIONNAME2.Class.Level
Valeur définie par le fournisseur qui définit le niveau de gravité utilisé pour générer l’événement. La valeur varie de 0 à 255. Le contrôleur spécifie le niveau de gravité lorsqu’il appelle la fonction EnableTraceEx2 . Le fournisseur récupère le niveau de gravité en appelant la fonction GetTraceEnableLevel à partir de son implémentation ControlCallback . Le fournisseur utilise la valeur pour définir ce membre.
ETW définit les niveaux de gravité suivants. La sélection d’un niveau supérieur à 1 inclut également les événements pour les niveaux inférieurs. Par exemple, si le contrôleur spécifie TRACE_LEVEL_WARNING (3), le fournisseur génère également des événements TRACE_LEVEL_FATAL (1) et TRACE_LEVEL_ERROR (2).
Valeur | Signification |
---|---|
TRACE_LEVEL_CRITICAL (1) | Événements de sortie ou d’arrêt anormaux |
TRACE_LEVEL_ERROR (2) | Événements d’erreur grave |
TRACE_LEVEL_WARNING (3) | Événements d’avertissement tels que les échecs d’allocation |
TRACE_LEVEL_INFORMATION (4) | Événements sans erreur, tels que les événements d’entrée ou de sortie |
TRACE_LEVEL_VERBOSE (5) | Événements de trace détaillés |
DUMMYUNIONNAME2.Class.Version
Indique la version de la classe de trace d’événements que vous utilisez pour journaliser l’événement. Spécifiez zéro s’il n’existe qu’une seule version de votre classe de trace d’événements. La version indique au consommateur la classe MOF à utiliser pour déchiffrer les données d’événement.
ThreadId
Lors de la sortie, identifie le thread qui a généré l’événement.
Notez que sur Windows 2000, ThreadId était une valeur ULONGLONG .
ProcessId
Lors de la sortie, identifie le processus qui a généré l’événement.
Windows 2000 : Ce membre n’est pas pris en charge.
TimeStamp
Sur la sortie, contient l’heure à laquelle l’événement s’est produit, par intervalles de 100 nanosecondes depuis minuit, le 1er janvier 1601.
RegHandle
Gérez une classe de trace d’événements inscrite. Définissez cette propriété avant d’appeler la fonction TraceEventInstance .
La fonction RegisterTraceGuids crée ce handle (consultez le paramètre TraceGuidReg ).
InstanceId
Sur la sortie, contient la trace d’événements instance identificateur associé à RegHandle.
ParentInstanceId
Sur la sortie, contient la trace d’événement instance identificateur associé à ParentRegHandle.
DUMMYUNIONNAME3
Union de structs et de membres.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
Structure contenant les membres suivants.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.KernelTime
Temps d’exécution écoulé pour les instructions en mode noyau, dans les graduations du processeur. Si vous utilisez une session privée, utilisez plutôt la valeur dans le membre ProcessorTime .
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.UserTime
Temps d’exécution écoulé pour les instructions en mode utilisateur, dans les graduations du processeur. Si vous utilisez une session privée, utilisez plutôt la valeur dans le membre ProcessorTime .
DUMMYUNIONNAME3.ProcessorTime
Pour les sessions privées, le temps d’exécution écoulé pour les instructions en mode utilisateur, dans les graduations du processeur.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME2
Union de structs et de membres.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.EventId
Identificateur de l'événement.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.Flags
Doit contenir WNODE_FLAG_TRACED_GUID et peut également contenir n’importe quelle combinaison des éléments suivants.
WNODE_FLAG_USE_GUID_PTR
Spécifiez si le membre GuidPtr contient le GUID de classe.
WNODE_FLAG_USE_MOF_PTR
Spécifiez si un tableau de structures MOF_FIELD contient les données d’événement ajoutées à cette structure. Le nombre d’éléments dans le tableau est limité à MAX_MOF_FIELDS.
ParentRegHandle
Gérez vers une classe de trace d’événement inscrite d’un événement parent. Définissez cette propriété avant d’appeler la fonction TraceEventInstance si vous souhaitez tracer une relation hiérarchique (élément parent/élément enfant) entre les événements associés.
La fonction RegisterTraceGuids crée ce handle (voir le paramètre TraceGuidReg ).
Remarques
Veillez à initialiser la mémoire de cette structure sur zéro avant de définir des membres.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | evntrace.h |