HalpMemoryErrorDeferredRecovery
INT64 __fastcall HalpMemoryErrorDeferredRecovery(
INT64 a1,
CHAR a2,
INT64 a3,
INT64 a4,
INT16 a5,
CHAR a6,
CHAR a7,
CHAR a8){
int v9;
PSLIST_ENTRY v12;
int v13;
int v14;
v9 = a4;
v12 = RtlpInterlockedPopEntrySList((PSLIST_HEADER)&WheapDrsPoolList);
if( v12 )
{
if( !HalpHvWheaEnlightenedCpuManager )
{
LABEL_12:
WORD1(v12[4].Next) = a5;
BYTE4(v12[4].Next) = a6;
BYTE5(v12[4].Next) = a7;
*((_QWORD *)&v12[3].Next + 1) = a1;
BYTE6(v12[4].Next) = a8 & 1;
LOBYTE(v12[4].Next) = a2;
*((_QWORD *)&v12[4].Next + 1) = a3;
LODWORD(v12[5].Next) = v9;
HIDWORD(v12[5].Next) = 1;
if( WheaRequestDeferredRecovery((INT64)&v12[1], (INT64)(&v12[3].Next + 1)) )
return 0;
RtlpInterlockedPushEntrySList((PSLIST_HEADER)&WheapDrsPoolList, v12);
return(unsigned int)-1073741757;
}
if( a3 )
{
if( !qword_140C4A1C0 )
{
v13 = -1073741823;
goto LABEL_10;
}
v14 = qword_140C4A1C0(a3);
}
else
{
v14 = HalpHvSetMachineCheckRecoveryState(1i64);
}
v13 = v14;
LABEL_10:
if( v13 < 0 )
{
RtlpInterlockedPushEntrySList((PSLIST_HEADER)&WheapDrsPoolList, v12);
return(unsigned int)v13;
}
goto LABEL_12;
}
return(unsigned int)-1073741757;
}Referenced by:
HalpGhesMemoryErrorHandler
HalpHvMceConsumedMemoryErrorRecovery
HalpMceRecoveryNotRequiredAmd
HalpMceRecoveryNotRequiredIntel