KiIpiSendRequestEx

NTSTATUS __fastcall KiIpiSendRequestEx(
        _KPRCB *Prcb,
        _IPI_TYPE IpiType,
        _WORD *a3,
        UINT64 Parameter,
        UINT64 RequestType,
        INT64 a6,
        INT64 a7){
  _KAFFINITY_EX *v8; 
  NTSTATUS result; 
  int i; 
  UINT64 v13; 

  v8 = (_KAFFINITY_EX *)a3;
  if( IpiType )
  {
    if( (unsigned int)KeNumberProcessors_0 <= 1 )
    {
LABEL_3:
      result = a6;
      if( a6 )
        return((__int64(__fastcall *)(INT64))a6)(a7);
      return result;
    }
  }
  else if( !KiAffinityContainsProcessorsOtherThanSelf((INT64)Prcb, a3) )
  {
    goto LABEL_3;
  }
  KiIpiSendRequest(Prcb, IpiType, v8, Parameter, RequestType, v13);
  if( a6 )
    ((void(__fastcall *)(INT64))a6)(a7);
  result = Prcb->PacketBarrier;
  for( i = 0; result; result = Prcb->PacketBarrier )
  {
    ++i;
    _mm_pause();
  }
  return result;
}

Referenced by:

KeInvalidateAllCaches
KeInvalidateRangeAllCaches
KxFlushEntireTb
KxFlushNonGlobalTb