ViPendingQueuePassiveLevelCompletion
UINT64 __stdcall ViPendingQueuePassiveLevelCompletion(_VF_PENDING_DEFERRAL_CONTEXT *DeferralContext){
_ETHREAD *CurrentThread;
KPRIORITY v3;
KPRIORITY v4;
unsigned int v5;
__int64 v7;
if( !ViPendingWorkersCount )
return 0i64;
KeQueryPriorityThread((_ETHREAD *)KeGetCurrentThread());
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v4 = v3;
--CurrentThread->Tcb.KernelApcDisable;
v5 = ViPendingTryReserveWorker(DeferralContext);
if( v5 == -1 )
{
KeLeaveCriticalRegionThread(KeGetCurrentThread());
return 0i64;
}
v7 = 48i64 * v5;
KeSetPriorityThread(*(PKTHREAD *)((char *)&ViPendingWorkers + v7), v4);
KeSetEvent((PRKEVENT)((char *)&ViPendingWorkers + v7 + 16), 0, 0);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
return 1i64;
}Referenced by:
ViPendingDelayCompletion