以下代码示例读取应用日志文件中的所有记录,并显示每个事件日志条目的事件标识符,事件类型和源名称。
EVENTLOGRECORD *pevlr;
BYTE bBuffer[BUFFER_SIZE];
DWORD dwRead, dwNeeded, cRecords, dwThisRecord = 0;
/ *打开应用程序事件日志。*/
h = OpenEventLog(NULL, /* uses local computer */
"Application"); /* source name */
if (h == NULL)
ErrorExit("could not open Application event log");
pevlr = (EVENTLOGRECORD *) &bBuffer;
/*
*打开事件日志定位文件指针
*在日志开头的这个句柄。
*
*顺序读取记录到那里
*不再
*/
while(ReadEventLog(h,/ * event log handle * /
EVENTLOG_FORWARDS_READ | / *前瞻* /
EVENTLOG_SEQUENTIAL_READ,/ *顺序读取* /
0,/ *忽略顺序读取* /
pevlr,/ *缓冲区地址* /
BUFFER_SIZE,/ *缓冲区大小* /
& dwRead,/ *读取的字节数*
& dwNeeded))下一个记录中的{/ *字节* /
while(dwRead > 0){
/*
*打印事件ID,类型和源名称。
源代码刚刚过去了
*正式结构。
*/
printf(“%02d事件ID:0x%08X”,
dwThisRecord++, pevlr->EventID);
printf(“EventType:%d Source:%s \\ n”,
pevlr- > EventType,(LPSTR)((LPBYTE)pevlr +
sizeof(EVENTLOGRECORD)));
dwRead -= pevlr->Length;
pevlr = (EVENTLOGRECORD *)
((LPBYTE) pevlr + pevlr->Length);
}
pevlr = (EVENTLOGRECORD *) &bBuffer;
}
CloseEventLog(h);