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
,DllMain
ouDriverEntry
), 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:
- TraceLogging
- Macros de wrapper traceLogging
- TraceLoggingWrite
- TRACELOGGING_DECLARE_PROVIDER
- TRACELOGGING_DEFINE_PROVIDER
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. |