PnpSetDeviceAffinityThread

__int64 __fastcall PnpSetDeviceAffinityThread(__int64 a1, _GROUP_AFFINITY *a2){
  unsigned int v3; 
  _GROUP_AFFINITY Affinity; 

  Affinity = 0i64;
  if( a1 )
    a1 = *(_QWORD *)(*(_QWORD *)(a1 + 312) + 40i64);
  if( !a1 )
    return 0i64;
  v3 = *(_DWORD *)(a1 + 660);
  if( v3 > 0xFFFFFFFD )
    return 0i64;
  if( v3 >= (unsigned __int16)KeNumberNodes )
    return 0i64;
  KeQueryNodeActiveAffinity(*(_WORD *)(a1 + 660), &Affinity, 0i64);
  KeAndGroupAffinityEx(&KeActiveProcessors, &Affinity, &Affinity);
  if( !Affinity.Mask )
    return 0i64;
  KeSetSystemGroupAffinityThread(&Affinity, a2);
  return 1i64;
}

Referenced by:

PnpCallAddDevice
PnpSendIrp