EtwpFlushCoverage
VOID __stdcall EtwpFlushCoverage(){
_ETHREAD *CurrentThread;
char v1;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx((UINT64)&EtwpCoverageLock, 0i64);
EtwpCoverageLockOwner = (__int64)KeGetCurrentThread();
if( EtwpCoverageContext )
EtwpCoverageFlushPending(EtwpCoverageContext);
EtwpCoverageLockOwner = 0i64;
v1 = _InterlockedExchangeAdd64((volatile signed __int64 *)&EtwpCoverageLock, 0xFFFFFFFFFFFFFFFFui64);
if( (v1 & 2) != 0 && (v1 & 4) == 0 )
ExfTryToWakePushLock((volatile INT64 *)&EtwpCoverageLock);
KeAbPostRelease(&EtwpCoverageLock);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
EtwShutdown