Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
ВнизКто-нибудь работал с 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c