GPTPartition.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /* Copyright (C) 2014 Tal Aloni <tal.aloni.il@gmail.com>. All rights reserved.
  2. *
  3. * You can redistribute this program and/or modify it under the terms of
  4. * the GNU Lesser Public License as published by the Free Software Foundation,
  5. * either version 3 of the License, or (at your option) any later version.
  6. */
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Text;
  10. using Utilities;
  11. namespace DiskAccessLibrary
  12. {
  13. public class GPTPartition : Partition
  14. {
  15. public static readonly Guid BasicDataPartititionTypeGuid = new Guid("EBD0A0A2-B9E5-4433-87C0-68B6B72699C7");
  16. public static readonly Guid MicrosoftReservedPartititionTypeGuid = new Guid("E3C9E316-0B5C-4DB8-817D-F92DF00215AE");
  17. public static readonly Guid PrivateRegionPartitionTypeGuid = new Guid("5808C8AA-7E8F-42E0-85D2-E1E90434CFB3");
  18. public static readonly Guid PublicRegionPartitionTypeGuid = new Guid("AF9B60A0-1431-4F62-BC68-3311714A69AD");
  19. public static readonly Guid EFISystemPartitionTypeGuid = new Guid("C12A7328-F81F-11D2-BA4B-00A0C93EC93B");
  20. public static readonly Guid HFSPlusPartitionTypeGuid = new Guid("48465300-0000-11AA-AA11-00306543ECAC");
  21. public static readonly Guid AppleBootPartitionTypeGuid = new Guid("426F6F74-0000-11AA-AA11-00306543ECAC");
  22. private Guid m_volumeGuid;
  23. private Guid m_typeGuid;
  24. private string m_name;
  25. public GPTPartition(Guid volumeGuid, Guid typeGuid, string name, DiskExtent extent) : base(extent)
  26. {
  27. m_volumeGuid = volumeGuid;
  28. m_typeGuid = typeGuid;
  29. }
  30. public GPTPartition(Guid volumeGuid, Guid typeGuid, string name, Disk disk, long firstSector, long size) : base(disk, firstSector, size)
  31. {
  32. m_volumeGuid = volumeGuid;
  33. m_typeGuid = typeGuid;
  34. m_name = name;
  35. }
  36. public Guid VolumeGuid
  37. {
  38. get
  39. {
  40. return m_volumeGuid;
  41. }
  42. }
  43. public Guid TypeGuid
  44. {
  45. get
  46. {
  47. return m_typeGuid;
  48. }
  49. }
  50. public string PartitionTypeName
  51. {
  52. get
  53. {
  54. if (m_typeGuid == BasicDataPartititionTypeGuid)
  55. {
  56. return "Primary";
  57. }
  58. else if (m_typeGuid == MicrosoftReservedPartititionTypeGuid)
  59. {
  60. return "MSFT Reserved";
  61. }
  62. else if (m_typeGuid == PrivateRegionPartitionTypeGuid)
  63. {
  64. // This is either the private region itself (on dynamic disks), or a reserved partition for it (on basic disks)
  65. return "Dynamic Reserved";
  66. }
  67. else if (m_typeGuid == PublicRegionPartitionTypeGuid)
  68. {
  69. return "Dynamic Data";
  70. }
  71. else if (m_typeGuid == EFISystemPartitionTypeGuid)
  72. {
  73. return "EFI System";
  74. }
  75. else if (m_typeGuid == HFSPlusPartitionTypeGuid)
  76. {
  77. return "HFS+";
  78. }
  79. else if (m_typeGuid == AppleBootPartitionTypeGuid)
  80. {
  81. return "Apple Boot";
  82. }
  83. else
  84. {
  85. return "Unknown";
  86. }
  87. }
  88. }
  89. public string PartitionName
  90. {
  91. get
  92. {
  93. return m_name;
  94. }
  95. }
  96. }
  97. }