イベントログの読み込み
すみません。
教えてくださいませ。
早速ですが、Vc++でイベントログを取得するプログラムを作成しているのですが、うまくいきません。
[ソース]
DWORD BufSize;
DWORD ReadBytes;
DWORD NextSize;
DWORD EventNum;
BOOL bResult;
HANDLE hEventLog = NULL;
HGLOBAL hDIB;
try{
/* イベントログのオープン */
hEventLog = ::OpenEventLog(NULL, "Application");
if(hEventLog == NULL){
eMsg = "ファイルオープンエラー";
return -1;
}
/* イベントログの最大数 */
bResult = GetNumberOfEventLogRecords(hEventLog, &EventNum);
for(;;){
//最大サイズを取得
BufSize = 1;
hDIB = GlobalAlloc(GMEM_FIXED, BufSize);
bResult = ::ReadEventLog(hEventLog,EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,0,hDIB,BufSize,&ReadBytes,&NextSize);
if(!bResult && GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
eMsg = "ファイルリードエラー";
CloseEventLog(hEventLog);
GlobalFree(hDIB);
return -1;
}
GlobalFree(hDIB);
hDIB = NULL;
BufSize = NextSize;
hDIB = ::GlobalAlloc(GMEM_FIXED, BufSize);
bResult = ::ReadEventLog(hEventLog,EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,0,hDIB,BufSize,&ReadBytes,&NextSize);
if(!bResult){
eMsg = "ファイルリードエラー";
CloseEventLog(hEventLog);
GlobalFree(hDIB);
return -1;
}
}
}catch(CException* e){
if(hEventLog != NULL){
eMsg = (LPCTSTR)e;
CloseEventLog(hEventLog);
}
}
GlobalFree(hDIB);
return 1;
[内容]
正常にコンパイルはするのですが、実行後エラーが出力されます。"ファイルリードエラー"(エラー文)
メモリの確保がうまくいっていないのでしょうか?
補足
Adminiユーザーでログインしてるんですけどね。