【问题标题】:In GUID Partition Table how can I know how many partitions there are?在 GUID 分区表中,我如何知道有多少个分区?
【发布时间】:2020-12-25 01:52:35
【问题描述】:

我有一个带有 3 个分区的 USB 映像:

  • 分区 1:FAT32
  • 分区 2:exFAT
  • 分区 3:NTFS

我正在制作一个通过分区的程序,但我不确定如何知道我的程序应该查找多少个分区。通过查看原始数据,我可以看到它具有预期的三个分区,但是我的程序当然不知道这一点。

我试图查看“80 (0x50) 4 字节数组中的分区条目数”,但在我的示例中它给了我值 128 (0x80000000)。

这是我的示例图片中的十六进制屏幕截图。

保护性 MBR

分区表头(LBA 1)

signature=- HexLe=4546492050415254 HexBe=5452415020494645
revisionHexLe=000001 HexLe=4546492050415254 HexBe=5452415020494645
headerSizeDec=92 HexLe=5C000000 HexBe=0000005C
crc2OfHeaderDec=82845332 HexLe=941EF004 HexBe=04F01E94
reservedADec=0 HexLe=00000000 HexBe=00000000
currentLBADec=1 HexLe=0100000000000000 HexBe=0000000000000001
backupLBADec=30277631 HexLe=FFFFCD0100000000 HexBe=0000000001CDFFFF
firstUsableLBAForPartitionsDec=34 HexLe=2200000000000000 HexBe=0000000000000022
lastUsableLBADec=30277598 HexLe=DEFFCD0100000000 HexBe=0000000001CDFFDE
diskGUIDHexMe=8B3F71C5AF9D744D9CA3EBFF7D1F9DC9
startingLBAOfArrayOfPartitionEntriesDec=2 HexLe=0200000000000000 HexBe=0000000000000002
numberOfPartitionEntriesInArrayDec=128 HexLe=80000000 HexBe=00000080
sizeOfASinglePartitionEntryDec=128 HexLe=80000000 HexBe=00000080
crc2OfPartitionEntriesArrayDec=-2043475264 HexLe=C00A3386 HexBe=86330AC0
reservedBDec=00000000 HexLe=00000000 HexBe=00000000
We are going to look for partitions now at offset 1024

分区条目 (LBA 2–33)

【问题讨论】:

    标签: guid disk-partitioning guid-partition-table


    【解决方案1】:

    来晚了,你现在可能已经想通了。

    参考下图wiki页面。 Wiki 页面本身将为您提供更多信息。

    仅通过查看 LBA1 的 GUID 分区表 header 无法确定分区数,您必须检查分区 entries 并检查 Partition type GUID 是否表示未使用(全为零) 与否。

    标头中偏移量 80 (=0x50) 处的分区条目数是由偏移量 84 处的单个分区条目的大小确定的条目总数。

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 2021-07-14
      • 1970-01-01
      • 2011-08-31
      • 2019-11-29
      相关资源
      最近更新 更多