MiContractWsSwapPageFile
VOID __stdcall MiContractWsSwapPageFile(_MI_PARTITION *Partition){
_MI_PARTITION *v1;
unsigned int v2;
__int64 v3;
_QWORD *v4;
__int64 v5;
if( MiNumberWsSwapPagefiles(Partition) )
{
v2 = MiWsSwapPageFileNumber(v1);
v4 = *(_QWORD **)(v3 + 8i64 * v2 + 6944);
if( v4[3] >= 0x10000ui64
&& v4[6] >= 0x10000ui64
&& (unsigned __int64)(*v4 - 0x10000i64) >= v4[2]
&& !_InterlockedCompareExchange((volatile signed __int32 *)(v3 + 1120), 1, 0) )
{
if( PsReferencePartitionSafe(*(_QWORD *)(v3 + 176)) )
ExQueueWorkItemToPartition((PVOID)(v5 + 1088));
else
_InterlockedExchange((volatile __int32 *)(v5 + 1120), 0);
}
}
}Referenced by:
MiTrimUnusedPageFileRegionsWorker
MmCleanProcessAddressSpace
MmInSwapVirtualAddresses
MmInSwapWorkingSet