Считываются сообщения из журнала без проблем, однако когда пытаюсь привести их к удобочитаемому виду с помощью FormatMessage функция возвращает ошибку ERROR_INVALID_PARAMETER. Какой параметр неверный я так и не смог найти, вроде-как все правильные

Вот исходник процедуры, помогите плз. найти ошибку.
int GetEventLogState()
{
EVENTLOGRECORD *pEventBuff;
BYTE bBuffer[BUFFER_SIZE];
DWORD BytesRead, Needed, ReadResult, OldestRec, dwArgumentOffset;
pEventBuff = (EVENTLOGRECORD *) &bBuffer;
char *ArgStr = (char*)NULL;
HANDLE hEventLog=OpenEventLog(ServerName,"System");
if (hEventLog!=NULL)
{
cout<<"Event log succesfully opened"<<endl;
GetOldestEventLogRecord(hEventLog,&OldestRec);
ReadResult=ReadEventLog(hEventLog,EVENTLOG_SEEK_READ | EVENTLOG_FORWARDS_READ, OldestRec, pEventBuff, BUFFER_SIZE, &BytesRead, &Needed);
va_list *ArgList;
ArgList = new va_list [pEventBuff->NumStrings];
dwArgumentOffset = pEventBuff->StringOffset;
for (int i=0;i<pEventBuff->NumStrings;i++)
{
ArgList[i] = (LPSTR)((LPBYTE)pEventBuff + dwArgumentOffset);
dwArgumentOffset += strlen(ArgList[i]);
}
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER ||
FORMAT_MESSAGE_FROM_HMODULE ||
FORMAT_MESSAGE_FROM_SYSTEM ||
FORMAT_MESSAGE_ARGUMENT_ARRAY,
hModule,
pEventBuff->EventID,
0,
ArgStr, 0, ArgList );
cout<<"Last Error - "<<GetLastError()<<endl;
if (ArgStr!=NULL) cout<<"Event description: "<<ArgStr<<endl;
else cout<<"ArgStr is NULL"<<endl;
CloseEventLog(hEventLog);
}
else cout<<"Error opening Event log"<<endl;
return 0;
}