HalpInterruptSetDestination
NTSTATUS __stdcall HalpInterruptSetDestination(
_INTERRUPT_VECTOR_DATA *VectorData,
_GROUP_AFFINITY *TargetProcessors,
UINT64 *Gsiv){
unsigned __int64 v5;
NTSTATUS v6;
_INTERRUPT_LINE Line;
int v10[2];
_GROUP_AFFINITY *v11;
_INTERRUPT_REMAPPING_INFO *p_IntRemapInfo;
_INTERRUPT_LINE v13;
v10[1] = 0;
Line = 0i64;
if( qword_140C4A168 )
return HalpInterruptSetRemappedDestinationHv(Gsiv, VectorData, TargetProcessors);
if( (*(_DWORD *)(Controller + 220) & 0x100) != 0 )
return HalpInterruptSetRemappedDestination((_POP_PPM_PROFILE *)Gsiv, VectorData, (__int64)TargetProcessors);
if( !Gsiv )
return -1073741811;
if( HalpInterruptGsiToLine(*(unsigned int *)Gsiv, &Line) < 0 )
{
*(&CmpDummyThreadEvent + 1789) = 18;
return -1073741811;
}
v13.UnitId = -1;
p_IntRemapInfo = &VectorData->IntRemapInfo;
v10[0] = 1;
v11 = TargetProcessors;
v13.Line = 1;
v5 = (unsigned __int8)HalpAcquireHighLevelLock(&qword_140C49C40);
v6 = HalpInterruptSetDestinationInternal(&Line, (__int64)v10, &v13);
KxReleaseSpinLock(&qword_140C49C40);
__writecr8(v5);
return v6;
}Referenced by:
ExtEnvSetVpptTarget