MiDeleteSessionAddressSpace
VOID __stdcall MiDeleteSessionAddressSpace(_MM_SESSION_SPACE *SessionGlobal, _MI_DELETE_VA_INFO *DeleteInfo){
INT64 v4;
unsigned __int64 v5;
_MMSUPPORT_SHARED *SharedVm;
UINT8 v7;
UINT8 v8;
VOID *v9;
INT64 v10;
LODWORD(v4) = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + (((unsigned __int64)SessionGlobal >> 9) & 0x7FFFFFFFF8i64));
v10 = v4;
LODWORD(v5) = MI_READ_PTE_LOCK_FREE((INT64)&v10);
MiIncrementPfn(&MmGetPfnDb()[(v5 >> 12) & 0xFFFFFFFFFi64]);
MiDrainSystemAccessLog((_MMSUPPORT_INSTANCE *)((char *)SessionGlobal + 256));
SharedVm = MiGetSharedVm((_MMSUPPORT_INSTANCE *)((char *)SessionGlobal + 256));
v7 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
SharedVm->GoodCitizenWaiting = 0;
v8 = v7;
if( (*((_DWORD *)SessionGlobal + 1) & 0x10) != 0 )
MiDeleteWorkingSetList((INT64)SessionGlobal + 256);
MiUnlockWorkingSetExclusive((_MMSUPPORT_INSTANCE *)((char *)SessionGlobal + 256), v8);
if( MiIsPteCachingOptimizationEnabled() )
MiAttemptCoalesce(
(_MI_SYSTEM_PTE_TYPE *)((char *)SessionGlobal + 880),
*((_QWORD *)SessionGlobal + 119),
*((_QWORD *)SessionGlobal + 110) - *((_QWORD *)SessionGlobal + 119));
LOBYTE(v9) = 17;
MiDeletePagablePteRange((_EPROCESS *)((char *)SessionGlobal + 256), v9);
MiDeleteTopLevelSessionMapping((INT64)SessionGlobal);
--*(_QWORD *)&DeleteInfo->ReducedCommitClonePages;
}Referenced by:
MiDereferenceSessionFinal