PopRunMaximumIrpWorkers
VOID __stdcall PopRunMaximumIrpWorkers(){
__int64 v0;
unsigned int v1;
bool v2;
unsigned int v3;
__int64 v4;
KSEMAPHORE Object;
*(&Object.Limit + 1) = 0;
ExAcquireFastMutex(&PopIrpWorkerMutex);
PopCreateIrpWorkerAllowed = 0;
v0 = (unsigned int)(15 - PopIrpWorkerPendingCount - PopIrpWorkerCount);
PopIrpWorkerPendingCount += v0;
KeReleaseGuardedMutex(&PopIrpWorkerMutex);
Object.Header.SignalState = 0;
Object.Header.WaitListHead.Blink = &Object.Header.WaitListHead;
v1 = 0;
Object.Header.LockNV = 524293;
Object.Header.WaitListHead.Flink = &Object.Header.WaitListHead;
Object.Limit = v0;
if( (_DWORD)v0 )
{
do
{
v2 = PopCreateDynamicIrpWorker(&Object) < 0;
v3 = v1 + 1;
if( v2 )
v3 = v1;
v1 = v3;
--v0;
}
while( v0 );
if( v3 )
{
v4 = v3;
do
{
KeWaitForSingleObject(&Object, Executive, 0, 0, 0i64);
--v4;
}
while( v4 );
}
}
}Referenced by:
PopTransitionSystemPowerStateEx