WheapAllocErrorRecord
INT64 __fastcall WheapAllocErrorRecord(INT64 a1, UINT64 *a2){
unsigned int v4;
VOID *PoolWithTag;
INT64 v6;
unsigned int v7;
INT64 PreallocatedErrorRecord;
v4 = *(_DWORD *)(a1 + 32);
*(_DWORD *)a2 = v4;
if( KeGetCurrentIrql() > 2u )
{
PreallocatedErrorRecord = WheapGetPreallocatedErrorRecord(a1);
v6 = PreallocatedErrorRecord;
if( PreallocatedErrorRecord )
{
*(_DWORD *)(PreallocatedErrorRecord + 24) = 1;
goto LABEL_6;
}
LABEL_7:
*(_DWORD *)a2 = 0;
return v6;
}
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, v4, *(unsigned int *)(a1 + 36));
v6 = (INT64)PoolWithTag;
if( !PoolWithTag )
goto LABEL_7;
v7 = *(_DWORD *)a2;
memset((INT64)PoolWithTag, 0i64);
WheapInitializeErrorRecordWrapper(v6, v7, a1);
LABEL_6:
*(_QWORD *)(v6 + 32) = a1;
return v6;
}Referenced by:
WheaReportHwError
WheapReportBootError