diff --git a/reactos/base/services/eventlog/file.c b/reactos/base/services/eventlog/file.c index a6ac99cbe0b..8acd365c06b 100644 --- a/reactos/base/services/eventlog/file.c +++ b/reactos/base/services/eventlog/file.c @@ -82,7 +82,7 @@ LogfInitializeNew(PLOGFILE LogFile) static NTSTATUS -LogfInitializeExisting(PLOGFILE LogFile) +LogfInitializeExisting(PLOGFILE LogFile, BOOL Backup) { DWORD dwRead; DWORD dwRecordsNumber = 0; @@ -264,27 +264,30 @@ LogfInitializeExisting(PLOGFILE LogFile) But for now limit EventLog size to just under 5K. */ LogFile->Header.MaxSize = 5000; - if (SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN) == - INVALID_SET_FILE_POINTER) + if (!Backup) { - DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); - return STATUS_EVENTLOG_FILE_CORRUPT; - } + if (SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN) == + INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + return STATUS_EVENTLOG_FILE_CORRUPT; + } - if (!WriteFile(LogFile->hFile, - &LogFile->Header, - sizeof(EVENTLOGHEADER), - &dwRead, - NULL)) - { - DPRINT1("WriteFile failed! %d\n", GetLastError()); - return STATUS_EVENTLOG_FILE_CORRUPT; - } + if (!WriteFile(LogFile->hFile, + &LogFile->Header, + sizeof(EVENTLOGHEADER), + &dwRead, + NULL)) + { + DPRINT1("WriteFile failed! %d\n", GetLastError()); + return STATUS_EVENTLOG_FILE_CORRUPT; + } - if (!FlushFileBuffers(LogFile->hFile)) - { - DPRINT1("FlushFileBuffers failed! %d\n", GetLastError()); - return STATUS_EVENTLOG_FILE_CORRUPT; + if (!FlushFileBuffers(LogFile->hFile)) + { + DPRINT1("FlushFileBuffers failed! %d\n", GetLastError()); + return STATUS_EVENTLOG_FILE_CORRUPT; + } } return STATUS_SUCCESS; @@ -380,7 +383,7 @@ LogfCreate(PLOGFILE *LogFile, if (bCreateNew) Status = LogfInitializeNew(pLogFile); else - Status = LogfInitializeExisting(pLogFile); + Status = LogfInitializeExisting(pLogFile, Backup); if (!NT_SUCCESS(Status)) goto fail;