CcMdlWriteAbort
VOID __stdcall CcMdlWriteAbort(PFILE_OBJECT FileObject, PMDL MdlChain){
INT64 v2;
__int16 MdlFlags;
PMDL v4;
__int16 v5;
_SHARED_CACHE_MAP *SharedCacheMap;
_MDL *Next;
unsigned __int64 *Partition;
UINT64 v9;
UINT8 v10;
_KLOCK_QUEUE_HANDLE LockHandle;
MdlFlags = MdlChain->MdlFlags;
v4 = MdlChain;
memset(&LockHandle, 0, sizeof(LockHandle));
v5 = MdlFlags & 2;
SharedCacheMap = (_SHARED_CACHE_MAP *)FileObject->SectionObjectPointer->SharedCacheMap;
do
{
Next = v4->Next;
if( v5 )
MmUnlockPages((INT64)v4, (INT64)MdlChain, v2);
IoFreeMdl(v4);
v4 = Next;
}
while( Next );
if( v5 )
{
Partition = (unsigned __int64 *)CcGetPartition(SharedCacheMap);
KeAcquireInStackQueuedSpinLock(Partition + 16, &LockHandle);
CcDecrementOpenCount(SharedCacheMap, v9, v10);
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
}Referenced by:
No references.