PopInitializeIrpWorkers
INT64 __fastcall PopInitializeIrpWorkers(){
INT64 result;
int v1;
PopCreateIrpWorkerAllowed = 1;
qword_140C20A68 = (__int64)&PopIrpThreadList;
PopIrpThreadList = (__int64)&PopIrpThreadList;
qword_140C23228 = (__int64)&PopIrpWorkerList;
PopIrpWorkerList = (__int64)&PopIrpWorkerList;
PopIrpWorkerSemaphore.Header.WaitListHead.Blink = &PopIrpWorkerSemaphore.Header.WaitListHead;
PopIrpWorkerSemaphore.Header.WaitListHead.Flink = &PopIrpWorkerSemaphore.Header.WaitListHead;
PopIrpWorkerControlEvent.Header.WaitListHead.Blink = &PopIrpWorkerControlEvent.Header.WaitListHead;
PopIrpWorkerControlEvent.Header.WaitListHead.Flink = &PopIrpWorkerControlEvent.Header.WaitListHead;
PopIrpWorkerMutex.Event.Header.WaitListHead.Blink = &PopIrpWorkerMutex.Event.Header.WaitListHead;
PopIrpWorkerMutex.Event.Header.WaitListHead.Flink = &PopIrpWorkerMutex.Event.Header.WaitListHead;
PopIrpWorkerCount = 0;
PopIrpWorkerInFlightCount = 0;
PopIrpWorkerPendingCount = 0;
PopIrpWorkerRequested = 0;
PopIrpWorkerSemaphore.Header.Type = 5;
PopIrpWorkerSemaphore.Header.Size = 8;
PopIrpWorkerSemaphore.Header.SignalState = 0;
PopIrpWorkerSemaphore.Limit = 0x7FFFFFFF;
LOWORD(PopIrpWorkerControlEvent.Header.Lock) = 1;
PopIrpWorkerControlEvent.Header.Size = 6;
PopIrpWorkerControlEvent.Header.SignalState = 0;
PopIrpWorkerMutex.Count = 1;
PopIrpWorkerMutex.Owner = 0i64;
PopIrpWorkerMutex.Contention = 0;
LOWORD(PopIrpWorkerMutex.Event.Header.Lock) = 1;
PopIrpWorkerMutex.Event.Header.Size = 6;
PopIrpWorkerMutex.Event.Header.SignalState = 0;
ExInitializeNPagedLookasideListInternal((__int64)PopDynamicIrpWorkerLookaside, 0i64, 0i64, 512, 8, 1917415248, 0, 0);
LODWORD(result) = PopCreatePowerThread(PopIrpWorkerControl, 0i64);
if( (int)result >= 0 )
{
PopIrpWorkerPendingCount = 2;
v1 = 0;
while( 1 )
{
LODWORD(result) = PopCreatePowerThread((KSTART_ROUTINE *)PopIrpWorker, 0i64);
if( (int)result < 0 )
break;
if( (unsigned int)++v1 >= 2 )
return 0i64;
}
}
return result;
}Referenced by:
PoInitSystem