在读取系统中的应用程序/系统/安全事件日志时,Windows Server 2008 R2上的ReadEventLog()API失败并显示错误代码87

我有一个MFC应用程序,它在Windows上读取系统(即应用程序/系统/安全)事件日志Server 2008 R2在WOW64环境中。我面临一个问题与标准的SDK :: ReadEventLog()函数在Windows Server 2008 R2。下面我提供了代码片段,但是相同的代码/ API在Windows XP WOW64 & x64环境中完美工作。错误代码'87'是指“参数不正确”,但根据我传递给:: ReadEventLog()函数的参数似乎是正确的。在读取系统中的应用程序/系统/安全事件日志时,Windows Server 2008 R2上的ReadEventLog()API失败并显示错误代码87

[代码]

// 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'与列表控件映射,例如,在按键关闭时,'l_nReadRecordIndex'被设置为“GetCountPerPage()+ 1”,这是一种情况,因为它们很多情况。 */

DWORD l_dwLogCounter =(GetTotalNumberOfRecords() - l_nReadRecordIndex)+ 1;

//根据“nCntToReadRecords”读取日志。

为(l_dwLogCounter; l_nNoOfRecTobeRead < = nCntToReadRecords; l_dwLogCounter--,l_nNoOfRecTobeRead ++){

//获取实际位置读取。

如果(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)他们是否有其他方式来阅读事件日志。

在此先感谢。

- 加尼甚

回答:

这是一个错误,请检查MS的KB此条http://support.microsoft.com/kb/177199

以上是 在读取系统中的应用程序/系统/安全事件日志时,Windows Server 2008 R2上的ReadEventLog()API失败并显示错误代码87 的全部内容, 来源链接: utcz.com/qa/265680.html

回到顶部