intestazione traceloggingprovider.h
TraceLogging è un sistema per registrare gli eventi autodescrizione che possono essere decodificati senza un manifesto. In Windows, TraceLogging viene usato per generare eventi di Traccia eventi per Windows (ETW).
L'intestazione TraceLoggingProvider.h in Windows SDK include macro e funzioni inline per generare eventi ETW con codifica TraceLogging per il kernel e il codice in modalità utente usando C o C++.
Nota
TraceLoggingProvider.h richiede valori costanti in fase di compilazione per gli attributi dell'evento, ad esempio nome del provider, nome evento e nomi di campo. Per ridurre al minimo il sovraccarico del runtime, TraceLoggingProvider.h compila le strutture di dati in fase di compilazione e archivia le informazioni in memoria di sola lettura. Se è necessario generare eventi dinamici di runtime, sarà necessario usare un'implementazione TraceLogging diversa, ad esempio TraceLoggingDynamic.
Introduzione
- In un file c o cpp usare la macro TRACELOGGING_DEFINE_PROVIDER per dichiarare un handle provider globale. L'handle del provider rappresenta la connessione del componente a ETW.
- All'avvio del componente ( ad esempio in
main
,wmain
,DllMain
oDriverEntry
) usare la funzione TraceLoggingRegister per aprire la connessione del componente a ETW. - All'arresto del componente, usare la funzione TraceLoggingUnregister per chiudere la connessione del componente a ETW.
- Durante l'esecuzione del componente, usare la macro TraceLoggingWrite per generare eventi ETW con codifica TraceLogging.
- In base alle esigenze, usare la macro TRACELOGGING_DECLARE_PROVIDER nelle intestazioni per dichiarare l'handle del provider in modo che possa essere usato in altre parti del componente.
- Usare strumenti come WPR, tracelog o traceview per raccogliere tracce.
- Usare strumenti come WPA, tracefmt o traceview per decodificare e visualizzare le tracce.
Esempio
#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;
}
Per altre informazioni, vedere:
- TraceLogging
- Macro wrapper traceLogging
- TraceLoggingWrite
- TRACELOGGING_DECLARE_PROVIDER
- TRACELOGGING_DEFINE_PROVIDER
traceloggingprovider.h contiene le interfacce di programmazione seguenti:
Funzioni
TRACELOGGING_DECLARE_PROVIDER L'inoltro dichiara un handle per un provider TraceLogging. |
TRACELOGGING_DEFINE_PROVIDER Definisce un handle per un provider TraceLogging. |
TRACELOGGING_DEFINE_PROVIDER_STORAGE Riserva l'archiviazione statica per un handle del provider TraceLogging che verrà definito dall'utente. Preferisce TRACELOGGING_DEFINE_PROVIDER su questa macro. |
TraceLoggingBinary Macro wrapper traceLogging che aggiunge un campo con dati binari all'evento. |
TraceLoggingChannel Macro wrapper traceLogging che imposta il canale per l'evento. |
TraceLoggingCustom Macro wrapper traceLogging che aggiunge un campo che è stato compresso usando un serializzatore personalizzato all'evento. |
TraceLoggingCustomAttribute Macro wrapper traceLogging che aggiunge informazioni personalizzate sull'evento nel PDB. |
TraceLoggingDescription Macro wrapper traceLogging che imposta la descrizione dell'evento. |
TraceLoggingEventTag Macro wrapper traceLogging che imposta il tag evento per l'evento. |
TraceLoggingKeyword Macro wrapper traceLogging che imposta la parola chiave per l'evento. |
TraceLoggingLevel Macro wrapper traceLogging che imposta il livello per l'evento |
TraceLoggingOpcode Macro wrapper traceLogging che imposta il codice opcode per l'evento |
TraceLoggingOptionGroup Macro TraceLogging da usare in TRACELOGGING_DEFINE_PROVIDER per specificare un gruppo di provider. |
TraceLoggingProviderEnabled Macro TraceLogging per determinare se un consumer di traccia è in ascolto di un evento da questo provider. |
TraceLoggingProviderId Ottiene l'ID del provider di un provider TraceLogging. |
TraceLoggingRegister Registra un provider TraceLogging in modo che possa essere usato per registrare gli eventi. |
TraceLoggingRegisterEx Registra un provider TraceLogging in modo che possa essere usato per registrare gli eventi, specificando un callback di abilitazione ETW. |
TraceLoggingSetInformation Configura un provider TraceLogging chiamando EventSetInformation. |
TraceLoggingSocketAddress Macro wrapper traceLogging che aggiunge un campo con un indirizzo socket all'evento. |
TraceLoggingStruct Macro wrapper traceLogging che aggiunge un campo contenente altri campi all'evento. |
TraceLoggingUnregister Annulla la registrazione di un provider TraceLogging. |
TraceLoggingValue Macro wrapper traceLogging per C++ che aggiunge un campo con un tipo dedotto automaticamente all'evento. |
TraceLoggingWrite Genera un evento TraceLogging. |
TraceLoggingWriteActivity Genera un evento TraceLogging con ID attività specificati. |