MiEmptyTargetedWorkingSet
VOID __stdcall MiEmptyTargetedWorkingSet(_MMSUPPORT_INSTANCE *VmSupport, UINT8 WsIrql, UINT8 a3){
_LIST_ENTRY *p_WorkingSetExpansionLinks;
_LIST_ENTRY *Flink;
_LIST_ENTRY *Blink;
_KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 522, &LockHandle);
p_WorkingSetExpansionLinks = &VmSupport->WorkingSetExpansionLinks;
Flink = VmSupport->WorkingSetExpansionLinks.Flink;
if( Flink )
{
Blink = VmSupport->WorkingSetExpansionLinks.Blink;
if( Flink->Blink != p_WorkingSetExpansionLinks || Blink->Flink != p_WorkingSetExpansionLinks )
__fastfail(3u);
Blink->Flink = Flink;
Flink->Blink = Blink;
p_WorkingSetExpansionLinks->Flink = 0i64;
VmSupport->Flags._bf_1 = VmSupport->Flags._bf_1 & 0xF9 | 2;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
MiEmptyWorkingSetInitiate((INT64)VmSupport, 0, 0i64, -1i64);
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 522, &LockHandle);
VmSupport->Flags._bf_1 &= 0xF9u;
MiReturnWsToExpansionList(VmSupport, 0i64);
}
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}Referenced by:
MiTrimAllSystemPagableMemory