IoInitializeProcessor
NTSTATUS __stdcall IoInitializeProcessor(_KPRCB *Prcb, _IO_PROC_INIT_VALUES *InitValues){
_IO_PROC_INIT_VALUES *p_InitValuesa;
_GENERAL_LOOKASIDE *PoolWithTag;
_GENERAL_LOOKASIDE *v6;
int LookasideIrpLimit;
_GENERAL_LOOKASIDE *v8;
_GENERAL_LOOKASIDE *v9;
_GENERAL_LOOKASIDE *v10;
_IO_PROC_INIT_VALUES InitValuesa;
memset(&InitValuesa, 0, sizeof(InitValuesa));
if( !InitValues )
IopQueryProcessorInitValues(&InitValuesa);
p_InitValuesa = &InitValuesa;
if( InitValues )
p_InitValuesa = InitValues;
PoolWithTag = (_GENERAL_LOOKASIDE *)ExAllocatePoolWithTag(0x200ui64, 0x280ui64, 28489i64);
v6 = PoolWithTag;
if( dword_140CEBEF8 > 0 )
LookasideIrpLimit = p_InitValuesa->LookasideIrpLimit;
else
LookasideIrpLimit = 0x7FFFFFFF;
Prcb->LookasideIrpFloat = LookasideIrpLimit;
Prcb->PPLookasideList[7].L = (_GENERAL_LOOKASIDE *)&IopCompletionLookasideList;
if( PoolWithTag )
ExInitializeSystemLookasideList(
(_DWORD)PoolWithTag++,
512,
56,
1349542729,
p_InitValuesa->CompletionZoneSize,
(__int64)&WheapDeferredInternalLogsEventLock + 2896);
else
v6 = (_GENERAL_LOOKASIDE *)&IopCompletionLookasideList;
Prcb->PPLookasideList[7].P = v6;
Prcb->PPLookasideList[2].L = (_GENERAL_LOOKASIDE *)&IopLargeIrpLookasideList;
v8 = PoolWithTag;
if( PoolWithTag )
ExInitializeSystemLookasideList(
(_DWORD)PoolWithTag++,
512,
p_InitValuesa->LargePacketSize,
1282437705,
p_InitValuesa->LargeIrpZoneSize,
(__int64)&WheapDeferredInternalLogsEventLock + 2896);
else
v8 = (_GENERAL_LOOKASIDE *)&IopLargeIrpLookasideList;
Prcb->PPLookasideList[2].P = v8;
Prcb->PPLookasideList[1].L = (_GENERAL_LOOKASIDE *)&IopMediumIrpLookasideList;
v9 = PoolWithTag;
if( PoolWithTag )
ExInitializeSystemLookasideList(
(_DWORD)PoolWithTag++,
512,
p_InitValuesa->MediumPacketSize,
1299214921,
p_InitValuesa->MediumIrpZoneSize,
(__int64)&WheapDeferredInternalLogsEventLock + 2896);
else
v9 = (_GENERAL_LOOKASIDE *)&IopMediumIrpLookasideList;
Prcb->PPLookasideList[1].P = v9;
Prcb->PPLookasideList[0].L = (_GENERAL_LOOKASIDE *)&IopSmallIrpLookasideList;
v10 = PoolWithTag;
if( PoolWithTag )
ExInitializeSystemLookasideList(
(_DWORD)PoolWithTag++,
512,
p_InitValuesa->SmallPacketSize,
1399878217,
p_InitValuesa->SmallIrpZoneSize,
(__int64)&WheapDeferredInternalLogsEventLock + 2896);
else
v10 = (_GENERAL_LOOKASIDE *)&IopSmallIrpLookasideList;
Prcb->PPLookasideList[0].P = v10;
Prcb->PPLookasideList[3].L = (_GENERAL_LOOKASIDE *)&IopMdlLookasideList;
if( PoolWithTag )
ExInitializeSystemLookasideList(
(_DWORD)PoolWithTag,
512,
p_InitValuesa->MdlPacketSize,
1349280845,
p_InitValuesa->MdlZoneSize,
(__int64)&WheapDeferredInternalLogsEventLock + 2896);
else
PoolWithTag = (_GENERAL_LOOKASIDE *)&IopMdlLookasideList;
Prcb->PPLookasideList[3].P = PoolWithTag;
if( (*(&stru_140C452E0 + 1144) & 3) != 0 )
{
memset(&Prcb->IoIrpStackProfilerCurrent, 0i64, 0x50u);
Prcb->IoIrpStackProfilerCurrent.TotalIrps = 0;
memset(&Prcb->IoIrpStackProfilerPrevious, 0i64, 0x50u);
Prcb->IoIrpStackProfilerPrevious.TotalIrps = 0;
}
return 0;
}Referenced by:
IoInitSystemPreDrivers
KiStartDynamicProcessor