EtwTiLogSuspendResumeProcess
VOID __stdcall EtwTiLogSuspendResumeProcess(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
int v4;
REGHANDLE v7;
__int64 v8;
int v9;
int v10;
__int64 *v11;
int v12;
NTSTATUS v13;
int v14;
int v15;
int v16;
unsigned __int64 v17;
unsigned __int64 v18;
_EVENT_DATA_DESCRIPTOR UserData;
__int64 v20[28];
int v21;
if( (int)a1 >= 0 )
{
v21 = a1;
v4 = a4;
if( KeGetCurrentThread()->PreviousMode == 1 )
{
v7 = *(&ExBootDevicesRemovedEvent + 179);
if( EtwProviderEnabled(*(&ExBootDevicesRemovedEvent + 179), 0, 0xC00000ui64) )
{
v8 = *(_QWORD *)(a2 + 544);
if( v4 )
{
v9 = v4 - 1;
if( v9 )
{
v10 = v9 - 1;
if( v10 )
{
if( v10 != 1 )
return;
v11 = (__int64 *)&THREATINT_THAW_PROCESS;
}
else
{
v11 = THREATINT_FREEZE_PROCESS;
}
}
else
{
v11 = THREATINT_RESUME_PROCESS;
}
}
else
{
v11 = THREATINT_SUSPEND_PROCESS;
}
if( EtwEventEnabled(v7, (PCEVENT_DESCRIPTOR)v11) )
{
UserData.Reserved = 0;
UserData.Ptr = (unsigned __int64)&v21;
UserData.Size = 4;
v12 = EtwpTiFillProcessIdentity(v20, v8, &v17);
v13 = EtwpTiFillThreadIdentity((INT64)(&UserData + (unsigned int)(v12 + 1)), a2);
v15 = EtwpTiFillProcessIdentity(&UserData.Ptr + 2 * (unsigned int)(v13 + v14), a3, &v18);
EtwWrite(*(&ExBootDevicesRemovedEvent + 179), (PCEVENT_DESCRIPTOR)v11, 0, v15 + v16, &UserData);
}
}
}
}
}Referenced by:
PsFreezeProcess
PsResumeProcess
PsSuspendProcess
PsThawProcess