Okay, ich glaube ich komme so langsam dahinter.
Ich weiß nun, wie ich die FAT zu lesen habe, um die Dateien die auf dem Datenträger liegen zusammen zu bauen.
Ebenso weiß ich nun, wie die Root Directory auszulesen ist.
Nur, mein Problem ist.
Der erste Datencluster beginnt ja bereits nach der Root Directory, da die RootDirectory bei FAT16 ja nur 512 Einträge maximal haben darf also eine Cluster Größe nach dem Beginn der RootDirectory oder?
So.
Wenn ich nun die FAT durchgehe und die benutzten Cluster aussortiere komme ich leider nur an die Dateien, die sich auf dem Datenträger befinden.
Die FAT beginnt ja mit dem Media Desktriptor.
Daraufhin folgen bei mir 6 Bytes mit FF. Dann erst beginnen die Clustereinträge für die erste Datei.
Ich weiß nun also, wie ich die Dateien auf dem Datenträger zusammen bauen kann.
Leider weiß ich immer noch nicht, wie ich an die Unterordner komme, die einen Cluster hinter dem Rootverzeichnis liegen.
Also:
Der Anfang der FAT sieht so aus:
F8FF FFFF FFFF FFFF 0500 0600 0700 0800 usw.
Sprich ab Index 4 geht es erst los.
Der Aufbau ab dem Rootverzeichnis ist so:
RootCluster | Datencluster mit den Unterordnern | Erster Cluster der Datei
Mein Problem ist aber, dass jede Subdirectory eben mit dem 2. Verzeichniseintrag auf ihre ParentDirectory zeigt ".." aber ich nicht weiß, wo ich ansetzen muss, um von einer ParentDirectory zu den Subs zu kommen.
Im Rootverzeichnis befindet sich nur ein Ordner, der zeigt auf den Index 2, also FFFF. Damit komme ich also nicht weiter, logisch.
Wenn ich dann mal bei den entsprechenden Unterordnern gucke, auf was der erste Eintrag mit dem Namen "." zeigt, sehe ich auf Index3, leider ist der Immernoch FFFF.
Der Cluster nach dem Rootverzeichnis sieht also quasi so aus:
. - Zeigt auf Cluster 2 (Hier sind die Dateien aufgelistet)
.. - Zeigt auf Cluster 0 (logisch, Root)
Unterordername - Zeigt auf Cluster 3 (Keine Ahnung, was mir das sagen soll, ist ja FFFF).
Kann ich also davon ausgehen, dass die Unterordner alle direkt nach dem Rootverzeichnis beginnen? Wohl eher nicht
Nur wie kann ich die den entsprechenden Rootordnern, bzw. auch ParentOrdnern zuweisen?