HvpViewMapCreateView
INT64 __fastcall HvpViewMapCreateView(INT64 a1, INT64 a2, INT64 a3, CHAR **a4){
INT64 Memory;
INT64 v9;
UINT64 v10;
UINT64 v11;
NTSTATUS v12;
VOID *v14;
UINT64 NewAccessProtection;
UINT64 NewAccessProtectiona;
INT64 a6;
INT64 v18;
LODWORD(v18) = 0;
Memory = CmSiAllocateMemory(((unsigned __int64)(unsigned int)(a3 - a2) >> 12) + 72, 0x35384D43u);
v9 = Memory;
if( Memory )
{
memset(Memory, 0i64);
*(_QWORD *)(v9 + 32) = a3;
*(_QWORD *)(v9 + 24) = a2;
v10 = a3 - a2;
LODWORD(NewAccessProtection) = ((*(_DWORD *)(a1 + 32) & 1) == 0) << 13;
v12 = CmSiMapViewOfSection(
*(VOID **)a1,
*(PVOID **)(a1 + 24),
(LARGE_INTEGER)a2,
v10,
NewAccessProtection,
a6,
(PVOID *)(v9 + 56));
if( v12 >= 0 )
{
LODWORD(NewAccessProtectiona) = 1;
v12 = CmSiProtectViewOfSection(
v11,
*(VOID ***)(a1 + 24),
*(VOID **)(v9 + 56),
v10,
NewAccessProtectiona,
(INT64)&v18);
if( v12 >= 0 )
{
*a4 = (CHAR *)v9;
v9 = 0i64;
v12 = 0;
}
}
if( v9 )
{
v14 = *(VOID **)(v9 + 56);
if( v14 )
CmSiUnmapViewOfSection(v11, *(PVOID **)(a1 + 24), v14);
CmSiFreeMemory((PPRIVILEGE_SET)v9);
}
}
else
{
return(unsigned int)-1073741670;
}
return(unsigned int)v12;
}Referenced by:
HvpViewMapCreateViewsForRegion
HvpViewMapPromoteRangeToMapping