windows - 使用 NDIS 驱动程序的自定义事件消息

标签 windows visual-c++ visual-studio-2015 driver ndis

我正在尝试定义一些自定义事件查看器事件。我一直按照 MSDN 和其他一些在线资源中的说明进行操作,但事件查看器找不到关联的文本数据。

这是我所做的:

  • 为带有事件代码和相关字符串的消息编译器创建了一个输入文件(遵循 WDK 串行驱动程序示例)。
  • 在主驱动程序资源文件(MyDriver.rc)中包含消息编译器生成的.rc 文件。
  • 在相关驱动模块中包含消息编译器生成的头文件。
  • 使用 NdisWriteErrorLogEntry API 从包含的头文件中写入带有新 ID 的事件。
  • 将驱动程序二进制文件添加到标识事件源的 Inf 注册表字符串中:

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

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

最佳答案

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

因此,为了修复它,只需要删除空格即可。即,而不是:

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"

关于windows - 使用 NDIS 驱动程序的自定义事件消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38790954/

相关文章:

php - 如何获取登录的用户名?

node.js - 如何在 Node.js(在 Windows 上)中将表情符号输出到控制台?

c++ - 使用基于 bool 值的两种方法之一调用方法时如何确保避免分支预测错误

windows - 如何在使用带有文件监视的堆栈进行构建之前清除控制台

c++ - << 未找到运算符和无法识别的转义序列

c# - 使用 Visual Studio 2013 构建 C/C++ DLL 并将其交付到 C# 应用程序中

azure - VS2015 NuGet无法安装Microsoft.WindowsAzure.ConfigurationManager或ServiceBus

c# - VS 2015 智能感知 : Exceptions Thrown not Previewed

c++ - 正则表达式工作很慢

windows - 硬件JPEG解压/Win32