EtwpSetProviderBinaryTracking
NTSTATUS __stdcall EtwpSetProviderBinaryTracking(_ETW_SILODRIVERSTATE *SiloState, UINT64 a2, INT8 a3){
NTSTATUS v5;
_WMI_LOGGER_CONTEXT *v6;
_WMI_LOGGER_CONTEXT *v7;
_ETW_GUID_ENTRY *i;
_EX_PUSH_LOCK *NextGuidEntry;
_EX_PUSH_LOCK *v10;
_ETW_GUID_ENTRY *j;
_EX_PUSH_LOCK *v12;
_EX_PUSH_LOCK *v13;
v5 = 0;
v6 = EtwpAcquireLoggerContextByLoggerId(SiloState, a2, 0);
v7 = v6;
if( !v6 )
return -1073741811;
if( a3 )
{
_InterlockedOr((volatile signed __int32 *)&v6->832, 0x2000000u);
for( i = 0i64; ; i = (_ETW_GUID_ENTRY *)v10 )
{
NextGuidEntry = (_EX_PUSH_LOCK *)EtwpGetNextGuidEntry(SiloState, i, EtwTraceGuidType);
v10 = NextGuidEntry;
if( !NextGuidEntry )
break;
EtwpTrackGuidEntryRegistrations(v7, NextGuidEntry, 0);
}
for( j = 0i64; ; j = (_ETW_GUID_ENTRY *)v13 )
{
v12 = (_EX_PUSH_LOCK *)EtwpGetNextGuidEntry(SiloState, j, EtwGroupGuidType);
v13 = v12;
if( !v12 )
break;
EtwpTrackGuidEntryRegistrations(v7, v12, 2);
}
}
else
{
_InterlockedAnd((volatile signed __int32 *)&v6->832, 0xFDFFFFFF);
}
EtwpReleaseLoggerContext(v7, 0);
return v5;
}Referenced by:
NtTraceControl