HalpCmcStartPolling
CHAR __stdcall HalpCmcStartPolling(){
UINT64 v0;
unsigned __int8 v1;
unsigned __int64 v2;
CHAR result;
if( !HalpIsMicrosoftCompatibleHvLoaded() || (result = HalpIsPartitionCpuManager()) != 0 )
{
KeAcquireSpinLockRaiseToDpc(&HalpCmcFallbackLock, v0);
v2 = v1;
if( HalpCmcPollingInitialized )
{
if( (HalpMcaPollForCmc
|| HalpCmciRevertToPolledMode
|| HalpCmcPollingStartDeferred != (_BYTE)HalpCmciRevertToPolledMode)
&& !HalpCmcPollingStarted )
{
KiSetTimerEx(
(_KTIMER *)&qword_140C50578,
(_LARGE_INTEGER)(-10000i64 * (unsigned int)HalpCmcContext),
(unsigned int)HalpCmcContext,
0,
&stru_140C505B8);
HalpCmcPollingStarted = 1;
}
}
else
{
HalpCmcPollingStartDeferred = 1;
}
KxReleaseSpinLock(&HalpCmcFallbackLock);
result = KiIrqlFlags;
__writecr8(v2);
}
return result;
}Referenced by:
HalpCmciDeferredRoutine
HalpInitializeCmc