PipDeviceObjectListElementAt

NTSTATUS __stdcall PipDeviceObjectListElementAt(
        _DEVICE_OBJECT_LIST *List,
        UINT64 Index,
        _DEVICE_OBJECT **DeviceObject,
        _DEVICE_RELATION_LEVEL *RelationLevel,
        _DEVICE_TAGGED_FOR_REMOVAL *Tagged){
  NTSTATUS v5; 
  __int64 v6; 

  v5 = 0;
  if( !List )
    return -1073741811;
  if( (unsigned int)Index >= List->Count )
    return -1073741684;
  v6 = (unsigned int)Index;
  *DeviceObject = List->Devices[v6].DeviceObject;
  if( RelationLevel )
    *RelationLevel = List->Devices[v6].RelationLevel;
  if( Tagged )
    *Tagged = List->Devices[v6].Flags & 1;
  return v5;
}

Referenced by:

IopEnumerateRelations
IopRemoveCurrentRelationFromList
IopRemoveDeviceRelationsFromList
PipGrowDeviceObjectList