В системном журнале событий есть событие со следующими данными:
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 также имеет 1 для поля EventID, поэтому он соответствует тому, что мы видим в программе просмотра журнала событий.
Пока все хорошо.
Проблема в том, что когда вы смотрите на файл advapi32.dll, откуда этот источник получает сообщения, вы видите следующее:
ID:01000001
String: The system time has changed to %1 from %2.
Как программа просмотра журнала событий магически знает, как добавить эти дополнительные биты в идентификатор, чтобы найти правильную строку? Не все строки событий имеют этот верхний бит, а в некоторых установлены другие верхние биты.
Сбой вызова FormatMessage с 1. Вызов его с x01000001 успешно. Но это не то, что содержит запись в журнале событий ...: (
Нет документов, которые я могу найти, чтобы обсудить это вообще (кроме описания формата идентификатора, который показывает ошибки / серьезность / средство / биты кода).