EtwpCoverageProvEnableCallback
_QWORD *EtwpCoverageProvEnableCallback(){
unsigned __int8 v0;
_ETHREAD *CurrentThread;
int v3[6];
if( dword_140C02BE8 && tlgKeywordOn((__int64)&dword_140C02BE8, 1i64) )
{
v0 = 1;
if( !EtwpCoverageCoreTracingEnabled && dword_140C0EF54 < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0EF50 )
dword_140C0EF50 = TelemetryCoverageStringHashInternal((_BYTE *)off_140C0EF48, v3);
EtwTelemetryCoverageReport((INT64)&off_140C0EF48);
}
}
else
{
v0 = 0;
}
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx((UINT64)&EtwpCoverageLock, 0i64);
EtwpCoverageLockOwner = (__int64)KeGetCurrentThread();
if( EtwpCoverageContext && EtwpCoverageCoreTracingEnabled != v0 )
{
if( v0 )
{
KUSER_SHARED_DATA.TelemetryCoverageRound = -256;
*(_WORD *)(*(_QWORD *)(EtwpCoverageContext + 16) + 2i64) |= 1u;
}
else
{
KUSER_SHARED_DATA.TelemetryCoverageRound = *(_DWORD *)(*(_QWORD *)(EtwpCoverageContext + 16) + 24i64);
*(_WORD *)(*(_QWORD *)(EtwpCoverageContext + 16) + 2i64) &= ~1u;
}
}
EtwpCoverageLockOwner = 0i64;
EtwpCoverageCoreTracingEnabled = v0;
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&EtwpCoverageLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&EtwpCoverageLock);
KeAbPostRelease(&EtwpCoverageLock);
return KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
No references.