alcyone/NTOSKRNL/CC/ccinternal.hpp

51 lines
1.1 KiB
C++

/*
* PROJECT: Alcyone System Kernel
* LICENSE: BSD Clause 3
* PURPOSE: Cache Controller:: Lazy Writer
* NT KERNEL: 5.11.9360
* COPYRIGHT: 2023-2029 Dibymartanda Samanta <>
*/
#include "debug.hpp"
#include <ntoskrnl.hpp>
BOOL
NTAPI
IsGoToNextMap(IN PSHARED_CACHE_MAP SharedMap, IN ULONG TargetPages)
{
BOOLEAN Skip = FALSE;
if (SharedMap->Flags & (0x20 | 0x800))
return TRUE;
if ((SharedMap->OpenCount || SharedMap->DirtyPages) && SharedMap->FileSize.QuadPart)
{
Skip = TRUE;
}
if (!SharedMap->DirtyPages && Skip)
return TRUE;
if (SharedMap->Flags & SHARE_FL_WAITING_TEARDOWN)
return FALSE;
if (!TargetPages && Skip)
return TRUE;
SharedMap->LazyWritePassCount++;
if ((SharedMap->LazyWritePassCount & 0xF) && (SharedMap->Flags & SHARE_FL_MODIFIED_NO_WRITE) &&
CcCapturedSystemSize != MmSmallSystem && SharedMap->DirtyPages < 0x40 && Skip)
{
return TRUE;
}
if ((SharedMap->FileObject->Flags & 0x8000) && SharedMap->OpenCount &&
CcCanIWrite(SharedMap->FileObject, 0x40000, 0, 0xFF) && Skip)
{
return TRUE;
}
return FALSE;
}