Compartilhar via


Função ProcessTrace (evntrace.h)

A função ProcessTrace fornece eventos de uma ou mais sessões de processamento de rastreamento ETW para o consumidor.

Sintaxe

ETW_APP_DECLSPEC_DEPRECATED ULONG WMIAPI ProcessTrace(
  [in] PROCESSTRACE_HANDLE *HandleArray,
  [in] ULONG               HandleCount,
  [in] LPFILETIME          StartTime,
  [in] LPFILETIME          EndTime
);

Parâmetros

[in] HandleArray

Ponteiro para uma matriz de identificadores de sessão de processamento de rastreamento obtidos de chamadas anteriores para a função OpenTrace .

A matriz pode conter até 64 identificadores para sessões de processamento de arquivos ou pode conter um identificador para uma sessão de processamento em tempo real. A matriz não pode conter identificadores de sessão de processamento de arquivos e identificadores de sessão de processamento em tempo real.

[in] HandleCount

Número de elementos no HandleArray.

[in] StartTime

Ponteiro para uma estrutura FILETIME opcional que especifica o período de tempo inicial para o qual você deseja receber eventos. A função não fornece eventos com carimbos de data/hora antes do StartTime.

[in] EndTime

Ponteiro para uma estrutura FILETIME opcional que especifica o período de tempo final para o qual você deseja receber eventos. A função não fornece eventos com carimbos de data/hora após o EndTime.

Windows Server 2003: Esse valor é ignorado para entrega de evento em tempo real.

Valor de retorno

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.

Se a função falhar, o valor retornado será um dos códigos de erro do sistema. Veja a seguir alguns erros comuns e suas causas.

  • ERROR_BAD_LENGTH

    HandleCount não é válido ou o número de identificadores é maior que 64.

  • ERROR_INVALID_HANDLE

    Um elemento de HandleArray não é um identificador de sessão de rastreamento de eventos válido.

  • ERROR_INVALID_TIME

    EndTime é menor que StartTime.

  • ERROR_INVALID_PARAMETER

    HandleArray é NULL, contém sessões de processamento de arquivo e sessões de processamento em tempo real ou contém mais de uma sessão de processamento em tempo real.

  • ERROR_NOACCESS

    Ocorreu uma exceção em uma das funções de retorno de chamada que recebe os eventos.

  • ERROR_CANCELLED

    Indica que o consumidor cancelou o processamento retornando FALSE em sua função BufferCallback .

  • ERROR_WMI_INSTANCE_NOT_FOUND

    A sessão de coleta de rastreamento da qual você está tentando consumir eventos em tempo real não está em execução ou não tem o modo de rastreamento em tempo real habilitado.

Observações

Os consumidores de rastreamento chamam essa função para processar os eventos de uma ou mais sessões de processamento de rastreamento. Essa função é bloqueada até que o processamento termine.

Antes de chamar ProcessTrace, use OpenTrace para abrir identificadores para rastrear sessões de processamento.

A função ProcessTrace fornece os eventos das sessões invocando as funções de retorno de chamada BufferCallback, EventCallback e EventRecordCallback do consumidor.

A função ProcessTrace tenta entregar eventos em ordem com base no carimbo de data/hora do evento (ou seja, ele tenta entregar eventos mais antigos ao mais recente). Em determinados casos, o ProcessTrace pode fornecer eventos fora de ordem.

  • Se o relógio usado para os carimbos de data/hora do evento for ajustado para trás durante a coleta de rastreamento, a ordem de entrega dos eventos será imprevisível. Para evitar esse problema, use o relógio QPC em vez do relógio de tempo do sistema ao coletar o rastreamento.
  • Se vários eventos forem coletados com o mesmo carimbo de data/hora em CPUs diferentes, a ordem de entrega dos eventos será imprevisível.
  • Se um evento tiver um carimbo de data/hora inválido (por exemplo, devido à corrupção de arquivos), a ordem de entrega desse evento e outros eventos no rastreamento podem ser imprevisíveis.

A função ProcessTrace bloqueia o thread até que ele entregue todos os eventos, a função BufferCallback retorna FALSE ou você chama CloseTrace. Além disso, se o consumidor estiver consumindo eventos em tempo real, a função ProcessTrace retornará depois que o controlador interromper a sessão de rastreamento. (Observe que pode haver um atraso de vários segundos antes do retorno da função.)

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

Exemplos

Para obter um exemplo que usa ProcessTrace, consulte Usando TdhFormatProperty para consumir dados de evento.

Requirements

Requirement Value
Cliente mínimo suportado Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo compatível Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
Header evntrace.h
Library AdvAPI32.Lib Sechost.lib no Windows 8.1 e Windows Server 2012 R2; Advapi32.lib no Windows 8, Windows Server 2012, Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista e Windows XP
de DLL Sechost.dll no Windows 8.1 e no Windows Server 2012 R2; Advapi32.dll no Windows 8, Windows Server 2012, Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista e Windows XP

Consulte também

BufferCallback

EventCallback

EventRecordCallback

OpenTrace