EtwTraceJobServerSiloMonitorCallback
BOOLEAN __fastcall EtwTraceJobServerSiloMonitorCallback(int a1, _EJOB *a2, unsigned __int16 *a3, int a4){
__int64 *v7;
REGHANDLE v8;
BOOLEAN result;
_EJOB *v10;
unsigned int v11;
unsigned __int64 v12;
__int64 v13;
unsigned int v14;
__int64 v15;
UINT64 JobIdOut;
_GUID GuidOut;
_EVENT_DATA_DESCRIPTOR UserData;
UINT64 *p_JobIdOut;
int v20;
int v21;
int *v22;
int v23;
int v24;
int v25;
v25 = a4;
LODWORD(JobIdOut) = 0;
GuidOut = 0i64;
if( a1 )
{
if( a1 == 1 )
{
v7 = (__int64 *)&ServerSiloCreateCallbackStop;
}
else if( a1 == 2 )
{
v7 = ServerSiloTerminateCallbackStart;
}
else
{
v7 = ServerSiloTerminateCallbackStop;
}
}
else
{
v7 = ServerSiloCreateCallbackStart;
}
v8 = *(&ExBootDevicesRemovedEvent + 245);
result = EtwEventEnabled(*(&ExBootDevicesRemovedEvent + 245), (PCEVENT_DESCRIPTOR)v7);
if( result )
{
EtwpCopyJobGuidSafe(&GuidOut, a2);
UserData.Reserved = 0;
UserData.Ptr = (unsigned __int64)&GuidOut;
UserData.Size = 16;
EtwpCopyJobIdSafe(&JobIdOut, v10);
v21 = 0;
p_JobIdOut = &JobIdOut;
v20 = 4;
v11 = 2;
if( a1 == 1 )
{
v24 = 0;
v22 = &v25;
v11 = 3;
v23 = 4;
}
v12 = *((_QWORD *)a3 + 1);
v13 = v11;
v14 = v11 + 1;
v13 *= 2i64;
*(&UserData.Reserved + 2 * v13) = 0;
*(&UserData.Ptr + v13) = v12;
*(&UserData.Size + 2 * v13) = *a3;
v15 = 2i64 * v14;
*(&UserData.Reserved + 2 * v15) = 0;
*(&UserData.Ptr + v15) = (unsigned __int64)&EtwpNull;
*(&UserData.Size + 2 * v15) = 2;
return EtwWriteEx(v8, (PCEVENT_DESCRIPTOR)v7, 0i64, 0, 0, 0, v14 + 1, &UserData);
}
return result;
}Referenced by:
PspInvokeCreateCallback
PspInvokeTerminateCallback