Windows の EventLog でイベントIDをエラーコードのようにして
メッセージは別ファイルで管理とかしてみたく調べたら、まぁいろいろ
Web に情報はあり、mc.exe と rc.exe を使えば人間が書いた定義を
コンパイルしてくれることはわかった。
しかしながら、.Net の EventLog.WriteEvent() の引数である
EventInstance クラスに指定する instanceId と 所謂イベントID
と mc ファイルに書く MessageId は全部イコールかと思ったら違っ
てた。おそらくイベントID と MessageId は同じ。
じゃ instanceId はなんだろうと思うと、mc.exe でできたヘッダ
ファイルに親切なコメントがあった。 以下の通り。
結局 instanceId の下位 16bit がイベントIDということ。
以下の「R」は予約されていてよくわからんが常に 0 の模様。
「C」は customer bit というものらしいがようわからん。
MS が作ったもの以外はビット立てろということ?まぁ、mc.exe の -c
でこのビットを立てれられるらしいが…よくわからん。
// Values are 32 bit values laid out as follows:
//
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
// +---+-+-+-----------------------+-------------------------------+
// |Sev|C|R| Facility | Code |
// +---+-+-+-----------------------+-------------------------------+
//
// where
//
// Sev - is the severity code
//
// 00 - Success
// 01 - Informational
// 10 - Warning
// 11 - Error
//
// C - is the Customer code flag
//
// R - is a reserved bit
//
// Facility - is the facility code
//
// Code - is the facility's status code
0 件のコメント:
コメントを投稿