EtwpGetSoftRestartInformation
__int64 __fastcall EtwpGetSoftRestartInformation(__int64 a1, unsigned int a2, _DWORD *a3){
char v6;
UINT64 v8;
_ETHREAD *CurrentThread;
_WMI_LOGGER_CONTEXT *v10;
_WMI_LOGGER_CONTEXT *v11;
NTSTATUS v12;
struct _ETW_SOFT_RESTART_CONTEXT *SoftRestartContext;
v6 = 0;
if( !EtwpKsrCallbackObject || PsIsCurrentThreadInServerSilo() )
return 3221225659i64;
*a3 = 24;
if( a2 < 0x18 )
return 3221225476i64;
v8 = (unsigned __int16)*(_QWORD *)(a1 + 8);
if( (_DWORD)v8 == 0xFFFF )
v8 = *(unsigned __int8 *)(EtwpHostSiloState + 4208);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
v10 = EtwpAcquireLoggerContextByLoggerId((_ETW_SILODRIVERSTATE *)EtwpHostSiloState, v8, 1u);
v11 = v10;
if( v10 )
{
v12 = EtwpCheckLoggerControlAccess(1ui64, v10);
if( v12 >= 0 )
{
SoftRestartContext = v11->SoftRestartContext;
if( SoftRestartContext )
v6 = *((_BYTE *)SoftRestartContext + 32);
}
EtwpReleaseLoggerContext(v11, 1u);
}
else
{
v12 = -1073741162;
}
KeLeaveCriticalRegionThread(KeGetCurrentThread());
if( v12 >= 0 )
*(_BYTE *)(a1 + 16) = v6;
return(unsigned int)v12;
}Referenced by:
EtwQueryPerformanceTraceInformation