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
,wmain
DllMain
, oDriverEntry
), 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:
- TraceLogging
- Macros contenedoras traceLogging
- TraceLoggingWrite
- TRACELOGGING_DECLARE_PROVIDER
- TRACELOGGING_DEFINE_PROVIDER
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. |