ExInitializeProcessor
NTSTATUS __stdcall ExInitializeProcessor(_KPRCB *Prcb, UINT8 HotAddProcessor){
_KNODE *ParentNode;
_GENERAL_LOOKASIDE *PoolWithTag;
__int64 v7;
ParentNode = 0i64;
PoolWithTag = (_GENERAL_LOOKASIDE *)ExAllocatePoolWithTag(0x200ui64, 0x80ui64, 1128888389i64);
if( PoolWithTag )
{
ExInitializeSystemLookasideList(
(_DWORD)PoolWithTag,
512,
1264,
1128888389,
32,
(__int64)&WheapDeferredInternalLogsEventLock + 2896);
Prcb->PPLookasideList[8].P = PoolWithTag;
}
if( HotAddProcessor )
{
v7 = Prcb->ParentNode->Affinity.Reserved[0];
if( (_UNKNOWN *)KeNodeBlock[v7] != (_UNKNOWN *)((char *)&KiNodeInit + 384 * v7) )
ParentNode = Prcb->ParentNode;
if( !_InterlockedCompareExchange64(
(volatile signed __int64 *)&ParentNode[1].IdleCpuSet,
(signed __int64)ParentNode,
0i64) )
ExQueueWorkItem((PWORK_QUEUE_ITEM)&ParentNode[1], DelayedWorkQueue);
Prcb->ExSaPageArray = *(void **)(*(&WheapDeferredInternalLogsEventLock + 52) + 8i64 * Prcb->Number);
}
return 0;
}Referenced by:
ExpInitSystemPhase1
KiStartDynamicProcessor