HvpViewMapCreateView
NTSTATUS __stdcall HvpViewMapCreateView(INT64 a1, INT64 a2, INT64 a3, CHAR **a4){
unsigned __int64 v6;
VOID **Memory;
VOID **v10;
UINT64 v11;
UINT64 v12;
int v13;
VOID *v15;
UINT64 NewProtectWin32;
UINT64 NewProtectWin32a;
int v18;
__int64 v19;
LODWORD(v19) = 0;
v6 = (unsigned __int64)(unsigned int)(a3 - a2) >> 12;
Memory = CmSiAllocateMemory(v6 + 72, 0x35384D43ui64);
v10 = Memory;
if( !Memory )
return -1073741670;
memset(Memory, 0i64, v6 + 72);
v10[4] = (VOID *)a3;
v10[3] = (VOID *)a2;
v11 = a3 - a2;
LODWORD(NewProtectWin32) = ((*(_DWORD *)(a1 + 32) & 1) == 0) << 13;
v13 = CmSiMapViewOfSection(*(VOID **)a1, *(VOID ***)(a1 + 24), (_LARGE_INTEGER)a2, v11, NewProtectWin32, v18, v10 + 7);
if( v13 >= 0 )
{
LODWORD(NewProtectWin32a) = 1;
v13 = CmSiProtectViewOfSection(v12, *(VOID ***)(a1 + 24), v10[7], v11, NewProtectWin32a, (__int64)&v19);
if( v13 >= 0 )
{
*a4 = (CHAR *)v10;
v10 = 0i64;
v13 = 0;
}
}
if( v10 )
{
v15 = v10[7];
if( v15 )
CmSiUnmapViewOfSection(v12, *(VOID ***)(a1 + 24), v15);
CmSiFreeMemory((PPRIVILEGE_SET)v10);
}
return v13;
}Referenced by:
HvpViewMapCreateViewsForRegion
HvpViewMapPromoteRangeToMapping