PiAllocateDeviceObjectList

_DEVICE_OBJECT_LIST *__stdcall PiAllocateDeviceObjectList(PNP_DEVICE_DELETE_TYPE OperationCode, UINT64 MaxCount){
  int v2; 
  VOID **CriticalMemory; 
  _DEVICE_OBJECT_LIST *v5; 

  v2 = MaxCount;
  CriticalMemory = PnpAllocateCriticalMemory(OperationCode, PagedPool, 24 * (int)MaxCount + 16i64, 0x54706E50u);
  v5 = (_DEVICE_OBJECT_LIST *)CriticalMemory;
  if( CriticalMemory )
  {
    *(_DWORD *)CriticalMemory = 0;
    *((_DWORD *)CriticalMemory + 2) = 0;
    *((_DWORD *)CriticalMemory + 3) = OperationCode;
    *((_DWORD *)CriticalMemory + 1) = v2;
    PiClearDeviceObjectList((_DEVICE_OBJECT_LIST *)CriticalMemory);
  }
  return v5;
}

Referenced by:

IopAllocateRelationList
PipGrowDeviceObjectList