VerifierExAllocatePoolWithQuota

VOID *__fastcall VerifierExAllocatePoolWithQuota(_POOL_TYPE PoolType, UINT64 NumberOfBytes){
  VOID *result; 
  unsigned __int32 v5; 
  _POOL_TYPE v6; 
  UINT64 v7; 
  VOID *CallingAddress; 
  if( (MmVerifierData & 0x400000) == 0 || (VfRuleClasses & 0x800000000i64) != 0 || (MmVerifierData & 1) != 0 )
  {
    VfCheckPoolType(PoolType, CallingAddress, 0i64);
    ++dword_140C2A63C;
    if( (MmVerifierData & 8) != 0 )
    {
      if( *((PVOID *)KeGetCurrentThread() + 23) == PsIdleProcess )
        VerifierBugCheckIfAppropriate(0xC4ui64, 0x10Aui64, 0i64, 0i64, 0i64, v7);
      if( (*((_BYTE *)KeGetPcr() + 12972) & 1) != 0 )
        VerifierBugCheckIfAppropriate(0xC4ui64, 0x10Bui64, 0i64, 0i64, 0i64, 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);
    LODWORD(result) = ExAllocatePoolWithQuota(PoolType, NumberOfBytes);
  }
  return result;
}

Referenced by:

No references.