Событие на основе манифеста не будет принимать данные события

Я пытаюсь записать событие в журнал событий Windows. Все отлично работает, за исключением одного: я не могу получить данные о событии для отображения в журнале событий при записи события в него.

Вот копия моего манифеста:

        <?xml version="1.0"?>
<instrumentationManifest xsi:schemaLocation="http://schemas.microsoft.com/win/2004/08/events eventman.xsd" xmlns="http://schemas.microsoft.com/    win/2004/08/events" xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:trace="http://schemas.microsoft.com/win/2004/08/events/trace">
<instrumentation>
<events>
<provider
name="OperationFilter"guid="{B7FB08C2-AB1B-448F-BFE0-FB09BEF3659D}"symbol="OPERATION_FILTER"resourceFileName="C:\Program Files\TestBindParameters\TestBindParameters.exe"messageFileName="C:\Program Files\TestBindParameters\TestBindParameters.exe">
<events>
<event
symbol="OPERATION_DB_ERROR"value="1"version="0"channel="Operation-Filter-Admin"level="win:Error"message="$(string.OperationFilter.event.1.message)"template="Operation-Filter-Messages"></event>
</events>
<levels></levels>
<channels>
<channel
name="Operation-Filter-Admin"chid="Operation-Filter-Admin"symbol="OPERATION_FILTER_ADMIN"type="Admin"enabled="true"></channel>
</channels>
<templates>
<template tid="Operation-Filter-Messages">
<data name="ErrorMessage" inType="win:UnicodeString"></data>
</template>
</templates>
</provider>
</events>
</instrumentation>
<localization>
<resources culture="en-US">
<stringTable>
<string id="level.Error" value="Error"></string>
<string id="OperationFilter.event.1.message" value="There was an error interacting with the database during an operation."></string>
</stringTable>
</resources>
</localization>
</instrumentationManifest>

и вот функция, которая отвечает за запись в журнал событий:

DWORD writeToEventLog(LPWSTR message)
{
DWORD status = ERROR_SUCCESS;
REGHANDLE RegistrationHandle = NULL;
EVENT_DATA_DESCRIPTOR Descriptors[1];

status = EventRegister(
&OPERATION_FILTER,
NULL,
NULL,
&RegistrationHandle
);

std::wcout << L"message: " << message << std::endl;

if (status != ERROR_SUCCESS)
{
return status;
}

EventDataDescCreate(
&Descriptors[0],
message,        //<----this won't show up even though I add it here
sizeof(wchar_t) * (wcslen(message) + 1)
);

status = EventWrite(
RegistrationHandle,
&OPERATION_DB_ERROR,
1,
&Descriptors[0]
);

if (status != ERROR_SUCCESS)
{
std::wcout << L"Unable to write to event log" << std::endl;
}

EventUnregister(RegistrationHandle);
return status;
}

Я добавил комментарий к данным о событии, которые хотел бы сохранить. Каждый раз, когда я вызываю вышеуказанный метод, я фактически получаю событие, записанное в журнал Windows, но с пустыми данными события. Строка сообщения, которая передается в функцию, не отображается под данными события, когда я просматриваю эти события в журнале событий Windows. Что мне здесь не хватает?

Я сослался на следующий пример онлайн нашел Вот. Я просто упускаю что-то совершенно очевидное?

0

Решение

Поэтому я ответил на свой вопрос здесь. Я забыл на самом деле скопировать мой файл в соответствующее место. Если вы собираетесь это сделать, вы ДОЛЖНЫ быть уверены, что правильно скопировали файл в местоположения resourceFileName и messageFileName. В противном случае вы получите неожиданное поведение от средства просмотра событий.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector