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, DllMaino DriverEntry) 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:

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.