EtwpEnableDisableUMGL
NTSTATUS __stdcall EtwpEnableDisableUMGL(UINT8 Enable, UINT16 LoggerId, UINT8 UmglFlags, UINT64 UMGLProviderIndex){
NTSTATUS v4;
char v6;
char v7;
__int64 v8;
char v9;
__int16 v11;
unsigned int v12;
v4 = 0;
v6 = UMGLProviderIndex;
v7 = LoggerId;
if( Enable == EtwpHostSiloState )
v8 = 0xFFFFF78000000380ui64;
else
v8 = *(_QWORD *)(*(_QWORD *)(Enable + 8i64) + 1128i64) + 550i64;
if( (unsigned int)UmglFlags >= *(_DWORD *)(Enable + 16i64) || !UmglFlags )
return -1073741816;
KeWaitForSingleObject((UINT64)&ExBootDevicesRemovedEvent + 1376, 0, 0, 0, 0i64);
if( v7 )
{
LOBYTE(v11) = UmglFlags;
HIBYTE(v11) = v6;
*(_WORD *)(v8 + 2i64 * v12) = v11;
}
else
{
v9 = *(_BYTE *)(v8 + 2i64 * v12);
if( v9 == UmglFlags )
*(_WORD *)(v8 + 2i64 * v12) = 0;
else
v4 = v9 != 0 ? -1073741734 : -1073741054;
}
KeReleaseMutex((_KMUTANT *)((char *)&ExBootDevicesRemovedEvent + 1376), 0);
return v4;
}Referenced by:
EtwpEnableDisableSpecialGuids