Поделиться через


Запись связанных событий в классическом поставщике

Классические поставщики используют функцию TraceEventInstance для трассировки событий, которые являются частью одной транзакции. Эту функцию также можно использовать для трассировки родительских и дочерних событий.

Перед вызовом функции TraceEventInstance необходимо сначала вызвать функцию CreateTraceInstanceId , чтобы получить идентификатор транзакции. Эта функция создает уникальный идентификатор транзакции и сопоставляет его с зарегистрированным дескриптором GUID класса. Дескриптора для зарегистрированных GUID класса доступны в членах RegHandleTRACE_GUID_REGISTRATION структур после вызова функции RegisterTraceGuids . Идентификатор транзакции помещается в элемент InstanceIdструктуры EVENT_INSTANCE_INFO , передаваемой функции CreateTraceInstanceId .

Структура EVENT_INSTANCE_HEADER , передаваемая функции TraceEventInstance , аналогична структуре EVENT_TRACE_HEADER (см. раздел Трассировка событий), за исключением того, что она содержит дополнительные сведения, связанные с экземплярами, и не содержит член GUID .

Экземпляры событий можно использовать для установления иерархической связи между событиями. Функция TraceEventInstance принимает сведения о конкретном экземпляре из двух экземпляров событий. Параметр pInstInfo указывает на структуру EVENT_INSTANCE_INFO экземпляра события, а параметр pParentInstInfo указывает на EVENT_INSTANCE_INFO структуру родительского экземпляра события. Определение "родительского" экземпляра события определяется приложением; Родительским может быть любой уже созданный экземпляр.