На Системном событии журнал является событием со следующими деталями:
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 успешно выполняется. Но это не то, что запись журнала событий содержит... :(
Никакие документы, которые я могу найти, не обсуждают это вообще (другой, что описание идентификационного формата, который показывает ошибочную/серьезность/средства/коды биты).
Как и вы, я нигде не могу найти это задокументировано, но похоже, что средство просмотра событий отображает элемент EventType
структуры EVENTLOGRECORD
в биты Severity идентификатора таблицы сообщений.
Так, например, событие 7035 диспетчера управления службами относится к типу «Информация», которое сопоставляется со значением 1 Уровень серьезности , что дает идентификатор сообщения 0x40001B7B, который действительно является текстом, отображаемым средством просмотра событий из netevent. .dll: Служба% 1 успешно отправила элемент управления% 2.
Аналогичным образом, событие 7000 имеет тип «Ошибка», сопоставление с Уровень серьезности 3 и идентификатор сообщения 0xC0001B58: Не удалось запустить службу% 1 из-за следующей ошибки:% n% 2
Конечно, это не совсем соответствует вашему примеру; Вы уверены, что написали свои нули и единицы в нужном месте?