HvlpAddPhysicalMemory
NTSTATUS __stdcall HvlpAddPhysicalMemory(UINT64 PageNumber, UINT64 PageCount){
UINT64 v2;
int v4;
LONGLONG *v5;
LONGLONG *v6;
UINT16 v7;
UINT16 v8;
__int128 v10[2];
__int128 v11[2];
char v12[16];
char v13[32];
v2 = PageCount;
v4 = 0;
memset(v11, 0, sizeof(v11));
memset(v10, 0, sizeof(v10));
if( PageCount )
{
do
{
v5 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v11, 1, (__int64)v13, 16i64);
v6 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)v10, 2, (__int64)v12, 8i64);
*v5 = PageNumber;
v5[1] = v2;
HvcallInitiateHypercall();
v8 = v7;
v2 -= *v6;
PageNumber += *v6;
HvlpReleaseHypercallPage((unsigned int *)v10);
HvlpReleaseHypercallPage((unsigned int *)v11);
if( v8 == 11 )
{
v4 = HvlpDepositPages(0);
if( v4 < 0 )
return -1073741670;
}
else if( v8 )
{
return HvlpHvToNtStatus(v8);
}
}
while( v2 );
}
return v4;
}Referenced by:
KeConfigureDynamicMemory