2016-08-05 59 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" 
相關問題