Also wenn Du Dir Dokus zu FAT32 durchliest, dann ist auch klar, wie Du
das Dateisystem prüfen musst! :)
Alternativ solltest Du überlegen, wie Du mit ein paar Patches ein
FAT32-System sabotieren kannst, dann weißt Du auch, was Du prüfen musst!
FAT32 wird auch von Linux unterstützt, da gibt es sicherlich ein
Äquivalent zum Windows-Checkdisk-Programm, was Du als Anregung nutzen
kannst.
Wenn Du es schon 100% machen willst, ein paar Hinweise, um Dir die
Flausen aus dem Kopf zu treiben:
USB-Sticks können mit im MBR-Stil oder im Floppy-Stil formatiert sein.
Im Falle des MBR-Stils können Sie auch mehrere Partitionen enthalten.
Du musst Dich also enventuell durch eine Meta-Partitionsstruktur hangeln
- und auch prüfen? :)
Vielleicht gibt es mittlerweile auch GPT-formatierte USB-Sticks.
Ich habe jedenfalls Sticks mit zwei Partitionen herumliegen.
Auf Dateisystemebene kannst Du folgende Dinge überlegen:
Falls USB-Sticks auch festplattenartig Lesefehler bei einzelnen Sektoren
ausgeben, kannst Du den Stick linear einmal einlesen - simpel, aber
zeitaufwendig, Deine Kunden werden es Dir danken, wenn Du einen
32GB-Stick einmal kontrollliest und sie dafür 20 Minuten warten müssen!
:)
Prüfe für jede Datei, ob die Clusterstruktur gültig ist. Die Dateilänge
bestimmt die nötige Zahl von Clustern. Ich glaube, Folgecluster haben
immer eine größere Nummer.
Prüfe, ob es verwaiste Cluster gibt. Hier wäre ein Bitfeld in der Größe
aller Cluster sinnvoll, in dem Du alle gebrauchten Cluster markierst
(Bit setzen). Durchlaufe das Dateisystem und nulle alle Einträge, die
von vorhandenen Dateien benutzt werden. Der Rest sind verwaiste Cluster.
Wenn Du dann beim Markieren auf einen Eintrag stößt, der schon auf eins
steht, hast Du siamesische Zwillinge, die mal getrennt werden müssen.
Stellt sich nur die Frage, ob und wo Du Platz für so ein Bitfeld hast.
Denk' vor allem mal darüber nach, worin der Schaden besteht, wenn Du
nicht prüfst. Ich finde, das rechtfertigt den Aufwand nicht.
Erzähl' Doch bei Gelegenheit in diesem Faden, was Du davon wirklich
realisiert hast!