问题描述
- 分区1:fat32
- 分区2:exFAT
- 分区3:NTFS
我正在制作一个通过分区的程序,但是我不确定如何知道程序应查找多少个分区。通过查看原始数据,我可以看到它具有预期的三个分区,但是当然我的程序不知道这一点。
我试图查看“ 80(0x50)4字节数组中分区条目的数量”,但在我的示例中,它给了我128(0x80000000)的值。
这是我的示例图片中的十六进制屏幕截图。
分区表标题(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
解决方法
有点晚了,你现在可能已经想通了。
参考下图 wiki 页。 Wiki 页面本身将为您提供更多信息。
仅通过查看 LBA1 的 GUID 分区表 header 无法确定分区数,您必须检查分区 entries 并检查 Partition type GUID 是否显示它是否未使用(全为零)。
偏移量 80 (=0x50) 处标头中的分区条目数是由偏移量 84 处单个分区条目的大小确定的条目总数。