ReadEventLog

機能
指定したイベントログからエントリを読み取る

Declare Function ReadEventLog Lib "advapi32.dll" Alias "ReadEventLogA" ( _
ByVal hEventLog As Long, ByVal dwReadFlags As Long, ByVal dwRecordOffset As Long, _
lpBuffer As EVENTLOGRECORD, ByVal nNumberOfBytesToRead As Long, _
pnBytesRead As Long, pnMinNumberOfBytesNeeded As Long) As Long

Declare Function ReadEventLog Lib "advapi32.dll" Alias "ReadEventLogA" ( _
ByVal hEventLog As Integer, ByVal dwReadFlags As Integer, ByVal dwRecordOffset As Integer, _
lpBuffer As EVENTLOGRECORD, ByVal nNumberOfBytesToRead As Integer, _
pnBytesRead As Integer, pnMinNumberOfBytesNeeded As Integer) As Integer

BOOL ReadEventLog(
HANDLE hEventLog,
DWORD dwReadFlags,
DWORD dwRecordOffset,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
DWORD *pnBytesRead,
DWORD *pnMinNumberOfBytesNeeded
);
引数
hEventLog

イベントログのハンドルを指定
dwReadFlags
ログの読み取り方法を指定する定数
dwRecordOffset
読み取り操作を開始するログエントリのレコード番号
dwReadFlags パラメータで EVENTLOG_SEEK_READ定数を指定しないと無視される
lpBuffer
(戻り値)イベントログから読み込んだデータを受け取るEVENTLOGRECORD構造体
nNumberOfBytesToRead
lpBufferのサイズ(バイト単位)
pnBytesRead
(戻り値)実際に読み込んだバイト数を受け取るLong型変数
pnMinNumberOfBytesNeeded
(戻り値)次のログエントリの読み取りに必要なバイト数を受け取るLong型変数
この数値は関数の呼び出しが失敗し、その直後にGetLastError()関数が
ERROR_INSUFFICIENT_BUFFER を返した場合だけ有効
戻り値
正常終了のとき            0以外
エラーのとき 0
備考
関数の呼び出しが成功すると、読み取ったレコード数によってエラーログの読み取り位置が調整される。
必ず整数個のイベントログレコードが読み取られる。
つまり、レコードの一部分だけが読み取られることはない。
dwReadFlagsの定数
Public Const EVENTLOG_SEQUENTIAL_READ = 1&            'dwRecordOffsetで指定するレコードから読み取る
Public Const EVENTLOG_SEEK_READ = 2&                  '同じハンドルを指定した ReadEventLog 関数の
                                                      '前回の呼び出しの続きから読み取り操作を行う。
                                                      'EVENTLOG_SEEK_READと同時にセットはできない

'複数のレコードを読み取ることができる場合、以下のフラグで順番を指定する
Public Const EVENTLOG_FORWARDS_READ = 4&              'ログを日付の古い順に読み取る
Public Const EVENTLOG_BACKWARDS_READ = 8&             'ログを日付の新しい方から順に読み取る