IopAllocateRelationList

CHAR *__fastcall IopAllocateRelationList(INT64 a1){
  _PNP_DEVICE_DELETE_TYPE v1; 
  CHAR *CriticalMemory; 
  _DEVICE_OBJECT_LIST *DeviceObjectList; 
  v1 = (int)a1;
  CriticalMemory = PnpAllocateCriticalMemory(a1, PagedPool, 0x10ui64, 0x54706E50ui64);
  if( CriticalMemory )
  {
    DeviceObjectList = PiAllocateDeviceObjectList(v1, 8ui64);
    *(_QWORD *)CriticalMemory = DeviceObjectList;
    if( DeviceObjectList )
    {
      CriticalMemory[8] = 0;
    }
    else
    {
      IopFreeRelationList(CriticalMemory);
      return 0i64;
    }
  }
  return CriticalMemory;
}

Referenced by:

PnpBuildRemovalRelationList
PnpCancelRemoveOnHungDevices
PnpInvalidateRelationsInList
PnpQueuePendingSurpriseRemoval