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.