WdipSemUpdateProviderTableWithEvent
INT64 __fastcall WdipSemUpdateProviderTableWithEvent(PGUID ProviderGuid){
unsigned int v1;
INT64 ProviderTable;
EVENT_DESCRIPTOR *v4;
PSLIST_ENTRY v6;
GUID *v7;
v1 = 0;
if( ProviderGuid )
{
ProviderTable = WdipSemQueryProviderTable(ProviderGuid);
if( ProviderTable )
{
*(_QWORD *)ProviderGuid[2].Data4 = ProviderTable;
}
else if( (unsigned int)OldNumProviders >= 0x400 )
{
if( EtwEventEnabled(WdipSemRegHandle, (EVENT_DESCRIPTOR *)&WDI_SEM_EVENT_INIT_PROVIDER_MAX, v4) )
WdipSemWriteProviderLimitExceededEvent(ProviderGuid);
return(unsigned int)-1073741823;
}
else
{
v6 = WdipSemFastAllocate(2, 0x50u);
v7 = (GUID *)v6;
if( v6 )
{
memset((INT64)v6, 0i64);
*v7 = *ProviderGuid;
*(&WdipSemProviderTable + (unsigned int)OldNumProviders) = (INT64)v7;
LODWORD(OldNumProviders) = OldNumProviders + 1;
*(_QWORD *)ProviderGuid[2].Data4 = v7;
}
else
{
return(unsigned int)-1073741670;
}
}
}
else
{
return(unsigned int)-1073741811;
}
return v1;
}Referenced by:
WdipSemUpdateProviderTableWithScenario