estrutura EVENT_TRACE_LOGFILEA (evntrace.h)

A estrutura EVENT_TRACE_LOGFILE armazena informações sobre uma fonte de dados de rastreamento.

A estrutura EVENT_TRACE_LOGFILE é usada ao chamar OpenTrace. O usuário fornece uma estrutura EVENT_TRACE_LOGFILE com informações sobre a fonte de dados de rastreamento (o nome de um arquivo ETL ou o nome de uma sessão ativa do agente em tempo real), sinalizadores de processamento de rastreamento e as funções de retorno de chamada que receberão dados de rastreamento. Em caso de êxito, o OpenTrace preenche os campos restantes da estrutura para retornar detalhes sobre a fonte de dados de rastreamento.

Quando ProcessTrace processa um buffer, ele invoca o BufferCallback definido pelo usuário com uma estrutura EVENT_TRACE_LOGFILE para fornecer informações sobre a sessão de processamento de eventos e o buffer.

Sintaxe

typedef struct _EVENT_TRACE_LOGFILEA {
  LPSTR                         LogFileName;
  LPSTR                         LoggerName;
  LONGLONG                      CurrentTime;
  ULONG                         BuffersRead;
  union {
    ULONG LogFileMode;
    ULONG ProcessTraceMode;
  } DUMMYUNIONNAME;
  EVENT_TRACE                   CurrentEvent;
  TRACE_LOGFILE_HEADER          LogfileHeader;
  PEVENT_TRACE_BUFFER_CALLBACKA BufferCallback;
  ULONG                         BufferSize;
  ULONG                         Filled;
  ULONG                         EventsLost;
  union {
    PEVENT_CALLBACK        EventCallback;
    PEVENT_RECORD_CALLBACK EventRecordCallback;
  } DUMMYUNIONNAME2;
  ULONG                         IsKernelTrace;
  PVOID                         Context;
} EVENT_TRACE_LOGFILEA, *PEVENT_TRACE_LOGFILEA;

Membros

LogFileName

Nome do arquivo de log que está sendo processado ou NULL se estiver processando dados de uma sessão de rastreamento em tempo real. Especifique um valor para esse membro se você estiver chamando OpenTrace para consumir dados de um arquivo de log.

Ao chamar OpenTrace, se LoggerName não for NULL , LogFileName deverá ser NULL.

Ao chamar OpenTrace, o usuário que consome os eventos deve ter permissões para ler o arquivo.

Observação

O nome do arquivo fornecido ao OpenTrace por meio do campo LogFileName deve ser o nome completo do arquivo, incluindo todos os sufixos. Algumas APIs de criação de arquivo de rastreamento podem adicionar silenciosamente um sufixo ao nome de arquivo especificado pelo usuário. Por exemplo, se o controlador registrou eventos registrados em uma sessão privada (o controlador definiu o membro LogFileMode de EVENT_TRACE_PROPERTIES como EVENT_TRACE_PRIVATE_LOGGER_MODE ao chamar StartTrace), o arquivo ETL gerado incluirá um sufixo de ID de processo, por exemplo, mytrace.etl_123. Isso também poderá ocorrer se o arquivo tiver sido criado usando o modo EVENT_TRACE_FILE_MODE_NEWFILE , nesse caso, o arquivo ETL gerado incluirá um número de sequência.

LoggerName

Nome da sessão de rastreamento de eventos em tempo real ou NULL se estiver processando dados de um arquivo de log. Especifique um valor para esse membro se você estiver chamando OpenTrace para consumir dados de uma sessão em tempo real.

Ao chamar OpenTrace, se LogFileName não for NULL , LoggerName deverá ser NULL.

Você só poderá consumir eventos em tempo real se o controlador de rastreamento tiver definido o membro LogFileMode do EVENT_TRACE_PROPERTIES para incluir o sinalizador EVENT_TRACE_REAL_TIME_MODE .

Somente usuários com privilégios administrativos, usuários no grupo Usuários do Log de Desempenho e aplicativos em execução como LocalSystem, LocalService, NetworkService podem consumir eventos em tempo real. Para conceder a um usuário restrito a capacidade de consumir eventos em tempo real, adicione-os ao grupo Usuários do Log de Desempenho ou chame EventAccessControl.

Windows XP e Windows 2000: Qualquer pessoa pode consumir eventos em tempo real.

CurrentTime

Na saída, a hora atual, em intervalos de 100 nanossegundos desde a meia-noite de 1º de janeiro de 1601.

BuffersRead

Na saída, o número de buffers processados.

DUMMYUNIONNAME

DUMMYUNIONNAME.LogFileMode

Reservado. Não use.

DUMMYUNIONNAME.ProcessTraceMode

Modos para processar eventos. Os modos são definidos no arquivo de evntcons.h cabeçalho. Você pode especificar um ou mais dos seguintes modos:

  • PROCESS_TRACE_MODE_EVENT_RECORD

    Especifique esse modo se quiser receber eventos no novo formato de EVENT_RECORD (altamente recomendado). Para receber eventos no novo formato, você deve especificar um retorno de chamada no membro EventRecordCallback . Se você não especificar esse modo, receberá eventos no formato antigo por meio do retorno de chamada especificado no membro EventCallback .

    Antes do Windows Vista: Sem suporte.

  • PROCESS_TRACE_MODE_RAW_TIMESTAMP

    Por padrão, o ProcessTrace converte o TimeStamp do evento do formato bruto original (hora do sistema, hora do QPC ou contador de ciclo de CPU) em tempo do sistema (intervalos de 100 nanossegundos desde a meia-noite de 1º de janeiro de 1601).

    Especifique o sinalizador PROCESS_TRACE_MODE_RAW_TIMESTAMP se você não quiser que o valor do carimbo de data/hora no membro TimeStamp do EVENT_HEADER e EVENT_TRACE_HEADER convertido em hora do sistema. Se esse sinalizador for especificado, ProcessTrace deixará o valor do carimbo de data/hora no formato original especificado pelo controlador no membro Wnode.ClientContext do EVENT_TRACE_PROPERTIES.

    Antes do Windows Vista: Sem suporte.

  • PROCESS_TRACE_MODE_REAL_TIME

    Especifique esse modo para receber eventos em tempo real. Você deverá especificar esse modo se LoggerName não for NULL.

