PpmAllocWmiEvent

tagWNODE_SINGLE_INSTANCE *__stdcall PpmAllocWmiEvent(VOID *Context, _GUID *Guid, UINT64 DataSize, UINT64 a4){
  size_t v4; 
  ULONG v5; 
  VOID **PoolWithTag; 
  tagWNODE_SINGLE_INSTANCE *v9; 
  _GUID v10; 

  v4 = DataSize + 64;
  v5 = DataSize;
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)(DataSize + 64), 2001555536i64);
  v9 = (tagWNODE_SINGLE_INSTANCE *)PoolWithTag;
  if( PoolWithTag )
  {
    memset(PoolWithTag, 0i64, v4);
    v9->WnodeHeader.TimeStamp.QuadPart = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
    v9->WnodeHeader.BufferSize = v4;
    v9->WnodeHeader.ProviderId = IoWMIDeviceObjectToProviderId((PDEVICE_OBJECT)Context);
    v10 = *Guid;
    v9->WnodeHeader.Flags = 138;
    v9->DataBlockOffset = 64;
    v9->WnodeHeader.Guid = v10;
    v9->SizeDataBlock = v5;
  }
  return v9;
}

Referenced by:

PpmFireWmiEvent
PpmWmiFireIdleAccountingEvent