EtwInitialize
VOID __stdcall EtwInitialize(UINT64 Phase){
INT64 v1;
__int64 v2;
INT64 v3;
if( (unsigned int)Phase >= 2 )
{
if( (_DWORD)Phase == 2 )
{
v1 = EtwpHostSiloState;
v2 = 0i64;
for( EtwpFileSystemReady = 1; (unsigned int)v2 < *(_DWORD *)(EtwpHostSiloState + 16); v2 = (unsigned int)(v2 + 1) )
{
if( ExAcquireRundownProtectionCacheAwareEx(*(_QWORD *)(*(_QWORD *)(v1 + 448) + 8 * v2), 1i64) )
{
if( (unsigned int)v2 >= *(_DWORD *)(EtwpHostSiloState + 16) )
v3 = 1i64;
else
v3 = *(_QWORD *)(*(_QWORD *)(EtwpHostSiloState + 456) + 8 * v2);
if( (v3 & 1) == 0 && (*(_DWORD *)(v3 + 12) & 0x400) == 0 && EtwpBuffersFlushRequired(v3) )
{
if( ObGetCurrentIrql() > 2u )
{
if( !_interlockedbittestandset((volatile signed __int32 *)(v3 + 836), 8u) )
KeInsertQueueDpc(v3 + 584, 0i64, 0i64);
}
else
{
KeSetEvent((PRKEVENT)(v3 + 496), 0, 0);
}
}
ExReleaseRundownProtectionCacheAwareEx(*(_QWORD *)(*(_QWORD *)(EtwpHostSiloState + 448) + 8 * v2), 1i64);
}
v1 = EtwpHostSiloState;
}
}
}
else
{
EtwpInitialize(Phase);
}
}Referenced by:
CmCompleteRegistryInitialization
IoInitSystemPreDrivers