KeForceResumeProcess

VOID __stdcall KeForceResumeProcess(_EPROCESS *TargetProcess){
  _LIST_ENTRY *p_ThreadListHead; 
  UINT8 OldIrql; 
  _KPRCB *CurrentPrcb; 
  unsigned int *p_ProcessLock; 
  _LIST_ENTRY *i; 

  p_ThreadListHead = &TargetProcess->Pcb.ThreadListHead;
  OldIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  CurrentPrcb = KeGetCurrentPrcb();
  p_ProcessLock = &TargetProcess->Pcb.ProcessLock;
  ExAcquireSpinLockExclusiveAtDpcLevel((INT64 *)&TargetProcess->Pcb.ProcessLock);
  if( TargetProcess->Pcb.FreezeCount + (((unsigned __int32)TargetProcess->Pcb._bf_0 >> 3) & 1) )
  {
    _interlockedbittestandreset(&TargetProcess->Pcb.ProcessFlags, 3u);
    TargetProcess->Pcb.FreezeCount = 0;
    for( i = p_ThreadListHead->Flink; i != p_ThreadListHead; i = i->Flink )
      KiThawSingleThread(CurrentPrcb, (_KTHREAD *)&i[-48].Blink, 1u);
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)p_ProcessLock);
    KiExitDispatcher(CurrentPrcb, 0i64, AdjustUnwait, 0i64, OldIrql);
  }
  else
  {
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&TargetProcess->Pcb.ProcessLock);
    __writecr8(OldIrql);
  }
}

Referenced by:

MiReAcquireCommitFailWorker
PsFreezeProcess
PspExitThread
PspTerminateProcess