Partilhar via


Consumo de Eventos (Rastreamento de Eventos)

Os consumidores de rastreamento de eventos podem processar eventos de um ou mais provedores. Os consumidores podem processar eventos a partir de um arquivo de log ou em tempo real. Você pode consumir eventos em tempo real somente se o controlador especificar o modo de registro em tempo real para a sessão. Por motivos de desempenho, o processamento em tempo real não é recomendado antes do Windows Vista.

Para especificar a sessão de rastreamento a partir da qual você deseja processar eventos, use a estrutura EVENT_TRACE_LOGFILE. Você deve inicializar uma cópia dessa estrutura para cada arquivo de log ou sessão em tempo real que deseja processar.

Para consumir eventos de um ficheiro de log, defina o membro LogFileName com o nome do ficheiro de log. Para consumir eventos da sessão em tempo real, atribua o membro LoggerName ao nome da sessão. Você também utiliza esta estrutura para especificar o callback BufferCallback e o callback EventCallback ou EventRecordCallback, usados para processar os eventos.

  • EventRecordCallback— Recebe e processa todos os eventos (incluindo o evento de cabeçalho) de um ou mais arquivos de log e uma sessão em tempo real. Você implementa esse retorno de chamada se usar as funções auxiliares de dados de rastreamento para analisar os dados do evento ou se quiser recuperar metadados sobre o evento.
  • EventCallback—Recebe e processa todos os eventos (incluindo o evento de cabeçalho) de um ou mais arquivos de log e uma sessão em tempo real.
  • BufferCallback— Recebe e processa informações resumidas sobre o buffer atual, como eventos perdidos. O ETW invoca o retorno de chamada após entregar todos os eventos no buffer ao consumidor. O consumidor também pode usar este retorno de chamada para cancelar o processamento de eventos; no entanto, se estiveres a consumir eventos em tempo real, o ETW entrega os eventos até que o controlador pare a sessão.

Depois de definir uma ou mais sessões de rastreamento, chame a função OpenTrace para cada sessão de rastreamento que você deseja processar; Você pode processar eventos de um ou mais arquivos de log, mas de apenas uma sessão em tempo real. Em seguida, você passa a lista de identificadores de sessão de rastreamento que OpenTrace retorna para a funçãoProcessTrace. A função ProcessTrace combina os eventos, classifica-os em ordem cronológica e depois fornece-os às callbacks, uma de cada vez. Os eventos podem ser filtrados para incluir apenas aqueles que se enquadram em um período de tempo específico usando os parâmetros StartTime e EndTime. A função ProcessTrace bloqueia o thread até que o consumidor processe todos os eventos nas sessões de rastreamento, o BufferCallback retorne FALSEou você chame CloseTrace.

Antes do Windows Vista: Você pode chamar CloseTrace somente depois que ProcessTrace retornar.

Para obter um exemplo que mostra como consumir eventos publicados usando um manifesto, MOF ou arquivos TMF, consulte Recuperando dados de eventos usando TDH. Observe que, a partir do Windows Vista, você deve usar as funções auxiliares de dados de rastreamento (TDH) para consumir eventos.

Para obter um exemplo que mostra como consumir eventos publicados usando o MOF, consulte Recuperando dados de eventos usando MOF.