PpmFireWmiEvent

INT64 __stdcall PpmFireWmiEvent(VOID *Context, GUID *Guid, UINT64 DataSize, VOID *DataPtr){
  UINT64 v5; 
  NTSTATUS v6; 
  tagWNODE_SINGLE_INSTANCE *v7; 
  tagWNODE_SINGLE_INSTANCE *v8; 
  v5 = (unsigned int)DataSize;
  if( *((_DWORD *)Context + 2) )
  {
    v7 = PpmAllocWmiEvent(Context, Guid, (unsigned int)DataSize);
    v8 = v7;
    if( v7 )
    {
      if( DataPtr )
        memmove((UINT8 *)v7 + v7->DataBlockOffset, (UINT8 *)DataPtr, v5);
      v6 = IoWMIWriteEvent(v8);
      if( v6 >= 0 )
        return 0;
      else
        ExFreePoolWithTag(v8, 0x774D5050u);
    }
    else
    {
      return(unsigned int)-1073741670;
    }
  }
  else
  {
    return(unsigned int)-1073741823;
  }
  return(unsigned int)v6;
}

Referenced by:

PopFireThermalWmiEvent
PpmEventDomainPerfStateChange
PpmEventLegacyProcessorPerfStateChange
PpmEventThermalCapChange