HalpInterruptSelectController
NTSTATUS __stdcall HalpInterruptSelectController(_REGISTERED_INTERRUPT_CONTROLLER **PrimaryController){
_REGISTERED_INTERRUPT_CONTROLLER *InterruptController;
_REGISTERED_INTERRUPT_CONTROLLER *v3;
int v4;
unsigned int Capabilities;
_REGISTERED_INTERRUPT_CONTROLLER *v7;
InterruptController = (_REGISTERED_INTERRUPT_CONTROLLER *)HalpFindInterruptController(2i64);
v3 = InterruptController;
if( InterruptController && (v4 = HalpInterruptInitializeController(InterruptController), v4 >= 0)
|| (v7 = (_REGISTERED_INTERRUPT_CONTROLLER *)HalpFindInterruptController(0i64), (v3 = v7) != 0i64)
&& (v4 = HalpInterruptInitializeController(v7), v4 >= 0) )
{
*PrimaryController = v3;
}
else
{
v4 = -1073741810;
*(&CmpDummyThreadEvent + 1789) = 2;
}
if( v4 >= 0 )
{
if( (*PrimaryController)->FunctionTable.FastEndOfInterrupt )
HalPerformEndOfInterruptAtController[0] = (__int64(__fastcall *)())(*PrimaryController)->FunctionTable.FastEndOfInterrupt;
Capabilities = v3->Capabilities;
if( (Capabilities & 1) != 0 )
{
*(&CmpDummyThreadEvent + 7080) = 1;
if( (Capabilities & 0x400) != 0 )
*(&CmpDummyThreadEvent + 7094) = 1;
}
}
return v4;
}Referenced by:
HalpInitializeInterrupts