PsChargeSharedPoolQuota

VOID *__stdcall PsChargeSharedPoolQuota(_EPROCESS *Process, UINT64 PagedAmount, UINT64 NonPagedAmount){
  struct _EPROCESS_QUOTA_BLOCK *QuotaBlock; 

  if( Process == PsInitialSystemProcess )
    return(VOID *)1;
  QuotaBlock = Process->QuotaBlock;
  if( !PagedAmount || PspChargeQuota(Process->QuotaBlock, 0i64, PsResourcePagedPool, PagedAmount) >= 0 )
  {
    if( !NonPagedAmount || PspChargeQuota(QuotaBlock, 0i64, PsResourceNonPagedPool, NonPagedAmount) >= 0 )
    {
      _InterlockedIncrement((volatile signed __int32 *)&QuotaBlock->ReferenceCount);
      return QuotaBlock;
    }
    if( PagedAmount )
      PspReturnQuota((char *)QuotaBlock, 0i64, PsResourcePagedPool, PagedAmount);
  }
  return 0i64;
}

Referenced by:

NtSetInformationJobObject
ObAdjustSecurityQuota
ObpChargeQuotaForObject
PspAllocateRateControl
RtlpAllocateAtom