PiAllocateDeviceObjectList

_DEVICE_OBJECT_LIST *__fastcall PiAllocateDeviceObjectList(_PNP_DEVICE_DELETE_TYPE OperationCode, UINT64 MaxCount){
  int v2; 
  CHAR *CriticalMemory; 
  _DEVICE_OBJECT_LIST *v5; 
  v2 = MaxCount;
  CriticalMemory = PnpAllocateCriticalMemory(
                     *(INT64 *)&OperationCode,
                     PagedPool,
                     24 * (int)MaxCount + 16i64,
                     0x54706E50ui64);
  v5 = (_DEVICE_OBJECT_LIST *)CriticalMemory;
  if( CriticalMemory )
  {
    *(_DWORD *)CriticalMemory = 0;
    *((_DWORD *)CriticalMemory + 2) = 0;
    *((_DWORD *)CriticalMemory + 3) = OperationCode;
    *((_DWORD *)CriticalMemory + 1) = v2;
    PiClearDeviceObjectList(CriticalMemory);
  }
  return v5;
}

Referenced by:

IopAllocateRelationList
PipGrowDeviceObjectList