Я пытаюсь определить несколько пользовательских событий просмотра событий. Я следовал инструкциям в 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 в редакторе я четко вижу там свои строки. Буду признателен за любые предложения по этому вопросу.