У меня есть приложение MFC, которое считывает систему (т.е. Application/System/Security) журналы событий в Windows Server 2008 R2 в среде WOW64. У меня возникла проблема с std SDK :: ReadEventLog() функция в Windows Server 2008 R2. Ниже я предоставил фрагмент кода, но тот же код/API отлично работает в среде Windows XP WOW6 x64. Код ошибки «87» относится к «Параметр неверен», но, по моему мнению, параметры, которые я передал в функцию :: ReadEventLog(), выглядят правильно.Ошибка API ReadEventLog() с кодом ошибки 87 в Windows Server 2008 R2 при чтении журналов событий приложений/систем/безопасности из системы
[Код]
// 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) Каковы неправильные параметры. б) Является ли их другим способом читать журналы событий.
Заранее благодарен.
- Ganesh
Я должен отметить, я получаю этот параметр ошибки 87, даже при использовании SEQUENTIAL_READ, как это было предложено статьей, используя код здесь http://msdn.microsoft.com/en-us/library/bb427356(v=vs.85).aspx для Windows 8.1 x64. –