系统事件日志中包含以下详细信息的事件:
Source: Kernel-General
Event ID: 1
Details: The system time has changed to 2010-07-17T02:58:20.285000000Z from 2010-07-17T02:58:20.285868600Z.
EVENTLOGRECORD 的 EventID 字段也有一个 1,因此它与我们在事件日志查看器中看到的相匹配。
到目前为止,一切都很好。
问题是,当您查看 advapi32.dll 时,这是该源从中获取消息的地方,您会看到:
ID:01000001
String: The system time has changed to %1 from %2.
事件日志查看器如何神奇地知道将这些额外的位添加到 ID 以找到正确的字符串?并非所有事件字符串都具有该高位,有些还设置了其他高位。
使用 1 调用 FormatMessage 失败。用 x01000001 调用它成功。但这不是事件日志记录包含的内容...... :(
我找不到任何文档来讨论这个问题(除了描述显示错误/严重性/设施/代码位的 ID 格式之外)。