HvlpAddPhysicalMemory
NTSTATUS __stdcall HvlpAddPhysicalMemory(UINT64 PageNumber, UINT64 PageCount){
UINT64 v2;
int v4;
_QWORD *v5;
_QWORD *v6;
UINT16 v7;
UINT16 v8;
PHYSICAL_ADDRESS v10[2];
__int128 v11;
PHYSICAL_ADDRESS PageInfo[2];
__int128 v13;
char v14[16];
char StackBuffer[32];
v2 = PageCount;
v4 = 0;
*(_OWORD *)&PageInfo[0].anonymous_0.LowPart = 0i64;
v13 = 0i64;
*(_OWORD *)&v10[0].anonymous_0.LowPart = 0i64;
v11 = 0i64;
while( v2 )
{
v5 = HvlpAcquireHypercallPage(PageInfo, 1ui64, StackBuffer, 0x10ui64);
v6 = HvlpAcquireHypercallPage(v10, 2ui64, v14, 8ui64);
*v5 = PageNumber;
v5[1] = v2;
HvcallInitiateHypercall();
v8 = v7;
v2 -= *v6;
PageNumber += *v6;
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)v10);
HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
if( v8 == 11 )
{
v4 = HvlpDepositPages(0);
if( v4 < 0 )
return -1073741670;
}
else if( v8 )
{
return HvlpHvToNtStatus(v8);
}
}
return v4;
}Referenced by:
KeConfigureDynamicMemory