PspProcessRundownWorker
VOID __stdcall PspProcessRundownWorker(PVOID StartContext){
void *v1;
__int64 NextProcess;
void *v3;
void *v4;
do
{
v1 = 0i64;
_InterlockedExchange(&PspRundownNeededCount, 1);
while( 1 )
{
NextProcess = PsGetNextProcess(v1);
v3 = (void *)NextProcess;
if( !NextProcess )
break;
if( _interlockedbittestandreset((volatile signed __int32 *)(NextProcess + 1120), 8u) )
{
PspRundownSingleProcess(NextProcess, 0);
ObfDereferenceObjectWithTag(v3, 0x77537350ui64);
}
v1 = v3;
}
while( PspRundownProcessCache )
{
v4 = (void *)_InterlockedExchange64(&PspRundownProcessCache, 0i64);
if( !v4 )
break;
PspRundownSingleProcess((ULONG_PTR)v4, 0);
ObfDereferenceObjectWithTag(v4, 0x77537350ui64);
}
}
while( _InterlockedCompareExchange(&PspRundownNeededCount, 0, 1) != 1 );
}Referenced by:
No references.