- if( MBR->Parts[i].SystemID == 0xF || MBR->Parts[i].SystemID == 5 ) {
- LOG("Extended Partition at 0x%llx", MBR->Parts[i].LBAStart);
- if(extendedLBA != 0) {
- Warning("Disk %i has multiple extended partitions, ignoring rest", Disk);
- continue;
- }
- extendedLBA = MBR->Parts[i].LBAStart;
+ base = MBR->Parts[i].LBAStart;
+ }
+ else if( MBR->Parts[i].Boot == 0x1 || MBR->Parts[i].Boot == 0x81 ) // LBA 48
+ {
+ base = (MBR->Parts[i].StartHi << 16) | MBR->Parts[i].LBAStart;
+ }
+ else
+ continue ; // Invalid, so don't count
+
+ if( MBR->Parts[i].SystemID == 0xF || MBR->Parts[i].SystemID == 5 )
+ {
+ LOG("Extended Partition at 0x%llx", base);
+ if(extendedLBA != 0) {
+ Log_Warning(
+ "LBA MBR",
+ "Volume %p has multiple extended partitions, ignoring all but first",
+ Volume
+ );