Windows 2000 コンピュータで、アプリケーションログに以下のようなイベントが記録される場合がある。
種類 | : | 警告 |
ソース | : | EvntAgnt |
イベント ID | : | 3006 |
説明 | : | ログイベントレコードの読み取り中にエラーが発生しました。指定されたハンドルは 654321 です。ReadEventLog からのリターンレコードは 1500 です。 |
種類 | : | エラー |
ソース | : | EvntAgnt |
イベント ID | : | 3005 |
説明 | : | ログファイルの終わりの配置エラー - ログの終わりの検出に失敗しました。指定されたハンドルは 654321 です。ReadEventLog からのリターンレコードは 1500 です。 |
種類 | : | 警告 |
ソース | : | EvntAgnt |
イベント ID | : | 3001 |
説明 | : | ログファイルは末尾に配置されませんでした。 |
これらのイベントは、SNMP 拡張エージェントである EvntAgnt が SNMP サービス起動時にイベントログの読み込みを行った際に、イベント中に見られるリターンコード 1500(ERROR_EVENTLOG_FILE_CORRUPT)のエラーが発生したことを示す。EvntAgnt は、イベントログにイベントが記録された際に、SNMP トラップを発生させるための SNMP 拡張エージェントであり、Windows 2000 では簡易ネットワーク管理プロトコル(SNMP)をインストールすると自動的に追加されるモジュールである。
ソースが EvntAgnt、リターンコードが 1500 のエラーが発生する原因としては、以下のものが考えられる。
1. | イベントログファイルが破損している |
2. | EvntAgnt が、イベントログファイルの読み書きを行った際に、特定のタイミングで別のユーザー/システム/アプリケーションがイベントの削除を行った |
3. | EvntAgnt が、イベントログファイルの読み書きを行った際に、特定のタイミングで別のユーザー/システム/アプリケーションがイベントの書き込みを行った |
これらのイベントが、SNMP サービス起動時に毎回記録されるような場合には、上記 1. に該当すると考えられ、その場合にはイベントログの初期化を行う必要がある。一方、毎回記録されない場合には上記 2. または 3. が原因であると考えられ、まれに発生する一時的な現象であり、これらのイベントが記録されてもシステムに悪影響はない。
○ 対処方法
リターンコード 1500 は、ERROR_EVENTLOG_FILE_CORRUPT、つまりイベントログが壊れているというステータスコードであるが、上記のようにこのコードが返されてもイベントログが破損していていることを意味しないことがある。以下の方法で、イベントログが破損しているか確認することができる。
・ | イベントビューアを用いてイベントログが正しく開けるか確認を行う |
・ | EvntAgnt がイベントログを読み込む際に使用する ReadEventlog 関数を使用して、イベントログの読み込みを行い、正常に読み込みが完了する確認する。Windows 2000 リソースキットに含まれる elogdmp.exe は、ReadEventlog 関数を使用してイベントログの読み込みを行うため、これを用いることでも確認が可能である。 |
【参照】 マイクロソフト 技術情報 836843