PpmAllocWmiEvent

tagWNODE_SINGLE_INSTANCE *__stdcall PpmAllocWmiEvent(VOID *Context, GUID *Guid, UINT64 DataSize){
  ULONG v3; 
  ULONG v4; 
  tagWNODE_SINGLE_INSTANCE *PoolWithTag; 
  tagWNODE_SINGLE_INSTANCE *v8; 
  GUID v9; 
  v3 = DataSize + 64;
  v4 = DataSize;
  PoolWithTag = (tagWNODE_SINGLE_INSTANCE *)ExAllocatePoolWithTag(
                                              NonPagedPoolNx,
                                              (unsigned int)(DataSize + 64),
                                              0x774D5050ui64);
  v8 = PoolWithTag;
  if( PoolWithTag )
  {
    memset((INT64)PoolWithTag, 0i64);
    v8->WnodeHeader.TimeStamp.QuadPart = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
    v8->WnodeHeader.BufferSize = v3;
    v8->WnodeHeader.ProviderId = IoWMIDeviceObjectToProviderId((PDEVICE_OBJECT)Context);
    v9 = *Guid;
    v8->WnodeHeader.Flags = 138;
    v8->DataBlockOffset = 64;
    v8->WnodeHeader.Guid = v9;
    v8->SizeDataBlock = v4;
  }
  return v8;
}

Referenced by:

PpmFireWmiEvent
PpmWmiFireIdleAccountingEvent