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