HvpViewMapMakeViewRangeInvalid
__int64 __fastcall HvpViewMapMakeViewRangeInvalid(UINT64 a1, _QWORD *a2, __int64 a3, __int64 a4){
UINT64 v7;
__int64 i;
__int64 j;
__int64 v10;
__int64 result;
UINT64 v12;
UINT64 NewAccessProtection;
INT64 a6;
LODWORD(a6) = 0;
v7 = a1;
for( i = a3; i < a4; i += 4096i64 )
{
if( !a2[8] )
break;
a1 = a2[3];
v12 = (i - a1) >> 12;
if( (*((_BYTE *)a2 + v12 + 72) & 0x10) != 0 )
{
CmSiUnlockViewOfSection(a1, *(VOID ***)(v7 + 24), (VOID *)(i + a2[7] - a1), 0x1000ui64);
*((_BYTE *)a2 + v12 + 72) &= ~0x10u;
--a2[8];
}
}
LODWORD(NewAccessProtection) = -2147483647;
CmSiProtectViewOfSection(
a1,
*(VOID ***)(v7 + 24),
(VOID *)(a3 + a2[7] - a2[3]),
a4 - a3,
NewAccessProtection,
(INT64)&a6);
for( j = a3; j < a4; *((_BYTE *)a2 + ((unsigned __int64)(v10 - a2[3]) >> 12) + 72) = 0 )
{
v10 = j;
j += 4096i64;
}
result = a2[6];
if( a2[5] == a3 )
{
if( result == a4 )
{
a2[5] = 0i64;
a2[6] = 0i64;
}
else
{
a2[5] = a4;
}
}
else if( result == a4 )
{
a2[6] = a3;
}
return result;
}Referenced by:
HvpViewMapPromoteRangeToMapping
HvpViewMapShrinkStorage