Я хотел расширить свой журнал событий (отслеживание событий для Windows) дополнительным компонентом, в котором я просто хочу регистрировать строки. Я использую код, подобный следующему.
#include <Evntprov.h>
#include <evntrace.h>
#include <minwindef.h>
// {38F4122A-4D8C-465A-9EFC-F7E632A84ABF}
static const GUID MyApplicationGuid = { 0x38f4122a, 0x4d8c, 0x465a, { 0x9e, 0xfc, 0xf7, 0xe6, 0x32, 0xa8, 0x4a, 0xbf } };
REGHANDLE regHandle = nullptr;
EventRegister(MyApplicationGuid, nil, nil, ®Handle);
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L"Hello");
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L", ");
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L"world");
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L"!");
EventUnregister(regHandle);
Я зарегистрировал поставщика, который отображается правильно, и эти события являются частью файлов журнала etl как общие события. На данный момент все кажется в порядке, но когда я хочу добавить сообщение в виде столбца, я не могу видеть зарегистрированные строки, потому что они хранятся в двоичном элементе полезной нагрузки.
У меня есть способ определить событие/шаблон для форматирования трассировки, выполненной с помощью EventWriteString, в строку сообщения. Что-то вроде "%1"? (атрибут заголовка STRING_ONLY устанавливается автоматически.)