PsResumeThread
NTSTATUS __stdcall PsResumeThread(_ETHREAD *Thread, UINT64 *PreviousSuspendCount){
int v4;
_ETHREAD *CurrentThread;
int v6;
_EPROCESS *Process;
unsigned int Flags3;
v4 = KeResumeThread(&Thread->Tcb);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v6 = v4;
if( v4 == 1 )
{
Process = Thread->Tcb.Process;
Flags3 = Process->Flags3;
if( (Flags3 & 0x8000) == 0 )
{
_InterlockedOr((volatile signed __int32 *)&Process->2172, 0x8000u);
Flags3 = Process->Flags3;
}
if( (Flags3 & 0x100000) != 0 )
EtwTiLogSuspendResumeThread(0i64, (INT64)CurrentThread, (INT64)Thread, 0);
}
if( PreviousSuspendCount )
*(_DWORD *)PreviousSuspendCount = v6;
return 0;
}Referenced by:
DbgkQueueUserExceptionReport
DbgkUserReportWorkRoutine
DbgkpPostFakeThreadMessages
DbgkpWakeTarget
NtResumeThread