4#include <TraceLoggingProvider.h>
5#pragma comment(lib, "Advapi32.lib")
15 etw_provider_ref_t provider_ref;
18etw_provider_t *TRACE_ETW_UTIL_API
19 etw_provider_init(etw_provider_ref_t provider_ref)
21 etw_provider_t *handle;
24 if (provider_ref == NULL)
29 handle = (etw_provider_t *)malloc(
sizeof(etw_provider_t));
35 handle->provider_ref = provider_ref;
37 status = TraceLoggingRegister(provider_ref);
51static void write_trace_event(etw_provider_ref_t ref,
int level,
52 const char *service,
const char *message)
59 TraceLoggingWrite(ref,
"Trace",
61 TraceLoggingString(service,
"Service"),
62 TraceLoggingString(message,
"Message"));
65 TraceLoggingWrite(ref,
"Trace",
67 TraceLoggingString(service,
"Service"),
68 TraceLoggingString(message,
"Message"));
71 TraceLoggingWrite(ref,
"Trace",
73 TraceLoggingString(service,
"Service"),
74 TraceLoggingString(message,
"Message"));
77 TraceLoggingWrite(ref,
"Trace",
79 TraceLoggingString(service,
"Service"),
80 TraceLoggingString(message,
"Message"));
83 TraceLoggingWrite(ref,
"Trace",
85 TraceLoggingString(service,
"Service"),
86 TraceLoggingString(message,
"Message"));
95 TraceLoggingWrite(ref,
"Trace",
97 TraceLoggingString(message,
"Message"));
100 TraceLoggingWrite(ref,
"Trace",
101 TraceLoggingLevel(2),
102 TraceLoggingString(message,
"Message"));
105 TraceLoggingWrite(ref,
"Trace",
106 TraceLoggingLevel(3),
107 TraceLoggingString(message,
"Message"));
110 TraceLoggingWrite(ref,
"Trace",
111 TraceLoggingLevel(4),
112 TraceLoggingString(message,
"Message"));
115 TraceLoggingWrite(ref,
"Trace",
116 TraceLoggingLevel(5),
117 TraceLoggingString(message,
"Message"));
123int TRACE_ETW_UTIL_API
124 etw_provider_write(etw_provider_t *handle,
int level,
125 const char *service,
const char *message)
127 if (handle == NULL || message == NULL)
132 write_trace_event(handle->provider_ref, level, service, message);
137void TRACE_ETW_UTIL_API
138 etw_provider_dispose(etw_provider_t *handle)
145 TraceLoggingUnregister(handle->provider_ref);
ETW (Event Tracing for Windows) ヘルパーライブラリ。