KeForceResumeProcess
VOID __stdcall KeForceResumeProcess(_EPROCESS *TargetProcess){
_QWORD **v2;
UINT8 OldIrql;
_KPRCB *CurrentPrcb;
INT64 *v5;
_QWORD *i;
v2 = (_QWORD **)((char *)TargetProcess + 48);
OldIrql = KeGetCurrentIrql();
__writecr8(2ui64);
CurrentPrcb = KeGetCurrentPrcb();
v5 = (INT64 *)((char *)TargetProcess + 64);
ExAcquireSpinLockExclusiveAtDpcLevel((INT64 *)TargetProcess + 8);
if( *((_DWORD *)TargetProcess + 222) + ((*((_DWORD *)TargetProcess + 158) >> 3) & 1) )
{
_interlockedbittestandreset((volatile signed __int32 *)TargetProcess + 158, 3u);
*((_DWORD *)TargetProcess + 222) = 0;
for( i = *v2; i != v2; i = (_QWORD *)*i )
KiThawSingleThread(CurrentPrcb, (_KTHREAD *)(i - 95), 1u);
ExReleaseSpinLockExclusiveFromDpcLevel(v5);
KiExitDispatcher(CurrentPrcb, 0i64, AdjustUnwait, 0i64, OldIrql);
}
else
{
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)TargetProcess + 8);
__writecr8(OldIrql);
}
}Referenced by:
MiReAcquireCommitFailWorker
PsFreezeProcess
PspExitThread
PspTerminateProcess