CurrentEvent

Na saída, uma estrutura EVENT_TRACE que contém o último evento processado.

LogfileHeader

Na saída, uma estrutura TRACE_LOGFILE_HEADER que contém informações gerais sobre a sessão e o computador no qual a sessão foi executada.

BufferCallback

Ponteiro para a função BufferCallback que recebe estatísticas relacionadas ao buffer para cada etw de buffer liberado. O ETW chama esse retorno de chamada depois de entregar todos os eventos no buffer. Esse retorno de chamada é opcional.

BufferSize

Na saída, contém o tamanho de cada buffer, em bytes.

Filled

Na saída, contém o número de bytes no buffer que contêm informações válidas.

EventsLost

Não usado.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.EventCallback

Ponteiro para a função EventCallback que o ETW chama para cada evento no buffer. Esse campo será usado somente se o campo ProcessTraceMode não incluir o PROCESS_TRACE_MODE_EVENT_RECORD sinalizador.

Observação

O campo EventCallback será tratado como um EventRecordCallback se o campo ProcessTraceMode incluir o PROCESS_TRACE_MODE_EVENT_RECORD sinalizador . Se o EventCallback estiver recebendo dados embaralhados do ProcessTrace, verifique se o campo ProcessTraceMode não inclui o PROCESS_TRACE_MODE_EVENT_RECORD sinalizador.

Dica

O novo código deve usar EventRecordCallback em vez de EventCallback. O EventRecordCallback recebe um EVENT_RECORD que contém informações de evento mais completas, pode ser usado com APIs de decodificação, como TdhGetEventInformation, e tem um ponteiro de contexto que pode ser usado pelo retorno de chamada.

DUMMYUNIONNAME2.EventRecordCallback

Ponteiro para a função EventRecordCallback que o ETW chama para cada evento no buffer. Esse campo será usado somente se o campo ProcessTraceMode incluir o PROCESS_TRACE_MODE_EVENT_RECORD sinalizador .

Observação

O campo EventRecordCallback será tratado como um EventCallback se o campo ProcessTraceMode não incluir o PROCESS_TRACE_MODE_EVENT_RECORD sinalizador. Se o EventRecordCallback estiver recebendo dados embaralhados do ProcessTrace, verifique se o campo ProcessTraceMode inclui o PROCESS_TRACE_MODE_EVENT_RECORD sinalizador .

Antes do Windows Vista: Sem suporte.

IsKernelTrace

Na saída, se esse membro for TRUE, a sessão de rastreamento de eventos será o Agente do Kernel NT. Caso contrário, será outra sessão de rastreamento de eventos.

Context

Dados de contexto que um consumidor pode especificar ao chamar OpenTrace. Se o consumidor usar EventRecordCallback para consumir eventos, o ETW definirá o membro UserContext da estrutura EVENT_RECORD como esse valor.

Antes do Windows Vista: Sem suporte.

Comentários

Os consumidores de eventos devem:

  1. Inicialize a memória dessa estrutura como zero.
  2. Se estiver lendo de um arquivo ETL, defina LogFileName como o caminho para o arquivo. Caso contrário (ou seja, se estiver lendo de uma sessão em tempo real), defina LoggerName como o nome da sessão e defina ProcessTraceMode como PROCESS_TRACE_MODE_REAL_TIME.
  3. Se estiver usando EventRecordCallback (recomendado), defina EventRecordCallback como o endereço da função de retorno de chamada do registro de evento, defina Context como um valor a ser fornecido para o retorno de chamada e adicione PROCESS_TRACE_MODE_EVENT_RECORD a ProcessTraceMode. Caso contrário (ou seja, se estiver usando EventCallback), defina EventCallback como o endereço da função de retorno de chamada de evento.
  4. Se você precisar de um retorno de chamada depois que cada buffer for processado, defina BufferCallback como o endereço da função de retorno de chamada do buffer.
  5. Se você quiser os dados de carimbo de data/hora brutos originais em vez do carimbo de data/hora processado, adicione PROCESS_TRACE_MODE_RAW_TIMESTAMP a ProcessTraceMode.
  6. Chame OpenTrace. Observe que, se bem-sucedida, a função OpenTrace preencherá membros dessa estrutura com informações da fonte de dados de rastreamento.
  7. Chame ProcessTrace com o identificador retornado pelo OpenTrace.
    • ProcessTrace invocará sua função de retorno de chamada de evento para cada evento.
    • O ProcessTrace invocará a função de retorno de chamada do buffer (se fornecido) depois de concluir cada buffer e incluirá uma instância da estrutura EVENT_TRACE_LOGFILE com processamento de rastreamento status informações.
  8. Após a conclusão do processamento de rastreamento, chame CloseTrace para fechar o identificador que foi retornado pelo OpenTrace.

Observação

O cabeçalho evntrace.h define EVENT_TRACE_LOGFILE como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho evntrace.h

Confira também

BufferCallback

EventRecordCallback

OpenTrace