/// <summary> /// Processes a valid GUID partition table to initialize its partitions. /// </summary> /// <param name="aGPT">The GPT to process.</param> /// <param name="aDiskDevice">The disk device from which the GPT was read.</param> private static void ProcessGPT(GPT aGPT, DiskDevice aDiskDevice) { for (int i = 0; i < aGPT.Partitions.Count; i++) { GPT.PartitionInfo aPartInfo = (GPT.PartitionInfo)aGPT.Partitions[i]; Partitions.Add(new Partition(aDiskDevice, aPartInfo.FirstLBA, aPartInfo.LastLBA - aPartInfo.FirstLBA)); } }
/// <summary> /// Attempts to initialise a disk treating it as GPT formatted. /// </summary> /// <param name="aDiskDevice">The disk to initialise.</param> /// <returns>True if a valid GPT was detected and the disk was successfully initialised. Otherwise, false.</returns> private static bool InitAsGPT(DiskDevice aDiskDevice) { GPT TheGPT = new GPT(aDiskDevice); if (!TheGPT.IsValid) { return false; } else { ProcessGPT(TheGPT, aDiskDevice); return true; } }