VOID LogfClose(PLOGFILE LogFile, BOOL ForceClose) { if (LogFile == NULL) return; if ((ForceClose == FALSE) && (LogFile->Permanent == TRUE)) return; RtlAcquireResourceExclusive(&LogFile->Lock, TRUE); FlushFileBuffers(LogFile->hFile); CloseHandle(LogFile->hFile); LogfListRemoveItem(LogFile); RtlDeleteResource(&LogFile->Lock); HeapFree(MyHeap, 0, LogFile->LogName); HeapFree(MyHeap, 0, LogFile->FileName); HeapFree(MyHeap, 0, LogFile->OffsetInfo); HeapFree(MyHeap, 0, LogFile); return; }
VOID LogfClose(PLOGFILE LogFile, BOOLEAN ForceClose) { if (LogFile == NULL) return; if (!ForceClose && LogFile->Permanent) return; RtlAcquireResourceExclusive(&LogFile->Lock, TRUE); LogfListRemoveItem(LogFile); ElfCloseFile(&LogFile->LogFile); NtClose(LogFile->FileHandle); RtlFreeHeap(GetProcessHeap(), 0, LogFile->LogName); RtlDeleteResource(&LogFile->Lock); RtlFreeHeap(GetProcessHeap(), 0, LogFile); return; }