HvpMappedViewConvertRegionFromLockedToCOWByPolicy
INT64 __fastcall HvpMappedViewConvertRegionFromLockedToCOWByPolicy(UINT64 a1, _QWORD *a2, INT64 a3, INT64 a4){
__int64 v4;
unsigned __int64 v5;
VOID *v6;
INT64 v8;
NTSTATUS v11;
UINT64 v12;
UINT64 v13;
NTSTATUS v14;
UINT64 NewAccessProtection;
UINT64 NewAccessProtectiona;
INT64 a6;
v4 = a2[7] - a2[3];
v5 = a4 - a3;
LODWORD(a6) = 0;
v6 = (VOID *)(a3 + v4);
LODWORD(NewAccessProtection) = 8;
v8 = a3;
v11 = CmSiProtectViewOfSection(a1, *(VOID ***)(a1 + 24), v6, a4 - a3, NewAccessProtection, (INT64)&a6);
if( v11 >= 0 )
{
HvpViewMapTouchPages((BYTE *)v6, v5, 1);
LODWORD(NewAccessProtectiona) = 2;
CmSiProtectViewOfSection(v12, *(VOID ***)(a1 + 24), v6, v5, NewAccessProtectiona, (INT64)&a6);
CmSiUnlockViewOfSection(v13, *(VOID ***)(a1 + 24), v6, v5);
v11 = v14;
while( v8 < a4 )
{
*((_BYTE *)a2 + ((unsigned __int64)(v8 - a2[3]) >> 12) + 72) = *((_BYTE *)a2
+ ((unsigned __int64)(v8 - a2[3]) >> 12)
+ 72) & 0xEB | 4;
v8 += 4096i64;
}
a2[8] -= v5 >> 12;
}
return(unsigned int)v11;
}Referenced by:
HvpMappedViewConvertLockedPagesToCOWByPolicy