HalpCmcInitializePolling
INT64 __fastcall HalpCmcInitializePolling(INT64 a1){
UINT64 v1;
unsigned __int8 v3;
unsigned __int64 v4;
int v5;
INT64 result;
KeAcquireSpinLockRaiseToDpc(&HalpCmcFallbackLock, v1);
v4 = v3;
if( !HalpCmcPollingInitialized )
{
HalpCmcErrorPacket = (INT64)&HalpCmcReserveErrorPacket;
HalpCmcInitializeErrorPacketContents((INT64)&HalpCmcReserveErrorPacket);
v5 = *(_DWORD *)(a1 + 52);
stru_140C505B8.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))HalpCmcDeferredRoutine;
qword_140C50608 = (__int64)HalpCmcWorkerRoutine;
LODWORD(HalpCmcContext) = v5;
qword_140C50578 = 8i64;
qword_140C50588 = (__int64)&qword_140C50580;
qword_140C50580 = (__int64)&qword_140C50580;
stru_140C505B8.TargetInfoAsUlong = 275;
stru_140C505B8.DeferredContext = &HalpCmcContext;
stru_140C505B8.DpcData = 0i64;
stru_140C505B8.ProcessorHistory = 0i64;
qword_140C50610 = (__int64)&HalpCmcContext;
qword_140C505F8 = 0i64;
qword_140C50590 = 0i64;
dword_140C505B4 = 0;
word_140C505B0 = 0;
HalpCmcPollingInitialized = 1;
}
KxReleaseSpinLock(&HalpCmcFallbackLock);
result = (unsigned int)KiIrqlFlags;
__writecr8(v4);
return result;
}Referenced by:
HalpInitializeCmc