IopAllocateRelationList

_RELATION_LIST *__stdcall IopAllocateRelationList(PNP_DEVICE_DELETE_TYPE OperationCode){
  _RELATION_LIST *CriticalMemory; 
  _DEVICE_OBJECT_LIST *DeviceObjectList; 

  CriticalMemory = (_RELATION_LIST *)PnpAllocateCriticalMemory(OperationCode, PagedPool, 0x10ui64, 0x54706E50u);
  if( CriticalMemory )
  {
    DeviceObjectList = PiAllocateDeviceObjectList(OperationCode, 8ui64);
    CriticalMemory->DeviceObjectList = DeviceObjectList;
    if( DeviceObjectList )
    {
      CriticalMemory->Sorted = 0;
    }
    else
    {
      IopFreeRelationList(CriticalMemory);
      return 0i64;
    }
  }
  return CriticalMemory;
}

Referenced by:

PnpBuildRemovalRelationList
PnpCancelRemoveOnHungDevices
PnpInvalidateRelationsInList
PnpQueuePendingSurpriseRemoval