Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как добраться до описания ошибки в EVentLog

38K
19 февраля 2009 года
grebenyk
15 / / 19.02.2009
Доброго времени суток, уважаемые професионалы, нашел информацию как добраться до EVentLog (http://www.sources.ru/cpp/faqs/71.htm , http://msdn.microsoft.com/en-us/library/bb...56(VS.85).aspx), соответственно знаю как добраться до EventID, но встал вопрос как показать описание ошибки (типа того , что когда мы щелкаем в просмотрщике событий дважды на интересующую нас ошибку и видим что она означает)?
Я уже попробовал вот так

FormatMessage(
FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_FROM_SYSTEM,
ghResDll, // Handle to the DLL file
pevlr->EventID, // Event message identifier
MAKELANGID(LANG_RUSSIAN, SUBLANG_ENGLISH_US),
(LPTSTR) &lpMsgBuf1, // Buffer that contains message
BUFFER_SIZE, // Size of buffer
NULL);

те как показано в msdn/
Подставив FormatMessage я стал получать сообщения , но к сожалению не так как необходимо.
Поясню:
Есть скажем ошибка 6008- "предыдущее завершение работы системы в __ __ было нежиданным"
Так все таки может это не тот путь? Надо как-то что-то другое задействовать?
"шина ввода.вывода была инициализированна заново",
Стало заградоваться мысль что я вообще ни тем пользуюсь. (да, DLL я подключал как ets.dll,msi.dll )
Заранее спасибо
38K
26 февраля 2009 года
grebenyk
15 / / 19.02.2009
привожу текст


stek.clear();

Memo1->Clear();
Memo2->Clear();
if( OpenDialog1->Execute())
{ Form1->Caption=OpenDialog1->FileName;
HANDLE h;

EVENTLOGRECORD *pevlr;
BYTE bBuffer[BUFFER_SIZE];
//char lpMsgBuf1[BUFFER_SIZE];
// LPVOID lpMsgBuf1[BUFFER_SIZE];

DWORD dwRead, dwNeeded, cRecords, dwThisRecord;
char LogName[15]; //els.dll");// SYSTEM32\\

// Application->MessageBoxA("2","ерор");


TDateTime t1,t2,t3;
t1=StrToDateTime("01.01.1970 00:00:00");
double con=3600*24;

strcpy(LogName, (OpenDialog1->FileName). c_str());
try{
h=OpenBackupEventLog(NULL,LogName);
}
catch ( ... )
{
}


if (h == NULL)
{
Application->MessageBoxA("Неудачное подключение файла *.evt","ерор");

}
else
{
pevlr = (EVENTLOGRECORD *) &bBuffer;
GetOldestEventLogRecord(h, &dwThisRecord);
int i=0;
while (
ReadEventLog(h, // event log handle
EVENTLOG_FORWARDS_READ | // reads forward
EVENTLOG_SEQUENTIAL_READ, // sequential read
0, // ignored for sequential reads
pevlr, // pointer to buffer
BUFFER_SIZE, // size of buffer
&dwRead, // number of bytes read
&dwNeeded)) // bytes in next record
{

while (dwRead > 0)
{ i++;
t2=double(pevlr->TimeWritten)/con;
t3=t1+t2;

_Data D;
LPCTSTR lpSourceName;
wchar_t *sourceName=L"MsiInstaller";
D.DT=t3;
// PChar(FCurrentRecord) + PEventLogRecord(FCurrentRecord)^.StringOffset;
D.str=(LPSTR) ((LPBYTE) pevlr + sizeof(EVENTLOGRECORD));
D.type_error=pevlr->EventType;
D.EvID=pevlr->EventID;// & 0xFFFF;
D.str_messag="не найдено";


{

va_list *Arguments;
CHAR lpMsgBuf1[BUFFER_SIZE];
CHAR* Args;

// /*зона повышенного риска

AnsiString aaaa=dll_point(0,D.str);
//Application->MessageBoxA(aaaa.c_str(),"");
HANDLE ghResDll=LoadLibrary(aaaa.c_str());//"C:\\windows\\System32\\netevent.dll");
if(!ghResDll)
{ AnsiString ss="Неудачное подключение файла dll"+aaaa+"\n "+D.str ;
//Application->MessageBoxA(ss.c_str(),"ерор");
}
else
{
FormatMessage(
FORMAT_MESSAGE_FROM_HMODULE
|FORMAT_MESSAGE_FROM_SYSTEM
// |FORMAT_MESSAGE_ALLOCATE_BUFFER
|FORMAT_MESSAGE_ARGUMENT_ARRAY,

/*
FORMAT_MESSAGE_FROM_HMODULE
| FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_ARGUMENT_ARRAY
,*/
(LPCVOID)ghResDll,
pevlr->EventID,
MAKELANGID(LANG_RUSSIAN,SUBLANG_ENGLISH_US ),
(LPTSTR) &lpMsgBuf1,
sizeof(lpMsgBuf1),
NULL);
D.str_messag= (LPTSTR) lpMsgBuf1;

}

// dll
FreeLibrary(ghResDll);

}
stek.push_back(D);

dwRead -= pevlr->Length;
pevlr = (EVENTLOGRECORD *)((LPBYTE) pevlr + pevlr->Length);
}
Label5->Caption="Колличество событий:"+IntToStr(i) ;
pevlr = (EVENTLOGRECORD *) &bBuffer;

}

CloseEventLog(h);


}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог