Compartilhar via


traceloggingprovider.h header

TraceLogging é um sistema para registrar eventos autodescritos que podem ser decodificados sem um manifesto. No Windows, TraceLogging é usado para gerar eventos ETW (Rastreamento de Eventos para Windows ).

O cabeçalho TraceLoggingProvider.h no SDK do Windows tem macros e funções embutidas para gerar eventos ETW codificados em TraceLogging para o kernel e o código do modo de usuário usando C ou C++.

Observação

TraceLoggingProvider.h requer valores constantes de tempo de compilação para atributos de evento, como nome do provedor, nome do evento e nomes de campo. Para minimizar a sobrecarga de runtime, TraceLoggingProvider.h compila suas estruturas de dados em tempo de compilação e armazena as informações na memória somente leitura. Se você precisar gerar eventos dinâmicos de runtime, precisará usar uma implementação de TraceLogging diferente, como TraceLoggingDynamic.

Início Rápido

  • Em um arquivo .c ou .cpp, use a macro TRACELOGGING_DEFINE_PROVIDER para declarar um identificador de provedor global. O identificador do provedor representa a conexão do componente com o ETW.
  • Na inicialização do componente (por exemplo, em main, wmain, DllMainou DriverEntry), use a função TraceLoggingRegister para abrir a conexão do componente com o ETW.
  • No desligamento do componente, use a função TraceLoggingUnregister para fechar a conexão do componente com o ETW.
  • Durante a execução do componente, use a macro TraceLoggingWrite para gerar eventos ETW codificados em TraceLogging.
  • Conforme necessário, use a macro TRACELOGGING_DECLARE_PROVIDER em cabeçalhos para encaminhar o identificador do provedor para que ele possa ser usado em outras partes do componente.
  • Use ferramentas como WPR, tracelog ou traceview para coletar rastreamentos.
  • Use ferramentas como WPA, tracefmt ou traceview para decodificar e exibir rastreamentos.

Exemplo

#include <windows.h> // or <wdm.h> for kernel-mode.
#include <winmeta.h> // For event level definitions.
#include <TraceLoggingProvider.h>

TRACELOGGING_DEFINE_PROVIDER( // defines g_hProvider
    g_hProvider, // Name of the provider handle
    "MyCompany.MyComponent", // Human-readable name for the provider
    // {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
    (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));

int main(int argc, char* argv[]) // or DriverEntry for kernel-mode.
{
    TraceLoggingRegister(g_hProvider);

    TraceLoggingWrite(
        g_hProvider,
        "MyEvent1",
        TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
        TraceLoggingKeyword(MyEventCategories), // Provider-defined categories
        TraceLoggingString(argv[0], "arg0"), // field name is "arg0"
        TraceLoggingInt32(argc)); // field name is implicitly "argc"

    TraceLoggingUnregister(g_hProvider);
    return 0;
}

Para obter mais informações, consulte:

traceloggingprovider.h contém as seguintes interfaces de programação:

Funções

 
TRACELOGGING_DECLARE_PROVIDER

Encaminha declara um identificador para um provedor de TraceLogging.
TRACELOGGING_DEFINE_PROVIDER

Define um identificador para um provedor tracelogging.
TRACELOGGING_DEFINE_PROVIDER_STORAGE

Reserva o armazenamento estático para um identificador de provedor tracelogging que será definido pelo usuário. Prefira TRACELOGGING_DEFINE_PROVIDER sobre essa macro.
TraceLoggingBinary

Macro wrapper traceLogging que adiciona um campo com dados binários ao evento.
TraceLoggingChannel

Macro wrapper traceLogging que define o canal para o evento.
TraceLoggingCustom

Macro wrapper traceLogging que adiciona um campo que foi empacotado usando um serializador personalizado ao evento.
TraceLoggingCustomAttribute

Macro wrapper traceLogging que adiciona informações personalizadas sobre o evento ao PDB.
TraceLoggingDescription

Macro wrapper traceLogging que define a descrição do evento.
TraceLoggingEventTag

Macro wrapper traceLogging que define a marca de evento para o evento.
TraceLoggingKeyword

Macro wrapper traceLogging que define o palavra-chave para o evento.
TraceLoggingLevel

Macro wrapper traceLogging que define o nível do evento
TraceLoggingOpcode

Macro wrapper traceLogging que define o opcode para o evento
TraceLoggingOptionGroup

A macro TraceLogging para uso no TRACELOGGING_DEFINE_PROVIDER para especificar um grupo de provedores.
TraceLoggingProviderEnabled

Macro traceLogging para determinar se um consumidor de rastreamento está escutando um evento desse provedor.
TraceLoggingProviderId

Obtém a ID do provedor de um provedor tracelogging.
TraceLoggingRegister

Registra um provedor tracelogging para que ele possa ser usado para registrar eventos.
TraceLoggingRegisterEx

Registra um provedor tracelogging para que ele possa ser usado para registrar eventos, especificando um retorno de chamada habilitado para ETW.
TraceLoggingSetInformation

Configura um provedor tracelogging chamando EventSetInformation.
TraceLoggingSocketAddress

Macro wrapper traceLogging que adiciona um campo com um endereço de soquete ao evento.
TraceLoggingStruct

Macro wrapper traceLogging que adiciona um campo que contém outros campos ao evento.
TraceLoggingUnregister

Cancela o registro de um provedor tracelogging.
TraceLoggingValue

Macro wrapper traceLogging para C++ que adiciona um campo com um tipo deduzido automaticamente ao evento.
TraceLoggingWrite

Emite um evento TraceLogging.
TraceLoggingWriteActivity

Emite um evento TraceLogging com IDs de atividade especificadas.