ExpWorkQueueManagerInitialize
UINT64 __fastcall ExpWorkQueueManagerInitialize(INT64 a1, INT64 a2, INT64 a3){
__int16 v6;
UINT64 result;
struct _GROUP_AFFINITY Affinity;
Affinity = 0i64;
memset(a1 + 16, 0i64);
*(_QWORD *)a1 = a2;
*(_QWORD *)(a1 + 8) = a3;
KeInitializeEvent((_KEVENT *)(a1 + 16), SynchronizationEvent, 0);
KeInitializeTimerEx((PKTIMER)(a1 + 40), SynchronizationTimer);
KeInitializeEvent((_KEVENT *)(a1 + 104), SynchronizationEvent, 0);
KeInitializeTimer2(a1 + 128, (INT64)ExpWorkQueueManagerReaperTimer, a1, 8i64);
KeQueryNodeActiveAffinity(*(_WORD *)(*(_QWORD *)(a1 + 8) + 146i64), &Affinity, 0i64);
v6 = 0;
result = (0x101010101010101i64
* ((((Affinity.Mask - ((Affinity.Mask >> 1) & 0x5555555555555555i64)) & 0x3333333333333333i64)
+ (((Affinity.Mask - ((Affinity.Mask >> 1) & 0x5555555555555555i64)) >> 2) & 0x3333333333333333i64)
+ ((((Affinity.Mask - ((Affinity.Mask >> 1) & 0x5555555555555555i64)) & 0x3333333333333333i64)
+ (((Affinity.Mask - ((Affinity.Mask >> 1) & 0x5555555555555555i64)) >> 2) & 0x3333333333333333i64)) >> 4)) & 0xF0F0F0F0F0F0F0Fi64)) >> 56;
if( (_BYTE)result )
{
result = KeSelectIdealProcessor(*(_KNODE **)(a1 + 8), &Affinity, 0i64);
v6 = result;
}
*(_WORD *)(a1 + 276) = v6;
return result;
}Referenced by:
ExpPartitionInitialize