Scrittura di eventi correlati in un provider classico
I provider classici usano la funzione TraceEventInstance per tracciare gli eventi che fanno parte di una singola transazione. È anche possibile usare questa funzione per tracciare gli eventi padre/figlio.
Prima di chiamare la funzione TraceEventInstance , è necessario chiamare la funzione CreateTraceInstanceId per ottenere un identificatore di transazione. Questa funzione genera un identificatore di transazione univoco ed esegue il mapping a un handle GUID della classe registrata. Gli handle per i GUID di classe registrati sono disponibili nei membri RegHandle delle strutture TRACE_GUID_REGISTRATION , dopo aver chiamato la funzione RegisterTraceGuids . L'identificatore della transazione viene inserito nel membro InstanceId di una struttura EVENT_INSTANCE_INFO passata alla funzione CreateTraceInstanceId .
La struttura EVENT_INSTANCE_HEADER passata alla funzione TraceEventInstance è simile alla struttura EVENT_TRACE_HEADER (vedere Eventi di traccia), ad eccezione del fatto che contiene informazioni aggiuntive relative alle istanze e non contiene un membro Guid .
Le istanze di evento possono essere usate per stabilire una relazione gerarchica tra gli eventi. La funzione TraceEventInstance accetta informazioni specifiche dell'istanza da due istanze dell'evento. Il parametro pInstInfo punta alla struttura EVENT_INSTANCE_INFO dell'istanza dell'evento e il parametro pParentInstInfo punta alla struttura EVENT_INSTANCE_INFO di un'istanza dell'evento padre. La definizione di un'istanza dell'evento "padre" è definita dall'applicazione; l'elemento padre può essere qualsiasi istanza già generata.