PspAllocateRateControl
CHAR *__fastcall PspAllocateRateControl(INT64 a1){
INT64 RateControlSize;
_POOL_TYPE v2;
int v3;
_QWORD *PoolWithTag;
INT64 v5;
RateControlSize = PspGetRateControlSize(a1);
v2 = NonPagedPoolNx;
if( v3 != 2 )
v2 = PagedPool;
PoolWithTag = ExAllocatePoolWithTag(v2, RateControlSize, 0x624A7350ui64);
if( PoolWithTag )
{
v5 = PsChargeSharedPoolQuota(*((_QWORD *)KeGetCurrentThread() + 23), RateControlSize, 0i64);
if( v5 )
{
memset((INT64)PoolWithTag, 0i64);
*PoolWithTag = v5;
}
else
{
ExFreePoolWithTag(PoolWithTag, 0x624A7350u);
return 0i64;
}
}
return(CHAR *)PoolWithTag;
}Referenced by:
NtSetInformationJobObject
PspAddSchedulingGroupToJobChain
PspSetJobRateControl