VerifierExAllocatePoolWithQuota

VOID *__stdcall VerifierExAllocatePoolWithQuota(POOL_TYPE PoolType, UINT64 NumberOfBytes){
  VOID *result; 
  unsigned __int32 v5; 
  POOL_TYPE v6; 
  UINT64 v7; 
  VOID *CallingAddress; 

  if( (MmVerifierData & 0x400000) == 0 || (*(&stru_140CF2E80 + 7308) & 8) != 0 || (MmVerifierData & 1) != 0 )
  {
    VfCheckPoolType(PoolType, CallingAddress, 0i64);
    ++dword_140C2A63C;
    if( (MmVerifierData & 8) != 0 )
    {
      if( KeGetCurrentThread()->ApcState.Process == *(_EPROCESS **)&PsIdleProcess )
        VerifierBugCheckIfAppropriate(0xC4ui64, 0x10Au, 0, 0, 0, v7);
      if( (KeGetPcr()->Prcb.DpcRequestSummary & 1) != 0 )
        VerifierBugCheckIfAppropriate(0xC4ui64, 0x10Bu, 0, 0, 0, v7);
    }
    v5 = PoolType & 0xFFFFFFF7;
    if( (PoolType & 8) == 0 )
      v5 = PoolType;
    v6 = v5 | 0x80;
    if( XdvEnabled )
      result = (VOID *)pXdvExAllocatePoolWithTagPriority(
                         v6,
                         NumberOfBytes,
                         1885434455,
                         32,
                         (__int64)CallingAddress,
                         (__int64)VeAllocatePoolWithTagPriority);
    else
      result = VeAllocatePoolWithTagPriority(v6, NumberOfBytes, 0x70617257ui64, HighPoolPriority, CallingAddress);
    if( !result && (PoolType & 8) == 0 )
      RtlRaiseStatus(-1073741670);
  }
  else
  {
    if( (MmVerifierData & 0x2000000) != 0 )
      VfCheckPoolType(PoolType, CallingAddress, 0i64);
    return ExAllocatePoolWithQuota(PoolType, NumberOfBytes);
  }
  return result;
}

Referenced by:

No references.