[NTOSKRNL:CC] Added CcSetAdditionalCacheAttributesEx
This commit is contained in:
parent
5ad16dc888
commit
cfb3362f1e
@ -53,8 +53,54 @@ 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
|
||||||
NTAPI
|
NTAPI
|
||||||
|
Loading…
Reference in New Issue
Block a user