EtwShutdown
VOID __stdcall EtwShutdown(UINT8 HiberBoot){
_ETW_SILODRIVERSTATE *EtwSiloState;
BOOL IsCurrentThreadInServerSilo;
BOOL v4;
__int16 MaxLoggers;
_WMI_LOGGER_CONTEXT *v6;
_WMI_LOGGER_INFORMATION LoggerInfo[44];
EtwSiloState = PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)HiberBoot)->EtwSiloState;
IsCurrentThreadInServerSilo = PsIsCurrentThreadInServerSilo();
v4 = IsCurrentThreadInServerSilo;
if( !HiberBoot )
{
if( !IsCurrentThreadInServerSilo )
EtwpTraceSystemShutdown();
EtwSiloState->EtwpShutdownInProgress = 1;
}
if( !v4 )
EtwpFlushCoverage();
memset(LoggerInfo, 0i64, sizeof(LoggerInfo));
LoggerInfo[0] = 176;
MaxLoggers = EtwSiloState->MaxLoggers;
LoggerInfo[11] = 0x20000;
while( --MaxLoggers >= 0 )
{
v6 = EtwpAcquireLoggerContextByLoggerId(EtwSiloState, (unsigned int)MaxLoggers, 0);
if( v6 )
{
if( v4 )
goto LABEL_19;
if( HiberBoot )
{
if( (v6->LoggerMode & 0x400000) == 0 )
goto LABEL_8;
LABEL_19:
if( MaxLoggers )
LOWORD(LoggerInfo[2]) = MaxLoggers;
else
LOWORD(LoggerInfo[2]) = -1;
*(_GUID *)&LoggerInfo[6] = v6->InstanceGuid;
EtwpReleaseLoggerContext(v6, 0);
if( !HiberBoot )
++*(&ExBootDevicesRemovedEvent + 755);
EtwpStopTrace(EtwSiloState, LoggerInfo, 1u);
}
else
{
if( (v6->LoggerMode & 0x400) == 0 )
goto LABEL_19;
LABEL_8:
EtwpReleaseLoggerContext(v6, 0);
}
}
}
if( !HiberBoot )
*(&ExBootDevicesRemovedEvent + 755) = 0;
}Referenced by:
PopGracefulShutdown
PopIssueActionRequest
PspDeleteExternalServerSiloState