MiComputeMaximumFaultCluster
NTSTATUS __stdcall MiComputeMaximumFaultCluster(UINT64 *a1, UINT64 a2){
UINT64 v2;
UINT64 v4;
unsigned __int64 v6;
UINT64 v7;
__int64 v8;
UINT64 v9;
UINT64 v10;
_MMVAD *Address;
int v12;
UINT64 v13;
int v14;
v2 = a1[2];
v4 = *a1 & 0xFFFFFFFFFFFFF000ui64;
if( v2 == (v2 & 0xFFFFFFFFFFFFFFFEui64) )
{
if( ((v2 & 1) == 0 || *(_BYTE *)(v2 & 0xFFFFFFFFFFFFFFFEui64) != 1) && (v2 & 1) == 0 )
{
if( v2 )
{
if( *(_WORD *)(v2 + 368) == 16 )
{
if( (*(_DWORD *)(v2 + 376) & 0x200) != 0
|| (LOBYTE(v12) = KiRspInIstStack(3ui64, *(_QWORD *)(v2 + 384)), !v12)
&& (LOBYTE(v14) = KiRspInIstStack(2ui64, v13), !v14) )
{
v6 = *(_QWORD *)(v2 + 360);
if( KiDynamicTraceEnabled && v6 >= ControlPc && v6 < qword_140CFBBE0 )
KeGetCurrentIrql();
}
}
}
}
return 1;
}
LODWORD(v7) = MiFaultListPagesRemaining(a1);
if( v7 == 1 )
return 1;
if( !a2 || a2 > v7 )
a2 = v7;
v9 = 512 - (((unsigned __int64)((unsigned int)MmGetPteBase() + (unsigned int)(v4 >> 9)) >> 3) & 0x1FF);
v10 = v9;
if( a2 <= v9 )
v10 = a2;
if( v4 < 0xFFFF800000000000ui64 )
{
Address = *(_MMVAD **)(v8 + 88);
if( Address || (Address = MiLocateAddress((VOID *)v4)) != 0i64 )
v9 = (Address->Core.EndingVpn | ((unsigned __int64)Address->Core.EndingVpnHigh << 32)) - (v4 >> 12) + 1;
else
v9 = 1i64;
}
if( v10 <= v9 )
LODWORD(v9) = v10;
return v9;
}Referenced by:
MiDispatchFault