システムイベントログには、次の詳細が記載されたイベントがあります。
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形式を説明しているドキュメントを除く)。