[NTOSKRNL:CC] MDL Handler Refactored for using RAII
This commit is contained in:
parent
ac5f558605
commit
2300440e3d
@ -43,7 +43,6 @@ CcMdlWriteComplete2(IN PFILE_OBJECT FileObject,
|
|||||||
{
|
{
|
||||||
|
|
||||||
PLARGE_INTEGER FOffset = nullptr;
|
PLARGE_INTEGER FOffset = nullptr;
|
||||||
KIRQL CurrentIrql = {0};
|
|
||||||
NTSTATUS Exception = {0};
|
NTSTATUS Exception = {0};
|
||||||
PIO_STATUS_BLOCK IoStatus = nullptr;
|
PIO_STATUS_BLOCK IoStatus = nullptr;
|
||||||
|
|
||||||
@ -71,9 +70,9 @@ for( auto it = begin(MdlChain); it != end(MdlChain);++it)
|
|||||||
|
|
||||||
if (!(MdlChain->MdlFlags & 2) == 0))
|
if (!(MdlChain->MdlFlags & 2) == 0))
|
||||||
{
|
{
|
||||||
CurrentIrql = KeAcquireQueuedSpinLock(LockQueueMasterLock);
|
SpinLockGuard lockGuard(LockQueueMasterLock);
|
||||||
CcDecrementOpenCount(SharedCacheMap);
|
CcDecrementOpenCount(SharedCacheMap);
|
||||||
KeReleaseQueuedSpinLock(LockQueueMasterLock,CurrentIrql);
|
|
||||||
}
|
}
|
||||||
if (!NT_SUCCESS(Exception))
|
if (!NT_SUCCESS(Exception))
|
||||||
{
|
{
|
||||||
@ -191,9 +190,9 @@ InterlockedExchange64(&PrivateCachemap->BeyondLastByte2.Quadpart,FinalLength);
|
|||||||
/* Update Shared Cachemap Flags */
|
/* Update Shared Cachemap Flags */
|
||||||
if ( (SharedCacheMap->Flags & 8) != 0 )
|
if ( (SharedCacheMap->Flags & 8) != 0 )
|
||||||
{
|
{
|
||||||
KIRQL LAST_IRQL = KeAcquireQueuedSpinLock(LockQueueMasterLock);
|
SpinLockGuard lockGuard(LockQueueMasterLock);
|
||||||
SharedCacheMap->Flags &= ~8;
|
SharedCacheMap->Flags &= ~8;
|
||||||
KeReleaseQueuedSpinLock(LockQueueMasterLock, LAST_IRQL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update IRP Bytes */
|
/* Update IRP Bytes */
|
||||||
@ -234,7 +233,6 @@ NTAPI
|
|||||||
CcMdlWriteAbort(IN PFILE_OBJECT FileObject,
|
CcMdlWriteAbort(IN PFILE_OBJECT FileObject,
|
||||||
IN PMDL MdlChain)
|
IN PMDL MdlChain)
|
||||||
{
|
{
|
||||||
KIRQL CurrentIrql = {0};
|
|
||||||
PSHARED_CACHE_MAP SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
|
PSHARED_CACHE_MAP SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
|
||||||
|
|
||||||
|
|
||||||
@ -248,9 +246,9 @@ for( auto it = begin(MdlChain); it != end(MdlChain);++it)
|
|||||||
}
|
}
|
||||||
if ( (MdlChain->MdlFlags & 2) != 0 )
|
if ( (MdlChain->MdlFlags & 2) != 0 )
|
||||||
{
|
{
|
||||||
CurrentIrql = KeAcquireQueuedSpinLock(LockQueueMasterLock);
|
SpinLockGuard lockGuard(LockQueueMasterLock);
|
||||||
CcDecrementOpenCount(SharedCacheMap);
|
CcDecrementOpenCount(SharedCacheMap);
|
||||||
KeReleaseQueuedSpinLock(LockQueueMasterLock, CurrentIrql);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user