コード例 #1
0
        /// <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();
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 /// <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)
 {
 }