MiProbeLeafFrame
NTSTATUS __stdcall MiProbeLeafFrame(_MI_PROBE_PACKET *Packet){
_MI_PROBE_PACKET *v2;
NTSTATUS v3;
NTSTATUS result;
unsigned __int64 v5;
UINT64 v6;
LODWORD(v6) = 0;
v2 = Packet + 10;
v3 = MiLockPageLeafPageTable((INT64)Packet);
if( *(_QWORD *)v2 == ZeroPte.u.Long )
return v3;
while( 1 )
{
result = MiProbeLeafPteAccess((INT64)Packet, (UINT64)&v6);
if( result < 0 )
break;
if( !(_DWORD)v6 )
{
v5 = *(_QWORD *)v2;
MiPteInShadowRange((UINT64)(Packet + 10));
*((_QWORD *)Packet + 16) = (v5 >> 12) & 0xFFFFFFFFFi64;
MiSetProbePagesAhead((INT64)Packet);
return 0;
}
if( (_DWORD)v6 != 1 )
{
result = MiFaultInProbeAddress(Packet);
if( result < 0 )
{
++*(&stru_140C4DB30 + 611);
return result;
}
}
v3 = MiLockPageLeafPageTable((INT64)Packet);
if( *(_QWORD *)v2 == ZeroPte.u.Long )
return v3;
}
return result;
}Referenced by:
MmProbeAndLockSelectedPages
MmStoreProbeAndLockPages