HalpMemoryErrorDeferredRecovery
NTSTATUS __stdcall HalpMemoryErrorDeferredRecovery(
INT64 a1,
INT64 a2,
INT64 a3,
INT64 a4,
_MMINPAGE_SUPPORT *InPageSupport,
_MI_PARTITION *Partition,
INT64 a7,
INT64 a8){
int v9;
char v11;
PSLIST_ENTRY v12;
NTSTATUS v13;
NTSTATUS v14;
v9 = a4;
v11 = a2;
v12 = RtlpInterlockedPopEntrySList(&WheapDrsPoolList);
if( v12 )
{
if( !byte_140C4A110 )
{
LABEL_12:
WORD1(v12[4].Next) = (_WORD)InPageSupport;
BYTE4(v12[4].Next) = (_BYTE)Partition;
BYTE5(v12[4].Next) = a7;
*((_QWORD *)&v12[3].Next + 1) = a1;
BYTE6(v12[4].Next) = a8 & 1;
LOBYTE(v12[4].Next) = v11;
*((_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(&WheapDrsPoolList, v12);
return -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(&WheapDrsPoolList, v12);
return v13;
}
goto LABEL_12;
}
return -1073741757;
}Referenced by:
HalpGhesMemoryErrorHandler
HalpHvMceConsumedMemoryErrorRecovery
HalpMceRecoveryNotRequiredAmd
HalpMceRecoveryNotRequiredIntel