EtwpSetProviderTraitsKm
NTSTATUS __stdcall EtwpSetProviderTraitsKm(_ETW_REG_ENTRY *RegEntry, VOID *TraitsInput, UINT16 TraitsSize){
unsigned __int16 Flags;
size_t v6;
NTSTATUS v7;
VOID **PoolWithTag;
int v9;
__int64 v10;
__int64 v11;
__int64 v12;
__int64 v14;
int v15;
v15 = 0;
Flags = RegEntry->Flags;
v6 = TraitsSize;
if( (Flags & 8) != 0 || (Flags & 1) == 0 )
{
v7 = -1073741811;
LABEL_9:
if( !v7 )
return v7;
goto LABEL_10;
}
if( RegEntry->Traits )
{
v7 = -1073741823;
goto LABEL_10;
}
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)TraitsSize + 28, 1417114693i64);
v9 = HIDWORD(PoolWithTag);
if( PoolWithTag )
{
memmove((char *)PoolWithTag + 28, TraitsInput, v6);
HIDWORD(v14) = v9;
v7 = EtwpSetProviderTraitsCommon(0i64, 0i64, (_FAST_MUTEX *)&v15, (_RTL_RB_TREE *)RegEntry);
goto LABEL_9;
}
v7 = -1073741670;
LABEL_10:
if( EtwEventEnabled(*(&ExBootDevicesRemovedEvent + 241), &ETW_EVENT_SET_TRAITS_FAILED) )
{
LODWORD(v14) = v7;
EtwpEventWriteRegistrationStatus(v11, v10, v12, (__int64)RegEntry, v14);
}
return v7;
}Referenced by:
EtwSetInformation