PspWaitForUsermodeExit
INT64 __stdcall PspWaitForUsermodeExit(_EPROCESS *Process){
_QWORD *i;
_QWORD *NextProcessThread;
void *v4;
LABEL_1:
for( i = 0i64; ; i = NextProcessThread )
{
NextProcessThread = PsGetNextProcessThread((__int64)Process, i);
v4 = NextProcessThread;
if( !NextProcessThread )
break;
if( (*((_DWORD *)NextProcessThread + 29) & 0x400) == 0 && !*((_BYTE *)NextProcessThread + 4) )
{
ObfReferenceObjectWithTag(NextProcessThread, 0x65547350u);
PsQuitNextProcessThread(v4);
KeWaitForSingleObject(v4, Executive, 0, 0, 0i64);
ObfDereferenceObjectWithTag(v4, 0x65547350ui64);
goto LABEL_1;
}
}
return 0i64;
}Referenced by:
PsShutdownSystem
PspShutdownCsrProcess
PspWaitOnAllProcessesJobCallback