[NTOSKRNL:CC] Added CcSetAdditionalCacheAttributesEx

This commit is contained in:
Dibyamartanda Samanta 2024-05-17 16:55:50 +02:00
parent 5ad16dc888
commit cfb3362f1e

View File

@ -53,7 +53,53 @@ Void NTAPI CcSetAdditionalCacheAttributes(
KeReleaseQueuedSpinLock(LockQueueMasterLock, oldlock); KeReleaseQueuedSpinLock(LockQueueMasterLock, oldlock);
} }
VOID NTAPI CcSetAdditionalCacheAttributesEx(PFILE_OBJECT FileObject,
UINT Flags)
{
PSHARED_CACHE_MAP sharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
KIRQL irqlDisableWriteBehind = {0};
KLOCK_QUEUE_HANDLE lockQueueHandle = {0};
BOOL disableReadAhead = (Flags & 2) != 0;
if (sharedCacheMap == nullptr||!sharedCacheMap->OpenCount)
DBGPRINT("Invalid Shared Cache Map or Open Count")
return;
if ((sharedCacheMap->Flags & 0x2000) == 0)
CcSetAdditionalCacheAttributes(FileObject, disableReadAhead, (Flags & 4) != 0);
KeAcquireInStackQueuedSpinLockAtDpcLevel(&sharedCacheMap->BcbLock, &lockQueueHandle);
if ((Flags & 1) != 0)
sharedCacheMap->Flags |= FLAG_DISABLE_WRITE_BEHIND;
else
sharedCacheMap->Flags &= ~FLAG_DISABLE_WRITE_BEHIND;
if ((Flags & 8) != 0)
{
sharedCacheMap->Flags |= FLAG_DISABLE_LAZY_WRITER;
}
else
{
if ((sharedCacheMap->Flags & FLAG_DISABLE_LAZY_WRITER) != 0)
sharedCacheMap->Flags |= FLAG_LAZY_WRITER_ACTIVE;
sharedCacheMap->Flags &= ~FLAG_DISABLE_LAZY_WRITER;
}
if ((Flags & 0x10) != 0)
sharedCacheMap->Flags |= FLAG_DISABLE_LAZY_WRITER_SCAN;
else
sharedCacheMap->Flags &= ~FLAG_DISABLE_LAZY_WRITER_SCAN;
if ((Flags & 0x20) != 0)
sharedCacheMap->Flags |= FLAG_DISABLE_METADATA_FLUSH;
else
sharedCacheMap->Flags &= ~FLAG_DISABLE_METADATA_FLUSH;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&lockQueueHandle);
}
VOID VOID