EtwSetProcessTelemetryCoverage
INT64 __fastcall EtwSetProcessTelemetryCoverage(__int64 a1, __int64 a2){
INT64 v3;
unsigned int v4;
INT64 result;
int v6;
if( a1 != *((_QWORD *)KeGetCurrentThread() + 23) )
return 3221225659i64;
if( EtwpCoverageContext || (result = EtwpCoverageEnsureContext(), (int)result >= 0) )
{
v3 = EtwpCoverageContext;
if( (*(_DWORD *)(a2 + 16) & 1) != 0 )
{
*(_DWORD *)(a2 + 12) = -1;
}
else
{
v4 = *(_DWORD *)(a2 + 12);
if( v4 < 0xFFFFFF00 )
{
EtwpCoverageRecord((INT64 **)EtwpCoverageContext, a2);
result = EtwpCoverageEnsureUserModeView(v3);
if( (int)result < 0 )
return result;
return 0i64;
}
switch( v4 )
{
case 0xFFFFFFFE:
v6 = EtwpCoverageCheckCP(EtwpCoverageContext, a2);
goto LABEL_16;
case 0xFFFFFFFD:
v6 = EtwpCoverageResetCP(EtwpCoverageContext, a2);
LABEL_16:
if( !v6 )
return 3221226021i64;
return 0i64;
case 0xFFFFFFFC:
if( !EtwpCoverageUserIsAdmin() )
return 3221225506i64;
EtwpCoverageReset(v3, 1);
*(_DWORD *)(a2 + 12) = *(_DWORD *)(*(_QWORD *)(v3 + 16) + 24i64);
return 0i64;
case 0xFFFFFFFB:
EtwpCoverageRecordAtHighIrql(a2);
return 0i64;
}
}
return 3221225485i64;
}
return result;
}Referenced by:
NtSetInformationProcess