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


структура EVENT_INSTANCE_HEADER (evntrace.h)

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

Синтаксис

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;

Члены

Size

Общее число байтов события. Размер должен включать размер структуры EVENT_INSTANCE_HEADER , а также размер любых данных, относящихся к событиям, добавленных в эту структуру. Размер должен быть меньше, чем размер буфера сеанса трассировки событий минус 72 (0x48).

DUMMYUNIONNAME

Объединение различных структур и членов.

DUMMYUNIONNAME.FieldTypeFlags

Зарезервировано.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

Зарезервировано.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.HeaderType

Зарезервировано.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MarkerFlags

Зарезервировано.

DUMMYUNIONNAME2

Объединение класса в двух формах.

DUMMYUNIONNAME2.Version

Это сводка членов Класса. Байт низкого порядка содержит тип, следующий байт — уровень, а последние два байта — версию.

DUMMYUNIONNAME2.Class

Структура класса.

DUMMYUNIONNAME2.Class.Type

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

  • EVENT_TRACE_TYPE_CHECKPOINT

    Событие контрольной точки. Используется для события, которое не находится в начале или конце действия.

  • EVENT_TRACE_TYPE_DC_END

    Событие завершения сбора данных.

  • EVENT_TRACE_TYPE_DC_START

    Событие начала сбора данных.

  • EVENT_TRACE_TYPE_DEQUEUE

    Событие вывода в очередь. Используйте, когда действие помещается в очередь перед его началом. Используйте EVENT_TRACE_TYPE_START, чтобы отметить время постановки рабочего элемента в очередь. Используйте тип события dequeue, чтобы отметить время фактического начала работы над элементом. Используйте EVENT_TRACE_TYPE_END, чтобы отметить время завершения работы над элементом.

  • EVENT_TRACE_TYPE_END

    Событие End. Используется для трассировки конечного состояния многоэтапного события.

  • EVENT_TRACE_TYPE_EXTENSION

    Событие расширения. Используйте для события, которое является продолжением предыдущего события. Например, используйте тип события расширения, когда трассировка событий записывает больше данных, чем может поместиться в буфере сеанса.

  • EVENT_TRACE_TYPE_INFO

    Информационное событие. Это тип события по умолчанию.

  • EVENT_TRACE_TYPE_REPLY

    Событие ответа. Используйте, когда приложение, запрашивающее ресурсы, может получить несколько ответов. Например, если клиентское приложение запрашивает URL-адрес, а веб-сервер отвечает, отправляя несколько файлов, каждый полученный файл можно пометить как событие ответа.

  • EVENT_TRACE_TYPE_START

    Событие Start. Используется для трассировки начального состояния многоэтапного события.

Если GUID класса трассировки событий поддерживает несколько типов событий, потребители будут использовать тип события для определения события и интерпретации его содержимого.

DUMMYUNIONNAME2.Class.Level

Определенное поставщиком значение, определяющее уровень серьезности, используемый для создания события. Значение в диапазоне от 0 до 255. Контроллер задает уровень серьезности при вызове функции EnableTraceEx2 . Поставщик получает уровень серьезности, вызывая функцию GetTraceEnableLevel из своей реализации ControlCallback . Поставщик использует значение для задания этого элемента.

Трассировка событий Windows определяет следующие уровни серьезности. При выборе уровня выше 1 также будут включены события для более низких уровней. Например, если контроллер указывает TRACE_LEVEL_WARNING (3), поставщик также создает события TRACE_LEVEL_FATAL (1) и TRACE_LEVEL_ERROR (2).

Значение Значение
TRACE_LEVEL_CRITICAL (1) Аномальные события выхода или завершения
TRACE_LEVEL_ERROR (2) Серьезные события ошибок
TRACE_LEVEL_WARNING (3) Предупреждающие события, такие как сбои выделения
TRACE_LEVEL_INFORMATION (4) События без ошибок, такие как события входа или выхода
TRACE_LEVEL_VERBOSE (5) Подробные события трассировки

DUMMYUNIONNAME2.Class.Version

Указывает версию класса трассировки событий, который используется для регистрации события. Укажите ноль, если существует только одна версия класса трассировки событий. Версия сообщает потребителю, какой класс MOF использовать для расшифровки данных события.

ThreadId

В выходных данных определяет поток, создающий событие.

Обратите внимание, что в Windows 2000 ThreadId был значением ULONGLONG .

ProcessId

В выходных данных определяет процесс, создающий событие.

Windows 2000: Этот член не поддерживается.

TimeStamp

В выходных данных содержит время возникновения события в 100-наносекундных интервалах с полуночи 1 января 1601 года.

RegHandle

Обработка для зарегистрированного класса трассировки событий. Задайте это свойство перед вызовом функции TraceEventInstance .

Функция RegisterTraceGuids создает этот дескриптор (см. параметр TraceGuidReg ).

InstanceId

В выходных данных содержит идентификатор экземпляра трассировки событий, связанный с RegHandle.

ParentInstanceId

В выходных данных содержит идентификатор экземпляра трассировки событий, связанный с ParentRegHandle.

DUMMYUNIONNAME3

Объединение структур и членов.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Структура, содержащая следующие элементы.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.KernelTime

Затраченное время выполнения инструкций в режиме ядра в тактах ЦП. Если вы используете частный сеанс, используйте значение в элементе ProcessorTime .

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.UserTime

Затраченное время выполнения инструкций в пользовательском режиме в тактах ЦП. Если вы используете частный сеанс, используйте значение в элементе ProcessorTime .

DUMMYUNIONNAME3.ProcessorTime

Для частных сеансов затраченное время выполнения инструкций в пользовательском режиме в тактах ЦП.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2

Объединение структур и членов.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.EventId

Идентификатор события.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.Flags

Должен содержать WNODE_FLAG_TRACED_GUID, а также может содержать любое сочетание следующих элементов.

  • WNODE_FLAG_USE_GUID_PTR

    Укажите, содержит ли член GuidPtr guid класса.

  • WNODE_FLAG_USE_MOF_PTR

    Укажите, содержит ли массив структур MOF_FIELD данные событий, добавленные к этой структуре. Количество элементов в массиве ограничено MAX_MOF_FIELDS.

ParentRegHandle

Обработка зарегистрированного класса трассировки родительского события. Задайте это свойство перед вызовом функции TraceEventInstance , если требуется отследить иерархическую связь (родительский/дочерний элемент) между связанными событиями.

Функция RegisterTraceGuids создает этот дескриптор (см. параметр TraceGuidReg ).

Комментарии

Не забудьте инициализировать память для этой структуры до нуля, прежде чем задавать какие-либо члены.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть evntrace.h

См. также раздел

TraceEventInstance