MiReleaseWalkLocks
VOID __fastcall MiReleaseWalkLocks(INT64 a1){
UINT64 v1;
INT64 v3;
v1 = *(_QWORD *)(a1 + 48);
v3 = *(_QWORD *)(a1 + 24);
if( v1 )
{
MiUnlockPageTableInternal(*(_QWORD *)(a1 + 24), v1);
*(_QWORD *)(a1 + 48) = 0i64;
}
if( (*(_WORD *)a1 & 4) != 0 )
{
MiUnlockWorkingSetShared(v3, *(_BYTE *)(a1 + 6));
}
else
{
if( (*(_WORD *)a1 & 0x400) != 0 )
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&dword_140C4E05C);
MiUnlockWorkingSetExclusive(v3, *(_BYTE *)(a1 + 6));
}
*(_BYTE *)(a1 + 2) |= 1u;
}Referenced by:
MiCombineWorkingSetTail
MiDeleteEmptyPageTableTail
MiGetNextPageTablePte
MiQueryEPTAccessedState
MiYieldPageTableWalk