Пользовательские сообщения о событиях с драйвером NDIS

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

Вот что я сделал:

  • Создан входной файл для компилятора сообщений с кодами событий и соответствующими строками (по примеру драйвера WDK Serial).
  • Включен файл .rc, сгенерированный компилятором сообщений, в основной файл ресурсов драйвера (MyDriver.rc).
  • Включил заголовочный файл, сгенерированный компилятором сообщений, в соответствующий модуль драйвера.
  • Использовал NdisWriteErrorLogEntry API для записи событий с новыми идентификаторами из включенного файла заголовка.
  • В строку реестра Inf добавлен двоичный файл драйвера, идентифицирующий источники событий:

HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll; %%SystemRoot%%\System32\drivers\MyDriver.sys"
HKR, , TypesSupported,   0x00010001, 7

Все работает, кроме строк, отображаемых программой просмотра событий. Кажется, что он не распознает их и отображает "ресурс сообщения присутствует, но сообщение не найдено в строке/таблице сообщений" в описании события. Единственным существенным отличием от примера WDK является использование NDIS API вместо универсального WDM API. Я также почти уверен, что текст включен в двоичный файл драйвера, поскольку при открытии файла .sys в редакторе я четко вижу там свои строки. Буду признателен за любые предложения по этому вопросу.


person SomeWittyUsername    schedule 05.08.2016    source источник
comment
Не могу поверить, что никто ничего не может сказать по этому поводу...   -  person SomeWittyUsername    schedule 14.08.2016


Ответы (1)


Ну вот спустя полтора года нашел проблему. По-видимому, синтаксический анализатор строки реестра средства просмотра событий не может правильно извлечь второе имя файла сообщений, если перед ним есть пробел.

Таким образом, чтобы исправить это, все, что нужно, это удалить пробел. То есть вместо:

HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll; %%SystemRoot%%\System32\drivers\MyDriver.sys"

Напишите в инф файле:

HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll;%%SystemRoot%%\System32\drivers\MyDriver.sys"
person SomeWittyUsername    schedule 08.01.2018