[quote=""stefan999""][*]Ich gehe davon aus, dass die Clustergröße systemabhängig und nicht dateiabhängig ist. Ist das richtig?[/quote]
Sie ist Festplattengrößenabhängig.
[*]Wenn ich mit 1. richtig liege, bedeutet dass doch, dass ich HDD_GetClusterSize nur einmal zu Beginn der Verarbeitung und nicht bei jedem Read aufrufen muss, oder.
Jein.

: Sie erleichtert die Berechnung der absoluten Leseposition. Klar kannst Du mit einem Sektor-Zähler arbeiten, aber den musst Du auch um SectorsPerCluster inkrementieren. HDD_GetClusterSize holt sich die Info nur ein Mal von der Platte und arbeitet danach selbst mit einer lokalen Variable und ist deshalb schnell.
[*]Die Clustergröße wird von HDD_GetClusterSize doch in Sektoren je Cluster (z.B 4) zurückgegeben?
Ja, wobei die kleinste Größe 2068 Sektoren pro Cluster ist.
[*]Wenn ich also Cluster für Custer lesen möchte, dann muss ich doch die logische Clusternummer nach jedem Zugriff hochzählen und auch immer genau soviel Sektoren lesen, wie der Cluster groß ist (zumindest, wenn ich alle Daten haben will).
Wenn Du
alle Daten haben willst. Die logische Sektornummer ist
(Cluster-Nummer + 1) * SectorsPerCluster. Du brauchst also nicht unbedingt zählen.
HDD_BigFile_Read(Buffer, CurrentCluster * HDD_GetClusterSize(), 4, f);Wenn die Clustergröße aber nicht genau 4 ist, dann fehlen entweder Daten (falls Cluster > 4 Sekt.) oder es wird falsch gelesen, weil der nächste Cluster nicht zwangsweise sektorenmäßig auf den vorherigen folgt. Es würden also zufällige Daten gelesen werden (Falls Cluster < 4 Sektoren).
Nein. CurrentCluster * HDD_GetClusterSize gibt die absolute Startposition, ab der gelesen werden soll. Da RecCopy nur Stichproben macht, liest es die ersten 4 Sekoren eines Clusters, da dort auf jeden Fall ein Videopakerl vorkommt, das auf Verschlüsselung geprüft wird. Damit wird die Lesezeit stark verkürzt. Die nächste Startposition wird richtig berechnet.
[quote=""Bonni""] Jaja, Alex,
[/quote]
Ich hab nichts gesagt.
MfG. Alex