MiUnlockPageTableRange
VOID __stdcall MiUnlockPageTableRange(UINT64 *Minimum, UINT64 *Maximum){
_MMPTE *PdeBase;
INT64 v4;
char *v5;
char *v6;
UINT8 v7;
UINT64 v8;
unsigned __int64 v9;
UINT64 v10;
PdeBase = MmGetPdeBase();
v4 = *((_QWORD *)KeGetCurrentThread() + 23) + 1664i64;
v5 = (char *)PdeBase + (((unsigned __int64)Minimum >> 18) & 0x3FFFFFF8);
v6 = (char *)PdeBase + (((unsigned __int64)Maximum >> 18) & 0x3FFFFFF8);
v7 = MiLockWorkingSetShared(v4);
if( v5 <= v6 )
{
v8 = (UINT64)v5;
do
{
MiLockPageTableInternal(v4, (UINT64)v5, 0i64);
v9 = *(_QWORD *)v5;
MiPteInShadowRange(v8);
MiUnlockPageTableCharges((_MMPFN *)((char *)MmGetPfnDb() + 48 * ((v9 >> 12) & 0xFFFFFFFFFi64)), 2u, v10);
MiUnlockPageTableInternal(v4, (UINT64)v5);
v5 += 8;
v8 = (UINT64)v5;
}
while( v5 <= v6 );
}
MiUnlockWorkingSetShared(v4, v7);
}Referenced by:
MiLockPageTableRange
MmStoreFreeVirtualMemory