WheapAllocErrorRecord
_WHEAP_ERROR_RECORD_WRAPPER *__stdcall WheapAllocErrorRecord(_WHEAP_ERROR_SOURCE *ErrSrc, UINT64 *RecordLength){
unsigned int v4;
VOID **PoolWithTag;
_WHEAP_ERROR_RECORD_WRAPPER *v6;
size_t v7;
_WHEAP_ERROR_RECORD_WRAPPER *PreallocatedErrorRecord;
v4 = ErrSrc->RecordLength;
*(_DWORD *)RecordLength = v4;
if( KeGetCurrentIrql() > 2u )
{
PreallocatedErrorRecord = WheapGetPreallocatedErrorRecord(ErrSrc);
v6 = PreallocatedErrorRecord;
if( PreallocatedErrorRecord )
{
PreallocatedErrorRecord->Flags.AsULONG = 1;
goto LABEL_6;
}
LABEL_7:
*(_DWORD *)RecordLength = 0;
return v6;
}
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, v4, ErrSrc->PoolTag);
v6 = (_WHEAP_ERROR_RECORD_WRAPPER *)PoolWithTag;
if( !PoolWithTag )
goto LABEL_7;
v7 = *(_DWORD *)RecordLength;
memset(PoolWithTag, 0i64, v7);
WheapInitializeErrorRecordWrapper(v6, v7, ErrSrc);
LABEL_6:
v6->ErrorSource = ErrSrc;
return v6;
}Referenced by:
WheaReportHwError
WheapReportBootError