Bin je wieder einen Schritt weiter.
PartitionCount liefert bei MBR-Partitionen immer ein vielfaches von 4 zurück. Das erklärt schon mal, warum also immer 4 dort steht.
Also muss man anders an die Information, welche Partitionen denn nun wirklich exstieren.
Dabei hilft DRIVE_LAYOUT_INFORMATION_EX.PartitionInfoEx[p].Mbr.PartitionType, worin im Falle von MBR diese Information gefunden werden kann.
Delphi-Quellcode:
Const
PARTITION_ENTRY_UNUSED = $00;
PARTITION_EXTENDED = $05;
PARTITION_FAT_12 = $01;
PARTITION_FAT_16 = $04;
PARTITION_FAT32 = $0B;
PARTITION_IFS = $07;
PARTITION_LDM = $42;
PARTITION_NTFT = $80;
VALID_NTFT = $C0;
.
.
.
if Layout.PartitionInfoEx[p].PartitionStyle=PARTITION_STYLE_MBR then
begin
case Layout.PartitionInfoEx[p].Mbr.PartitionType of
PARTITION_ENTRY_UNUSED: mmo1.lines.Add(' Part-Style : PARTITION_ENTRY_UNUSED');
PARTITION_EXTENDED: mmo1.lines.Add(' Part-Style : PARTITION_EXTENDED');
PARTITION_FAT_12: mmo1.lines.Add(' Part-Style : PARTITION_FAT_12');
PARTITION_FAT_16: mmo1.lines.Add(' Part-Style : PARTITION_FAT_16');
PARTITION_FAT32: mmo1.lines.Add(' Part-Style : PARTITION_FAT32');
PARTITION_IFS: mmo1.lines.Add(' Part-Style : PARTITION_IFS');
PARTITION_LDM: mmo1.lines.Add(' Part-Style : PARTITION_LDM');
PARTITION_NTFT: mmo1.lines.Add(' Part-Style : PARTITION_NTFT');
VALID_NTFT: mmo1.lines.Add(' Part-Style : VALID_NTFT');
else
mmo1.lines.Add(' Part-Style : Unbekannt');
end;
end;
das Ergebnis schaut jetzt so aus:
Code:
1. Festplatte = 4 Partitionen
1. Partition:
Part-Typ : MBR
Part-Style : PARTITION_IFS
PartitionNr: 1
StartSektor: 1048576
Länge : 367001600
Größe : 350,00 MB
2. Partition:
Part-Typ : MBR
Part-Style : PARTITION_ENTRY_UNUSED
PartitionNr: 0
StartSektor: 0
Länge : 0
Größe : 0,00 Byte
3. Partition:
PartitionNr: 0
StartSektor: 2
Länge : 3087428650860807
Größe : 2,74 PB
4. Partition:
Part-Typ : MBR
Part-Style : PARTITION_ENTRY_UNUSED
PartitionNr: 0
StartSektor: 0
Länge : 0
Größe : 0,00 Byte
2. Festplatte = 4 Partitionen
1. Partition:
Part-Typ : MBR
Part-Style : PARTITION_IFS
PartitionNr: 1
StartSektor: 1048576
Länge : 1000202043392
Größe : 931,51 GB
2. Partition:
PartitionNr: 3429319
StartSektor: 2421637
Länge : 4213862
Größe : 4,02 MB
3. Partition:
Part-Typ : MBR
Part-Style : Unbekannt
PartitionNr: 1781809
StartSektor: 0
Länge : 0
Größe : 0,00 Byte
4. Partition:
PartitionNr: 3654587
StartSektor: 2787577
Länge : 2128090
Größe : 2,03 MB
3. Festplatte = 1 Partitionen
1. Partition:
Part-Typ : MBR
Part-Style : PARTITION_ENTRY_UNUSED
PartitionNr: 0
StartSektor: 0
Länge : 0
Größe : 0,00 Byte
4. Festplatte = 4 Partitionen
1. Partition:
Part-Typ : MBR
Part-Style : PARTITION_IFS
PartitionNr: 1
StartSektor: 1048576
Länge : 1073738678272
Größe : 1.000,00 GB
2. Partition:
PartitionNr: 8
StartSektor: 0
Länge : -6047066961440
Größe : -6.047.066.961.440,00 Byte
3. Partition:
Part-Typ : MBR
Part-Style : PARTITION_ENTRY_UNUSED
PartitionNr: 1
StartSektor: 0
Länge : 0
Größe : 0,00 Byte
4. Partition:
Part-Typ : MBR
Part-Style : PARTITION_ENTRY_UNUSED
PartitionNr: 0
StartSektor: 0
Länge : 0
Größe : 0,00 Byte
Bis auf die Tatsache, dass mir bei meiner 1. Platte die 2. Partition als UNUSED angezeigt wird, was definitiv nicht so ist, kann ich damit schon mal arbeiten. Da die anderen Platten nur eine Partition haben, muss ich mir erst mal noch eine weitere einbauen, um mal zu testen, was bei mehreren Partitionen so passiert.