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.