PfFbBufferListAllocateTemporary
INT64 __fastcall PfFbBufferListAllocateTemporary(INT64 a1, INT64 a2){
unsigned int v2;
INT64 result;
struct SLIST_ENTRY *PoolWithTag;
INT64 v6;
v2 = a2;
if( (int)a2 + _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 104), a2) > *(_DWORD *)(a1 + 84) )
{
result = 3221225773i64;
LABEL_3:
_InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 104), -v2);
return result;
}
PoolWithTag = (struct SLIST_ENTRY *)ExAllocatePoolWithTag(
(_POOL_TYPE)*(_DWORD *)(a1 + 72),
(int)a2,
*(unsigned int *)(a1 + 68));
if( !PoolWithTag )
{
result = 3221225626i64;
goto LABEL_3;
}
LODWORD(v6) = 0;
PfFbBufferListInsertInFree((SLIST_ENTRY *)a1, PoolWithTag, v2, 1i64, v6);
return 0i64;
}Referenced by:
PfpEventHandleOutOfBuffers
PfpSectInfoHandleOutOfBuffers