Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.14;
Скачать: CL | DM;

Вниз

Кто-нибудь работал с ReadEventLog ?   Найти похожие ветки 

 
Севостьянов Игорь   (2001-11-14 11:58) [0]

При вызове функции ReadEventLog возникает ошибка - The parameter is incorrect. В чем проблема ?

Текст процедуры:

type
PEVENTLOGRECORD = ^EVENTLOGRECORD;
EVENTLOGRECORD = record
Length: DWORD;
Reserved: DWORD;
RecordNumber: DWORD;
TimeGenerated: DWORD;
TimeWritten: DWORD;
EventID: DWORD;
EventType: WORD;
NumStrings: WORD;
EventCategory: WORD;
ReservedFlags: WORD;
ClosingRecordNumber: DWORD;
StringOffset: DWORD;
UserSidLength: DWORD;
UserSidOffset: DWORD;
DataLength: DWORD;
DataOffset: DWORD;
end;

procedure ReadLogMessage;
const
EVENTLOG_SEQUENTIAL_READ = 1;
EVENTLOG_SEEK_READ = 2;
EVENTLOG_FORWARDS_READ = 4;
EVENTLOG_BACKWARDS_READ = 8;
MAX_PREFERRED_LENGTH = $FFFFFFFF;
var
hEventLog : THandle;
dwReadFlags,
dwRecordOffset,
nNumberOfBytesToRead: DWord;
lpBuffer: Pointer;//PEVENTLOGRECORD;
pnBytesRead,
pnMinNumberOfBytesNeeded: DWord;
lpUNCServerName,
lpSourceName: string;
begin
dwReadFlags := EVENTLOG_SEEK_READ;
dwRecordOffset := 0;
//lpBuffer := nil;
nNumberOfBytesToRead := MAX_PREFERRED_LENGTH; //255
pnBytesRead := 0;
pnMinNumberOfBytesNeeded := 0;

lpUNCServerName := "";
lpSourceName := "C:\WINNT\SYSTEM32\CONFIG\SYSEVENT.EVT";
GetMem(lpBuffer, nNumberOfBytesToRead);

hEventLog := OpenEventLog(PChar(lpUNCServerName), PChar(lpSourceName));
try
if hEventLog = 0 then RaiseWin32Error(GetLastError);
if not ReadEventLog(hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded) then
begin
CloseEventLog(hEventLog);
FreeMem(lpBuffer,nNumberOfBytesToRead);
RaiseWin32Error(GetLastError);
end;
finally
CloseEventLog(hEventLog);
FreeMem(lpBuffer,nNumberOfBytesToRead);
end;
end;


 
Tosov   (2001-11-14 23:48) [1]

А чего у тебя такой lpSourceName странный?
Вроде од должен быть Application или Security или System
Далее ..
pUNCServerName:PChar;
pUNCServerName:=nil; //Обычно так "называется" локальный компьютер

Закрывать одно и тоже 2 раза не очень хорошо
>CloseEventLog(hEventLog);

PS если нужно просмотреть backup журнала OpenBackupEventLog



 
Севостьянов Игорь   (2001-11-15 11:00) [2]

Уважаемый Tosov
Все что Вы написали интересно, но

pUNCServerName:PChar;

pUNCServerName:=nil;
hEventLog := OpenEventLog(lpUNCServerName, lpSourceName);
и
pUNCServerName:string;

pUNCServerName:="";
hEventLog := OpenEventLog( PChar(lpUNCServerName), lpSourceName);

Одно и тоже

И функция возвращает мне hEventLog, но даже после Ваших изменений ничего не изменилось (попробовали бы протестить процедуру у себя)
Насчет CloseEventLog(hEventLog) согласен, но это не актуально (правильно обработать можно всегда, по крайней мере загвоздка не в нем), а вот ReadEventLog(hEventLog, dwReadFlags, dwRecordOffset, lpBuffer, nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded) актуально !!!




Страницы: 1 вся ветка

Текущий архив: 2002.01.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
6-42537
Denys
2001-10-18 10:18
2002.01.14
Сшивка IP дейтограмм


1-42497
Victor
2001-12-25 19:40
2002.01.14
ColorDialog


3-42333
Марина
2001-12-10 11:07
2002.01.14
Скроллинг мыши


4-42617
Art
2001-10-31 13:19
2002.01.14
Как можно увидеть запущен ли exe?


7-42589
McSimm
2001-09-28 17:27
2002.01.14
Автоматическое определение настроек LAN для IE