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