EtwpDisableTraceProviders
VOID __stdcall EtwpDisableTraceProviders(_ETW_SILODRIVERSTATE *SiloState, UINT64 LoggerId){
unsigned int v2;
unsigned __int16 *UserModeGlobalLogger;
_ETW_GUID_ENTRY *i;
_ETW_GUID_ENTRY *v6;
_ETW_GUID_ENTRY *j;
_ETW_GUID_ENTRY *NextGuidEntry;
_ETW_GUID_ENTRY *v9;
_EPROCESS *v10;
VOID *v11;
unsigned int k;
PLARGE_INTEGER Timeout;
INT64 CallBack;
v2 = LoggerId;
if( SiloState == (_ETW_SILODRIVERSTATE *)EtwpHostSiloState )
UserModeGlobalLogger = (_WORD *)(&KUSER_SHARED_DATA + 896);
else
UserModeGlobalLogger = SiloState->SiloGlobals->UserSharedData->UserModeGlobalLogger;
for( i = EtwpGetNextGuidEntry(SiloState, 0i64, EtwTraceGuidType);
;
i = EtwpGetNextGuidEntry(SiloState, v6, EtwTraceGuidType) )
{
v6 = i;
if( !i )
break;
EtwpClearSessionAndUnreferenceEntry(v2, i, 0);
}
for( j = 0i64; ; j = v9 )
{
NextGuidEntry = EtwpGetNextGuidEntry(SiloState, j, EtwGroupGuidType);
v9 = NextGuidEntry;
if( !NextGuidEntry )
break;
EtwpClearSessionAndUnreferenceEntry(v2, NextGuidEntry, 2u);
}
KeWaitForSingleObject((UINT64)&ExBootDevicesRemovedEvent + 1376, 0, 0, 0, 0i64);
for( k = 0; k < 9; ++k )
{
if( *(_BYTE *)UserModeGlobalLogger == (_BYTE)v2 )
{
if( k <= 1 )
{
CallBack = k;
PsEnumProcesses((INT64)EtwpUpdateProcessTracingCallback, &CallBack, v10, v11, Timeout);
}
*UserModeGlobalLogger = 0;
}
++UserModeGlobalLogger;
}
KeReleaseMutex((_KMUTANT *)((char *)&ExBootDevicesRemovedEvent + 1376), 0);
}Referenced by:
EtwpStopLoggerInstance