2010-06-28 2 views
1

У меня есть приложение 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

ответ

3

Это ошибка, проверьте эту запись в КБ МС http://support.microsoft.com/kb/177199

+0

Я должен отметить, я получаю этот параметр ошибки 87, даже при использовании SEQUENTIAL_READ, как это было предложено статьей, используя код здесь http://msdn.microsoft.com/en-us/library/bb427356(v=vs.85).aspx для Windows 8.1 x64. –