MiCheckForConflictingVad
_MMVAD *__stdcall MiCheckForConflictingVad(_EPROCESS *CurrentProcess, VOID *StartingAddress, VOID *EndingAddress){
_MMVAD *Root;
unsigned __int64 v4;
unsigned __int64 v5;
Root = (_MMVAD *)CurrentProcess->VadRoot.Root;
v4 = (unsigned __int64)StartingAddress >> 12;
v5 = (unsigned __int64)EndingAddress >> 12;
while( 1 )
{
while( 1 )
{
if( !Root )
return 0i64;
if( v5 >= (Root->Core.StartingVpn | ((unsigned __int64)Root->Core.StartingVpnHigh << 32)) )
break;
Root = (_MMVAD *)Root->Core.NextVad;
}
if( v4 <= (Root->Core.EndingVpn | ((unsigned __int64)Root->Core.EndingVpnHigh << 32)) )
break;
Root = (_MMVAD *)Root->Core.ExtraCreateInfo;
}
return Root;
}Referenced by:
MiCheckForConflictingVadExistence
MiLocateLowestConflictingVad
MmGetImageInformation