EtwpKsrCallback
VOID __stdcall EtwpKsrCallback(VOID *CallbackContext, VOID *Argument1, VOID *Argument2){
int v3;
bool v4;
unsigned int v5;
_ETW_SILODRIVERSTATE *i;
_WMI_LOGGER_CONTEXT *v7;
_WMI_LOGGER_CONTEXT *v8;
struct _ETW_SOFT_RESTART_CONTEXT *SoftRestartContext;
UINT8 v10;
v3 = (int)Argument1;
if( !(_DWORD)Argument1 )
{
LABEL_8:
EtwpSavePersistedLoggers();
goto LABEL_9;
}
if( (_DWORD)Argument1 != 1 )
{
if( (_DWORD)Argument1 == 2 )
{
EtwpSavePersistedLoggers();
return;
}
if( (_DWORD)Argument1 != 3 )
{
if( (_DWORD)Argument1 != 4 )
return;
goto LABEL_9;
}
goto LABEL_8;
}
LABEL_9:
v4 = !v3 || v3 == 3;
EtwpKsrPrepared = v4;
v5 = 0;
for( i = (_ETW_SILODRIVERSTATE *)EtwpHostSiloState; v5 < *(_DWORD *)(EtwpHostSiloState + 16); ++v5 )
{
v7 = EtwpAcquireLoggerContextByLoggerId(i, v5, 0);
v8 = v7;
if( v7 )
{
SoftRestartContext = v7->SoftRestartContext;
v10 = 0;
if( SoftRestartContext )
{
v10 = 1;
KeWaitForSingleObject((UINT64)&v7->LoggerMutex, 0, 0, 0, 0i64);
if( !v3 || v3 == 3 )
{
if( *((_BYTE *)SoftRestartContext + 32) )
EtwpPreserveLogger(v8);
}
else
{
EtwpCancelMemoryPreservation(v8);
}
}
EtwpReleaseLoggerContext(v8, v10);
}
i = (_ETW_SILODRIVERSTATE *)EtwpHostSiloState;
}
}Referenced by:
No references.