public static List <Volume> GetVolumes(List <Disk> disks)
        {
            List <Volume>      result       = new List <Volume>();
            List <DynamicDisk> dynamicDisks = new List <DynamicDisk>();

            // Get partitions:
            foreach (Disk disk in disks)
            {
                if (!DynamicDisk.IsDynamicDisk(disk))
                {
                    List <Partition> partitions = BasicDiskHelper.GetPartitions(disk);
                    foreach (Partition partition in partitions)
                    {
                        result.Add(partition);
                    }
                }
                else
                {
                    dynamicDisks.Add(DynamicDisk.ReadFromDisk(disk));
                }
            }

            // Get dynamic volumes
            List <DynamicVolume> dynamicVolumes = DynamicVolumeHelper.GetDynamicVolumes(dynamicDisks);

            foreach (DynamicVolume volume in dynamicVolumes)
            {
                result.Add(volume);
            }

            return(result);
        }
        public static List <DynamicVolume> GetLockableDynamicVolumes(List <DynamicDisk> dynamicDisks)
        {
            List <DynamicVolume> result = new List <DynamicVolume>();

            List <DynamicDisk> disks = new List <DynamicDisk>();

            foreach (DynamicDisk dynamicDisk in dynamicDisks)
            {
                if (dynamicDisk.Disk is PhysicalDisk)
                {
                    disks.Add(dynamicDisk);
                }
            }

            return(DynamicVolumeHelper.GetDynamicVolumes(disks));
        }
        public static List <DynamicVolume> GetDynamicVolumes()
        {
            List <DynamicDisk> disks = WindowsDynamicDiskHelper.GetPhysicalDynamicDisks();

            return(DynamicVolumeHelper.GetDynamicVolumes(disks));
        }