我有一个MFC应用程序,它在WOW64环境中的Windows Server 2008 R2上读取系统(即应用程序/系统/安全)事件日志。我在 Windows Server 2008 R2 中遇到了std SDK :: ReadEventLog() 功能的问题。下面我提供了代码片段,但相同的代码/ API在Windows XP WOW64& x64环境。错误代码'87'指的是“参数不正确”但是根据我传递给 :: ReadEventLog()函数的参数似乎是正确的。
[代码]
// BUFFERSIZE。
const int BUFFER_SIZE = 1024 * 10
BYTE l_bBufferSize [BUFFER_SIZE];
EVENTLOGRECORD * l_pEvntLogRecord = NULL;
l_pEvntLogRecord =(EVENTLOGRECORD *)& l_bBufferSize; :: SetLastError(0);
/ * 调整“计数器”以读取日志。 'l_nReadRecordIndex'与列表控件映射,例如在key down上,'l_nReadRecordIndex'设置为“GetCountPerPage()+ 1”这是一种情况,因为它们的情况很多。 * /
DWORD l_dwLogCounter =(GetTotalNumberOfRecords() - l_nReadRecordIndex)+ 1;
//按照“nCntToReadRecords”读取日志。
for(l_dwLogCounter; l_nNoOfRecTobeRead< = nCntToReadRecords; l_dwLogCounter--,l_nNoOfRecTobeRead ++) {
//获取实际位置以供阅读。
if(0!= :: ReadEventLog(m_hEventLogHandle,EVENTLOG_SEEK_READ | EVENTLOG_FORWARDS_READ,
l_dwLogCounter,l_pEvntLogRecord,BUFFER_SIZE,
& l_dwReadBytes,& l_dwNeedBytes))
{
DWORD l_dwErrCode = 0;
l_dwErrCode = ::GetLastError(); //87 is returned
return FALSE
}
}
//数据填充代码
如果有人知道类似的问题或在类似的问题上工作,请告诉我解决方案。请参考上面的代码片段,让我知道以下内容:a)有什么不正确的参数。 b)他们是否有其他方式来阅读事件日志。
提前致谢。
- 内甚