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