MiChargeProcessPhysicalPages

NTSTATUS __stdcall MiChargeProcessPhysicalPages(_EPROCESS *Process, UINT64 QuotaCharge){
  signed __int64 VadPhysicalPages; 
  unsigned __int64 i; 
  signed __int64 v6; 

  if( Process->VadPhysicalPagesLimit )
  {
    VadPhysicalPages = Process->VadPhysicalPages;
    for( i = VadPhysicalPages + QuotaCharge; i <= Process->VadPhysicalPagesLimit; i = QuotaCharge + VadPhysicalPages )
    {
      v6 = VadPhysicalPages;
      VadPhysicalPages = _InterlockedCompareExchange64(
                           (volatile signed __int64 *)&Process->VadPhysicalPages,
                           i,
                           VadPhysicalPages);
      if( v6 == VadPhysicalPages )
        return 1;
    }
    return 0;
  }
  else
  {
    _InterlockedExchangeAdd64((volatile signed __int64 *)&Process->VadPhysicalPages, QuotaCharge);
    return 1;
  }
}

Referenced by:

MiAllocateUserPhysicalPages
MiCommitExistingVad
MiCreateLargePageVad