PsResumeProcess

NTSTATUS __stdcall PsResumeProcess(_EPROCESS *Process){
  _ETHREAD *CurrentThread; 
  _EX_RUNDOWN_REF *p_RundownProtect; 
  _LIST_ENTRY **NextProcessThread; 
  unsigned int v5; 
  _ETHREAD *v6; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  p_RundownProtect = &Process->RundownProtect;
  if( ExAcquireRundownProtection(&Process->RundownProtect) == 1 )
  {
    NextProcessThread = PsGetNextProcessThread(Process, 0i64);
    v5 = 0;
    while( 1 )
    {
      v6 = (_ETHREAD *)NextProcessThread;
      if( !NextProcessThread )
        break;
      if( (*((_DWORD *)NextProcessThread + 29) & 0x200000) == 0 )
        KeResumeThread((_KTHREAD *)NextProcessThread);
      NextProcessThread = PsGetNextProcessThread(Process, v6);
    }
    ExReleaseRundownProtection(p_RundownProtect);
  }
  else
  {
    v5 = -1073741558;
  }
  KeLeaveCriticalRegionThread(&CurrentThread->Tcb);
  if( (Process->Flags3 & 0x80000) != 0 )
    EtwTiLogSuspendResumeProcess(v5, (INT64)CurrentThread, (INT64)Process, 1i64);
  return v5;
}

Referenced by:

NtResumeProcess