MiSystemImageHasPrivateFixups
NTSTATUS __stdcall MiSystemImageHasPrivateFixups(
VOID *VirtualAddress,
_CONTROL_AREA **OutControlArea,
UINT64 *ImagePteIndex){
NTSTATUS SystemRegionType;
__int64 v7;
unsigned __int8 v8;
__int64 v9;
unsigned __int64 v10;
unsigned __int64 v11;
unsigned __int64 v12;
*(_DWORD *)ImagePteIndex = 0;
*OutControlArea = 0i64;
if( (__int64 *)qword_140C4CA00 == &qword_140C4CA00 )
return 0;
SystemRegionType = MiGetSystemRegionType((UINT64)VirtualAddress);
if( SystemRegionType != 12 && SystemRegionType != 1 )
return 0;
LODWORD(v7) = 0;
v8 = ExAcquireSpinLockShared(&unk_140C4CA24);
v9 = qword_140C4CA00;
v10 = v8;
while( (__int64 *)v9 != &qword_140C4CA00 )
{
v11 = *(_QWORD *)(v9 + 16);
if( (unsigned __int64)VirtualAddress >= v11 && (unsigned __int64)VirtualAddress <= *(_QWORD *)(v9 + 24) )
{
v12 = ((unsigned __int64)VirtualAddress - v11) >> 12;
if( _bittest(*(const signed __int32 **)(*(_QWORD *)(v9 + 40) + 8i64), v12) )
{
v7 = v11 - *(_QWORD *)(v9 + 32);
*OutControlArea = *(_CONTROL_AREA **)(v9 + 48);
*(_DWORD *)ImagePteIndex = v12;
}
break;
}
v9 = *(_QWORD *)v9;
}
ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)&unk_140C4CA24);
__writecr8(v10);
return v7;
}Referenced by:
MiCompleteProtoPteFault