Пример #1
0
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;
}
Пример #2
0
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;
}