Compartir a través de


encabezado traceloggingprovider.h

TraceLogging es un sistema para registrar eventos autodescriptos que se pueden descodificar sin un manifiesto. En Windows, el registro de seguimiento se usa para generar eventos de seguimiento de eventos para Windows (ETW).

El encabezado TraceLoggingProvider.h de Windows SDK tiene macros y funciones insertadas para generar eventos ETW codificados en TraceLogging para el código kernel y en modo de usuario mediante C o C++.

Nota

TraceLoggingProvider.h requiere valores constantes en tiempo de compilación para atributos de evento como el nombre del proveedor, el nombre del evento y los nombres de campo. Para minimizar la sobrecarga en tiempo de ejecución, TraceLoggingProvider.h compila sus estructuras de datos en tiempo de compilación y almacena la información en memoria de solo lectura. Si necesita generar eventos dinámicos en tiempo de ejecución, deberá usar una implementación de TraceLogging diferente, como TraceLoggingDynamic.

Inicio rápido

  • En un archivo .c o .cpp, use la macro TRACELOGGING_DEFINE_PROVIDER para declarar un identificador de proveedor global. El identificador del proveedor representa la conexión del componente a ETW.
  • Al iniciar el componente (por ejemplo, en main, wmainDllMain, o DriverEntry), use la función TraceLoggingRegister para abrir la conexión del componente a ETW.
  • Al apagar el componente, use la función TraceLoggingUnregister para cerrar la conexión del componente a ETW.
  • Durante la ejecución del componente, use la macro TraceLoggingWrite para generar eventos ETW codificados en TraceLogging.
  • Según sea necesario, use la macro TRACELOGGING_DECLARE_PROVIDER en encabezados para reenviar el identificador del proveedor para que se pueda usar en otras partes del componente.
  • Use herramientas como WPR, tracelog o traceview para recopilar seguimientos.
  • Usa herramientas como WPA, tracefmt o traceview para descodificar y ver seguimientos.

Ejemplo

#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 más información, consulte:

traceloggingprovider.h contiene las siguientes interfaces de programación:

Functions

 
TRACELOGGING_DECLARE_PROVIDER

Forward-declara un identificador para un proveedor traceLogging.
TRACELOGGING_DEFINE_PROVIDER

Define un identificador para un proveedor de TraceLogging.
TRACELOGGING_DEFINE_PROVIDER_STORAGE

Reserva el almacenamiento estático para un identificador de proveedor de seguimiento definido por el usuario. Prefiere TRACELOGGING_DEFINE_PROVIDER en esta macro.
TraceLoggingBinary

Macro contenedora traceLogging que agrega un campo con datos binarios al evento.
TraceLoggingChannel

Macro contenedora traceLogging que establece el canal para el evento.
TraceLoggingCustom

Macro contenedora traceLogging que agrega un campo empaquetado mediante un serializador personalizado al evento.
TraceLoggingCustomAttribute

Macro contenedora traceLogging que agrega información personalizada sobre el evento en la PDB.
TraceLoggingDescription

Macro contenedora traceLogging que establece la descripción del evento.
TraceLoggingEventTag

Macro contenedora traceLogging que establece la etiqueta de evento para el evento.
TraceLoggingKeyword

Macro contenedora traceLogging que establece la palabra clave para el evento.
TraceLoggingLevel

Macro contenedora traceLogging que establece el nivel del evento
TraceLoggingOpcode

Macro contenedora traceLogging que establece el código de operación para el evento
TraceLoggingOptionGroup

Macro TraceLogging para su uso en TRACELOGGING_DEFINE_PROVIDER para especificar un grupo de proveedores.
TraceLoggingProviderEnabled

Macro TraceLogging para determinar si un consumidor de seguimiento está escuchando un evento de este proveedor.
TraceLoggingProviderId

Obtiene el identificador de proveedor de un proveedor traceLogging.
TraceLoggingRegister

Registra un proveedor traceLogging para que se pueda usar para registrar eventos.
TraceLoggingRegisterEx

Registra un proveedor traceLogging para que se pueda usar para registrar eventos, especificando una devolución de llamada de habilitación de ETW.
TraceLoggingSetInformation

Configura un proveedor traceLogging mediante una llamada a EventSetInformation.
TraceLoggingSocketAddress

Macro contenedora traceLogging que agrega un campo con una dirección de socket al evento.
TraceLoggingStruct

Macro contenedora traceLogging que agrega un campo que contiene otros campos al evento.
TraceLoggingUnregister

Anula el registro de un proveedor traceLogging.
TraceLoggingValue

Macro contenedora traceLogging para C++ que agrega un campo con un tipo deducido automáticamente al evento.
TraceLoggingWrite

Emite un evento TraceLogging.
TraceLoggingWriteActivity

Emite un evento TraceLogging con identificadores de actividad especificados.