HalpInitializeCmciVector
NTSTATUS __fastcall HalpInitializeCmciVector(_REGISTERED_INTERRUPT_CONTROLLER *Controller, UINT64 a2){
unsigned int v2;
bool v4;
_INTERRUPT_LINE_STATE LineState;
_INTERRUPT_LINE Line;
*(_DWORD *)&LineState.EmulateActiveBoth = 0;
v2 = a2;
*((_DWORD *)&LineState.ProcessorTarget.Target + 1) = 0;
*(_QWORD *)(&LineState.ProcessorTarget.ClusterId + 1) = 0i64;
HIDWORD(LineState.ProcessorTarget.HypervisorTarget.InterruptData) = 0;
v4 = Controller->KnownType == InterruptControllerApic;
Line.UnitId = Controller->UnitId;
Line.Line = -7;
if( !v4 || !HalpInterruptFindLines((unsigned int *)&Line) )
return 0;
*(_DWORD *)&LineState.EmulateActiveBoth = 0;
*((_DWORD *)&LineState.ProcessorTarget.Target + 1) = 0;
*(_QWORD *)(&LineState.ProcessorTarget.ClusterId + 1) = 0i64;
HIDWORD(LineState.ProcessorTarget.HypervisorTarget.InterruptData) = 0;
LineState.Routing.UnitId = -1;
LineState.Vector = 53;
LineState.Polarity = InterruptActiveHigh;
LineState.TriggerMode = Latched;
LineState.Flags = 16;
LineState.Routing.Line = 1;
LineState.ProcessorTarget.Target = InterruptTargetPhysical;
LineState.ProcessorTarget.PhysicalTarget = v2;
LineState.Priority = HalpInterruptGetPriority((INT64)Controller, 0x35u);
return HalpInterruptSetLineStateInternal(Controller, &Line, &LineState);
}Referenced by:
HalpInterruptInitializeLocalUnit