HalpHandleMachineCheck
CHAR __fastcall HalpHandleMachineCheck(INT64 a1){
__int64 i;
UINT64 v3;
CHAR result;
unsigned __int8 v5;
unsigned __int64 v6;
if( !HalpMceBroadcast )
return HalpMceHandler(a1, 0);
for( i = *((_QWORD *)KeGetPcr() + 27); ; i = *(_QWORD *)(i + 176) )
{
if( !i )
return HalpMceHandlerWithRendezvous(a1);
if( (((__int64(__fastcall *)(_QWORD, __int64, _QWORD))HalpWheaReadMsr)(*(_QWORD *)(i + 164), 378i64, 0i64) & 8) != 0 )
break;
}
KeAcquireSpinLockRaiseToDpc(&HalpMceLocalHandlingLock, v3);
v6 = v5;
HalpMceHandler(a1, 1);
KxReleaseSpinLock(&HalpMceLocalHandlingLock);
result = KiIrqlFlags;
__writecr8(v6);
return result;
}Referenced by:
HalHandleMcheck