VerifierExAllocatePool2
VOID __fastcall VerifierExAllocatePool2(UINT64 a1, INT64 a2, INT64 a3, INT64 a4){
unsigned int v5;
INT64 v7;
unsigned __int32 v8;
_POOL_TYPE v9;
VOID *PoolWithTagPriority;
char v11[4];
_POOL_TYPE PoolType[5];
VOID *CallingAddress;
BYTE v14;
PoolType[0] = NonPagedPool;
v5 = a3;
if( (int)ExpPoolFlagsToPoolType(a1, 0i64, (INT64 *)PoolType, (BYTE *)v11, &v14) < 0 )
{
LABEL_2:
ExAllocatePool2(v7, a2, v5);
return;
}
if( (MmVerifierData & 0x400000) != 0 && (VfRuleClasses & 0x800000000i64) == 0 && (MmVerifierData & 1) == 0 )
{
if( (MmVerifierData & 0x2000000) != 0 )
VfCheckPoolType(PoolType[0], CallingAddress, 0i64);
v7 = a1;
goto LABEL_2;
}
v8 = PoolType[0] & 0xFFFFFFE7;
VfCheckPoolType((_POOL_TYPE)(PoolType[0] & 0xFFFFFFE7), CallingAddress, 0i64);
v9 = v8 | 0x80;
if( XdvEnabled )
PoolWithTagPriority = (VOID *)pXdvExAllocatePool2[0](
v9,
a2,
v5,
32,
(__int64)CallingAddress,
(__int64)VeAllocatePoolWithTagPriority);
else
PoolWithTagPriority = VeAllocatePoolWithTagPriority(v9, a2, v5, HighPoolPriority, CallingAddress);
if( !PoolWithTagPriority && (a1 & 0x20) != 0 )
RtlRaiseStatus(-1073741670);
}Referenced by:
No references.