MiLockDownWorkingSet
void __fastcall MiLockDownWorkingSet(ULONG_PTR a1, int a2){
INT64 v3;
INT64 *SharedVm;
KIRQL v5;
UINT8 v6;
_MMPTE *PxeSelfRef;
unsigned __int64 v8;
char *v9;
UINT64 SpinCount;
_KAPC_STATE ApcState;
v3 = a1 + 1664;
memset(&ApcState, 0, sizeof(ApcState));
KiStackAttachProcess((_KPROCESS *)a1, 0i64, &ApcState);
SharedVm = MiGetSharedVm(v3);
v5 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)SharedVm);
*((_DWORD *)SharedVm + 1) = 0;
v6 = v5;
PxeSelfRef = MmGetPxeSelfRef();
v8 = *(_QWORD *)PxeSelfRef;
MiPteInShadowRange((UINT64)PxeSelfRef);
v9 = (char *)MmGetPfnDb() + 48 * ((v8 >> 12) & 0xFFFFFFFFFi64);
LODWORD(SpinCount) = 0;
while( _interlockedbittestandset64((volatile signed __int32 *)v9 + 6, 0x3Fui64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( *((__int64 *)v9 + 3) < 0 );
}
if( a2 == 1 )
MiAddLockedPageCharge((INT64)v9, 1);
else
MiRemoveLockedPageChargeAndDecRef((_MMPFN *)v9);
_InterlockedAnd64((volatile signed __int64 *)v9 + 3, 0x7FFFFFFFFFFFFFFFui64);
MiUnlockWorkingSetExclusive(v3, v6);
KiUnstackDetachProcess(&ApcState, 0i64);
}Referenced by:
MiCloneProcessAddressSpace