EtwpCoverageReset
_ETHREAD *__stdcall EtwpCoverageReset(INT64 a1, CHAR a2){
_ETHREAD *CurrentThread;
__int64 v5;
_ETHREAD *result;
int v7;
if( *(_DWORD *)(*(_QWORD *)(a1 + 16) + 32i64) )
{
if( dword_140C0EF3C < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0EF38 )
dword_140C0EF38 = TelemetryCoverageStringHashInternal((_BYTE *)off_140C0EF30, &v7);
EtwTelemetryCoverageReport((INT64)&off_140C0EF30);
}
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 166, 0i64);
qword_140C50300 = (__int64)KeGetCurrentThread();
if( (a2 & 4) == 0 || (*(_DWORD *)(a1 + 36) & 1) != 0 )
{
if( (a2 & 1) != 0
|| (unsigned int)((KUSER_SHARED_DATA.TickCountQuad * KUSER_SHARED_DATA.TickCountMultiplier) >> 24)
- *(_DWORD *)(a1 + 24) > 0x927C0 )
{
*(_DWORD *)(a1 + 36) &= ~1u;
EtwpCoverageFlushPending(a1);
memset((VOID *)(*(_QWORD *)(a1 + 16) + 52i64), 0i64, 4 * *(_DWORD *)(*(_QWORD *)(a1 + 16) + 4i64));
EtwpCoverageFreeStringBuffers(a1, 1i64);
*(_DWORD *)(*(_QWORD *)a1 + 4i64) = 0;
**(_DWORD **)a1 = ++*(_DWORD *)(*(_QWORD *)(a1 + 16) + 24i64);
v5 = *(_QWORD *)(a1 + 16);
if( (*(_BYTE *)(v5 + 2) & 1) == 0 )
KUSER_SHARED_DATA.TelemetryCoverageRound = *(_DWORD *)(v5 + 24);
*(_DWORD *)(*(_QWORD *)(a1 + 16) + 20i64) = (KUSER_SHARED_DATA.TickCountQuad
* KUSER_SHARED_DATA.TickCountMultiplier) >> 24;
*(_DWORD *)(*(_QWORD *)a1 + 20i64) = *(_DWORD *)(*(_QWORD *)(a1 + 16) + 20i64);
*(_DWORD *)(*(_QWORD *)(a1 + 16) + 32i64) = 0;
}
else
{
*(_DWORD *)(a1 + 36) |= 1u;
}
}
}
result = (_ETHREAD *)KeGetCurrentThread();
if( (_ETHREAD *)qword_140C50300 == result )
{
qword_140C50300 = 0i64;
if( (_InterlockedExchangeAdd64((_QWORD *)&ExBootDevicesRemovedEvent + 166, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 166);
KeAbPostRelease((char *)&ExBootDevicesRemovedEvent + 1328);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}
return result;
}Referenced by:
EtwSetProcessTelemetryCoverage
EtwpCoverageResetWorkItemCallback