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