Écriture d’événements connexes dans un fournisseur classique
Les fournisseurs classiques utilisent la fonction TraceEventInstance pour suivre les événements qui font partie d’une transaction unique. Vous pouvez également utiliser cette fonction pour suivre les événements parents/enfants.
Avant d’appeler la fonction TraceEventInstance , vous devez d’abord appeler la fonction CreateTraceInstanceId pour obtenir un identificateur de transaction. Cette fonction génère un identificateur de transaction unique et le mappe à un handle GUID de classe inscrit. Les handles pour les GUID de classe inscrits sont disponibles dans les membres RegHandle des structures TRACE_GUID_REGISTRATION , après avoir appelé la fonction RegisterTraceGuids . L’identificateur de transaction est placé dans le membre InstanceId d’une structure EVENT_INSTANCE_INFO que vous passez à la fonction CreateTraceInstanceId .
La structure EVENT_INSTANCE_HEADER passée à la fonction TraceEventInstance est similaire à la structure EVENT_TRACE_HEADER (voir Événements de suivi), sauf qu’elle contient des informations supplémentaires relatives aux instances et qu’elle ne contient pas de membre GUID .
Les instances d’événement peuvent être utilisées pour établir une relation hiérarchique entre les événements. La fonction TraceEventInstance accepte des informations spécifiques à instance de deux instances d’événement. Le paramètre pInstInfo pointe vers la structure EVENT_INSTANCE_INFO de l’événement instance, et le paramètre pParentInstInfo pointe vers la structure EVENT_INSTANCE_INFO d’un instance d’événement parent. La définition d’un événement « parent » instance est définie par l’application ; le parent peut être n’importe quel instance qui a déjà été généré.