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


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

Используется с TraceQueryInformation и TraceSetInformation для получения или задания сведений, связанных с периодическим состоянием отслеживания.

Синтаксис

typedef struct _TRACE_PERIODIC_CAPTURE_STATE_INFO {
  ULONG  CaptureStateFrequencyInSeconds;
  USHORT ProviderCount;
  USHORT Reserved;
} TRACE_PERIODIC_CAPTURE_STATE_INFO, *PTRACE_PERIODIC_CAPTURE_STATE_INFO;

Члены

CaptureStateFrequencyInSeconds

Частота отслеживания состояния в секундах.

ProviderCount

Количество поставщиков.

Reserved

Зарезервировано для последующего использования.

Комментарии

Периодическое состояние отслеживания — это способ, позволяющий регулярно отправлять уведомления о состоянии отслеживания поставщикам. Если этот параметр включен, уведомления будут отправляться только регистрациям поставщиков, которые ранее были включены в текущий сеанс. Каждый поставщик может определить свой собственный ответ (при наличии) на уведомление. Обратите внимание, что события, зарегистрированные поставщиком в ответ на уведомление, будут отправляться в каждый сеанс трассировки событий Windows, к которому включен поставщик, аналогично состоянию отслеживания, запрошенном вручную.

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

  1. Выделите буфер типа TRACE_PERIODIC_CAPTURE_STATE_INFO. Размер буфера должен быть следующим: sizeof(TRACE_PERIODIC_CAPTURE_STATE_INFO) + (x * sizeof(GUID)), где x — количество поставщиков, которые вы хотите включить.
  2. Вызовите TraceQueryInformation с помощью TracePeriodicCaptureStateInfo для перечисления TRACE_INFO_CLASS. Передайте буфер и его размер в качестве параметров TraceInformation и InformationLengthtraceQueryInformation.
  3. Задайте для параметра CaptureStateFrequencyInSecondsиз TRACE_PERIODIC_CAPTURE_STATE_INFO минимальную частоту, поддерживаемую версией Windows. Это значение может измениться в будущем, поэтому не рекомендуется жесткое написание кода. Если частота ниже минимальной, вызов TraceSetInformation завершится ошибкой.
  4. Задайте в поле ProviderCountиз TRACE_PERIODIC_CAPTURE_STATE_INFO количество передаваемых GUID поставщика.
  5. Добавьте идентификаторы GUID каждого поставщика после окончания структуры TRACE_PERIODIC_CAPTURE_STATE_INFO . При этом используется дополнительное пространство, выделенное из (x * sizeof(GUID)) с первого шага.
  6. Вызовите TraceSetInformation с помощью TracePeriodicCaptureStateListInfo из перечисления TRACE_INFO_CLASS.
  7. Чтобы отключить периодическое состояние отслеживания, снова вызовите TraceSetInformation с tracePeriodicCaptureStateListInfo из TRACE_INFO_CLASS, null для TraceInformation и 0 в качестве InformationLength.

Требования

   
Верхняя часть evntrace.h