EtwQueryProcessTelemetryCoverage
UINT8 __stdcall EtwQueryProcessTelemetryCoverage(_ERESOURCE *Resource, UINT8 Wait){
size_t v2;
size_t *v3;
size_t *v4;
size_t v5;
VOID *v6;
_ETHREAD *CurrentThread;
INT64 v8;
size_t v9;
__int64 *v10;
__int64 *i;
_DWORD *v12;
size_t v13;
__int64 v14;
__int64 *j;
size_t v16;
__int64 v17;
UINT8 v19;
v4 = v3;
v5 = v2;
v6 = (VOID *)Wait;
if( Resource == (_ERESOURCE *)KeGetCurrentThread()->ApcState.Process )
{
if( EtwpCoverageContext )
{
if( EtwpCoverageUserIsAdmin() )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 166, 0i64);
qword_140C50300 = (__int64)KeGetCurrentThread();
v8 = EtwpCoverageContext;
v9 = *(_DWORD *)(*(_QWORD *)(EtwpCoverageContext + 16) + 16i64);
v10 = (__int64 *)(EtwpCoverageContext + 48);
for( i = *(__int64 **)(EtwpCoverageContext + 48); i != v10; i = (__int64 *)*i )
v9 = *((_DWORD *)i + 6) - (_DWORD)i + v9 - 40;
if( v4 )
*v4 = v9;
v12 = *(_DWORD **)(v8 + 16);
v13 = v12[4];
if( v5 < v13 )
v13 = v5;
if( v13 )
{
v14 = v13;
memmove(v6, v12, v13);
v6 = (char *)v6 + v14;
}
if( v5 < v9 )
{
v19 = 5;
}
else
{
for( j = (__int64 *)*v10; j != v10; j = (__int64 *)*j )
{
v16 = *((_DWORD *)j + 6) - (_DWORD)j - 40;
if( *((_DWORD *)j + 6) - (_DWORD)j != 40 )
{
v17 = v16;
memmove(v6, j + 5, v16);
v6 = (char *)v6 + v17;
}
}
v19 = 0;
}
}
else
{
v19 = 34;
}
}
else
{
v19 = -73;
}
}
else
{
v19 = -69;
}
if( (struct _KTHREAD *)qword_140C50300 == KeGetCurrentThread() )
{
qword_140C50300 = 0i64;
if( (_InterlockedExchangeAdd64((_QWORD *)&ExBootDevicesRemovedEvent + 166, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 166);
KeAbPostRelease((char *)&ExBootDevicesRemovedEvent + 1328);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}
return v19;
}Referenced by:
NtQueryInformationProcess