Consumindo eventos (rastreamento de eventos)

Os consumidores de rastreamento de eventos podem processar eventos de um ou mais provedores. Os consumidores podem processar eventos de um arquivo de log ou em tempo real. Você só poderá consumir eventos em tempo real se o controlador especificar o modo de registro em log 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 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 arquivo de log, defina o membro LogFileName como o nome do arquivo de log. Para consumir eventos da sessão em tempo real, defina o membro LoggerName como o nome da sessão. Você também usa essa estrutura para especificar o retorno de chamada BufferCallback e o retorno de chamada EventCallback ou EventRecordCallback usado 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 de uma sessão em tempo real. Você implementará 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 de uma sessão em tempo real.
  • BufferCallback — recebe e processa informações resumidas sobre o buffer atual, como eventos perdidos. O ETW chama o retorno de chamada depois de entregar todos os eventos no buffer para o consumidor. O consumidor também pode usar esse retorno de chamada para cancelar o processamento de eventos; no entanto, se você estiver consumindo eventos em tempo real, o ETW fornecerá 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 o OpenTrace retorna para a função ProcessTrace . A função ProcessTrace combina os eventos, classifica-os em ordem cronológica e, em seguida, entrega-os aos retornos de chamada um de cada vez. Os eventos podem ser filtrados para incluir somente 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 retorna FALSE ou você chama CloseTrace.

Antes do Windows Vista: Você pode chamar CloseTrace somente após o retorno do ProcessTrace .

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

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