Schreiben verwandter Ereignisse in einem klassischen Anbieter

Klassische Anbieter verwenden die TraceEventInstance-Funktion , um Ereignisse nachzuverfolgen, die Teil einer einzelnen Transaktion sind. Sie können diese Funktion auch verwenden, um übergeordnete/untergeordnete Ereignisse nachzuverfolgen.

Bevor Sie die TraceEventInstance-Funktion aufrufen, müssen Sie zuerst die CreateTraceInstanceId-Funktion aufrufen, um einen Transaktionsbezeichner abzurufen. Diese Funktion generiert einen eindeutigen Transaktionsbezeichner und ordnet ihn einem registrierten GUID-Handle der Klasse zu. Die Handles für registrierte Klassen-GUIDs sind in den RegHandle-MembernTRACE_GUID_REGISTRATION Strukturen verfügbar, nachdem die Funktion RegisterTraceGuids aufgerufen wurde. Der Transaktionsbezeichner wird im InstanceId-Member einer EVENT_INSTANCE_INFO-Struktur platziert, die Sie an die CreateTraceInstanceId-Funktion übergeben.

Die EVENT_INSTANCE_HEADER Struktur, die an die TraceEventInstance-Funktion übergeben wird, ähnelt der EVENT_TRACE_HEADER-Struktur (siehe Ablaufverfolgungsereignisse), mit der Ausnahme, dass sie zusätzliche Informationen zu Instanzen enthält und kein Guid-Element enthält.

Ereignisinstanzen können verwendet werden, um eine hierarchische Beziehung zwischen Ereignissen herzustellen. Die TraceEventInstance-Funktion akzeptiert instance spezifische Informationen aus zwei Ereignisinstanzen. Der pInstInfo-Parameter verweist auf die EVENT_INSTANCE_INFO Struktur des ereignisbasierten instance, und der pParentInstInfo-Parameter verweist auf die EVENT_INSTANCE_INFO Struktur eines übergeordneten Ereignisses instance. Die Definition eines "übergeordneten"-Ereignisses instance ist anwendungsdefiniert. Das übergeordnete Ereignis kann eine beliebige instance sein, die bereits generiert wurde.