KiSetIdealNodeProcessByGroup
VOID __stdcall KiSetIdealNodeProcessByGroup(_EPROCESS *Process, _KNODE *IdealNode, UINT64 Group){
__int64 v3;
_KNODE *v4;
unsigned __int64 v6;
unsigned __int16 v7;
_GROUP_AFFINITY GroupAffinity;
v3 = (unsigned __int16)Group;
v4 = IdealNode;
GroupAffinity = 0i64;
GroupAffinity.Group = Group;
v6 = Process->Pcb.Affinity.Bitmap[(unsigned __int16)Group];
GroupAffinity.Mask = v6;
if( !IdealNode )
v4 = KeSelectNodeForAffinity(&GroupAffinity);
Process->Pcb.IdealNode[v3] = v4->Affinity.Reserved[0];
GroupAffinity.Mask = v6 & v4->Affinity.Mask;
v7 = KiSelectIdealProcessorForProcess((INT64)v4, (INT64 *)&GroupAffinity);
Process->Pcb.IdealProcessor[v3] = v7;
Process->Pcb.ThreadSeed[v3] = v7;
}Referenced by:
KeInitializeProcess
KeSetAffinityProcess
KiExtendProcessAffinity