estrutura TRACE_PERIODIC_CAPTURE_STATE_INFO (evntrace.h)

Usado com TraceQueryInformation e TraceSetInformation para obter ou definir informações relacionadas a um estado de captura periódico.

Sintaxe

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

Membros

CaptureStateFrequencyInSeconds

A frequência de capturas de estado em segundos.

ProviderCount

O número de provedores.

Reserved

Reservado para uso futuro.

Comentários

O estado de captura periódica é uma maneira de permitir que as notificações de estado de captura sejam enviadas rotineiramente aos provedores. Quando isso estiver habilitado, as notificações só serão enviadas aos registros do provedor que foram habilitados anteriormente para a sessão atual. Cada provedor pode definir sua própria resposta (se houver) para uma notificação. Observe que os eventos registrados pelo provedor em resposta a uma notificação serão enviados para cada sessão ETW para a qual o provedor está habilitado, semelhante a um estado de captura solicitado manualmente.

Para usar o estado de captura periódica:

  1. Aloque um buffer do tipo TRACE_PERIODIC_CAPTURE_STATE_INFO. O tamanho do buffer deve ser: sizeof(TRACE_PERIODIC_CAPTURE_STATE_INFO) + (x * sizeof(GUID)), em que x é o número de provedores que você deseja habilitar.
  2. Chame TraceQueryInformation usando TracePeriodicCaptureStateInfo para a enumeração TRACE_INFO_CLASS . Passe o buffer e seu tamanho como os parâmetros TraceInformation e InformationLength de TraceQueryInformation.
  3. Defina CaptureStateFrequencyInSeconds de TRACE_PERIODIC_CAPTURE_STATE_INFO para a frequência mínima compatível com a versão do Windows. Esse valor pode mudar no futuro, portanto, não é recomendável codificar. Se a frequência estiver abaixo do mínimo, a chamada para TraceSetInformation falhará.
  4. Defina ProviderCount de TRACE_PERIODIC_CAPTURE_STATE_INFO para o número de GUIDs do provedor que estão sendo passados.
  5. Adicione os GUIDs de cada provedor após o final da estrutura TRACE_PERIODIC_CAPTURE_STATE_INFO . Isso usa o espaço extra alocado de (x * sizeof(GUID)) da primeira etapa.
  6. Chame TraceSetInformation usando TracePeriodicCaptureStateListInfo da enumeração TRACE_INFO_CLASS .
  7. Para desativar o estado de captura periódica, chame TraceSetInformation novamente com TracePeriodicCaptureStateListInfo do TRACE_INFO_CLASS, NULL para TraceInformation e 0 como InformationLength.

Requisitos

   
Cabeçalho evntrace.h