ExpSetWorkerFactoryDeferredCreateTimer
VOID __fastcall ExpSetWorkerFactoryDeferredCreateTimer(INT64 NewState){
LARGE_INTEGER v1;
ULONG v2;
signed __int32 v3;
int v4;
switch( (_DWORD)NewState )
{
case 1:
v1.QuadPart = ExpWorkerFactoryDeferredLongTimeout;
v2 = 500;
break;
case 2:
v1.QuadPart = ExpWorkerFactoryDeferredMediumTimeout;
v2 = 120;
break;
case 3:
v1 = ExpWorkerFactoryDeferredShortTimeout;
v2 = 30;
break;
default:
v1.QuadPart = 0i64;
v2 = 0;
break;
}
_m_prefetchw(&ExpWorkerFactoryThreadCreationState);
v3 = ExpWorkerFactoryThreadCreationState;
if( (int)NewState > ExpWorkerFactoryThreadCreationState )
{
while( 1 )
{
v4 = _InterlockedCompareExchange(&ExpWorkerFactoryThreadCreationState, NewState, v3);
if( v3 == v4 )
break;
v3 = v4;
if( (int)NewState <= v4 )
return;
}
KeSetCoalescableTimer((PKTIMER)&ExpWorkerFactoryThreadCreationTimer, v1, 0, v2, 0i64);
}
}Referenced by:
ExpWorkerFactoryCheckCreate