KeQueryNodeActiveAffinity
VOID *__stdcall KeQueryNodeActiveAffinity(UINT16 NodeNumber, PGROUP_AFFINITY Affinity, PUSHORT Count){
VOID *result;
__int64 v4;
unsigned __int64 v5;
if( Affinity )
*Affinity = 0i64;
if( Count )
*Count = 0;
if( NodeNumber < (unsigned __int16)KeNumberNodes )
{
_mm_lfence();
result = (VOID *)NodeNumber;
v4 = KeNodeBlock[NodeNumber];
if( Affinity )
{
Affinity->Group = *(_WORD *)(v4 + 144);
result = *(VOID **)(v4 + 136);
Affinity->Mask = (unsigned __int64)result;
}
if( Count )
{
v5 = *(_QWORD *)(v4 + 136) - ((*(_QWORD *)(v4 + 136) >> 1) & 0x5555555555555555i64);
result = (VOID *)((0x101010101010101i64
* (((v5 & 0x3333333333333333i64)
+ ((v5 >> 2) & 0x3333333333333333i64)
+ (((v5 & 0x3333333333333333i64) + ((v5 >> 2) & 0x3333333333333333i64)) >> 4)) & 0xF0F0F0F0F0F0F0Fi64)) >> 56);
*Count = (unsigned __int16)result;
}
}
return result;
}Referenced by:
EtwpProcessorRundown
ExAllocateCacheAwarePushLock
ExProcessorCounterSetCallback
ExpNodeCreateSystemThread
ExpPartitionStart
ExpQueryNumaProcessorMap
ExpSaPageGroupDescriptorAllocate
ExpWorkQueueInitialize
ExpWorkQueueManagerInitialize
ExpWorkQueueManagerThread
ExpWorkerThread
KeQueryNodeActiveDpcGangAffinity
KiConfigureSchedulingInformation
MiComputeIdealDpcGang
MiComputeMemoryNodeProcessorAssignments
MiCreateColorAnchors
MiGetClosestNodeWithProcessors
PnpSetDeviceAffinityThread
PpmParkRegisterParking