/// <summary> /// Create a new instance of this DiskLayoutInfo-derived class and initialize it with raw data from the operating system. /// </summary> /// <param name="li"></param> /// <param name="p"></param> /// <remarks></remarks> internal DiskLayoutInfo(Partitioning.DRIVE_LAYOUT_INFORMATION_EX li, Partitioning.PARTITION_INFORMATION_EX[] p) { _Layout = li; var pts = new List <IDiskPartition>(); foreach (var i in p) { pts.Add(DiskPartitionInfo.CreateInfo(i)); } _Parts = pts.ToArray(); }
/// <summary> /// Populates disk layout information from a device path. /// </summary> /// <param name="disk"></param> /// <returns></returns> /// <remarks></remarks> internal static IDiskLayout CreateLayout(string disk) { IDiskLayout CreateLayoutRet = default; Partitioning.DRIVE_LAYOUT_INFORMATION_EX lay = default; Partitioning.PARTITION_INFORMATION_EX[] p; p = Partitioning.GetPartitions(disk, IntPtr.Zero, ref lay); if (p is null) { return(null); } if (lay.PartitionStyle == PartitionStyle.Gpt) { CreateLayoutRet = new GptDiskLayoutInfo(lay, p); } else { CreateLayoutRet = new MbrDiskLayoutInfo(lay, p); } return(CreateLayoutRet); }
/// <summary> /// Create a new instance of this DiskLayoutInfo-derived class and initialize it with raw data from the operating system. /// </summary> /// <param name="li"></param> /// <param name="p"></param> /// <remarks></remarks> internal GptDiskLayoutInfo(Partitioning.DRIVE_LAYOUT_INFORMATION_EX li, Partitioning.PARTITION_INFORMATION_EX[] p) : base(li, p) { }