2016-08-05 90 views
3

我正在尝试定义一些自定义事件查看器事件。我一直在遵循MSDN和其他几个在线资源的说明,但事件查看器找不到相关的文本数据。使用NDIS驱动程序的自定义事件消息

这是我做了什么:

  • 创造了与事件代码和相关的字符串(以下WDK的串口驱动的例子)消息编译器的输入文件。
  • 包含消息编译器在主驱动程序资源文件(MyDriver.rc)中生成的.rc文件。
  • 包含消息编译器在相关驱动程序模块中生成的头文件。
  • 使用NdisWriteErrorLogEntry API从包含的头文件中用新ID编写事件。
  • 增加了驱动程序二进制到天道酬勤注册表字符串标识事件来源:

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

一切正常,除了通过事件查看器中的字符串显示。它似乎无法识别它们,并在事件描述中显示“消息资源存在,但消息未在字符串/消息表中找到”。 与WDK示例唯一明显的区别是使用NDIS API而不是通用WDM API。 我也很自信,文本包含在驱动程序二进制文件中,因为使用编辑器打开.sys文件时,我清楚地看到了我的字符串。 希望对此问题有任何建议。

+0

我不能相信没有人有任何关于这一问题的说... – SomeWittyUsername

回答

0

那么,一年半后,我发现了这个问题。显然,事件查看器注册表字符串解析器无法正确提取第二个消息文件名,如果它之前有空格。

因此,为了解决它,所有需要的是删除空白。即的,而不是:

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

写在inf文件:

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