Ich habe nun in letzter Zeit versucht das FAT32 Dateisystem zu verstehen. Den MBR habe ich nun verstanden. Das Root Verzeichnis scheint auch klar zu sein. Nun zu den Problemen: Wie finde ich die Startadresse des Root-Verzeichnis und die Adresse für die FAT? Für was braucht man die Fat? Im Root Verzeichnis sin ja alle notwendigen Angaben vorhanden. Danke für eure Hilfe
Ansonsten steht die Adresse des Root-Verzeichnisses im Volume Boot Record und die Adresse an der die FAT beginnt lässt sich an Hand der Adresse des VBR und der Anzahl der reserveden Sektoren berechnen. Bei FAT32 unterscheidet sich das Root-Verzeichnis übrigens nicht mehr von den normalen Verzeichnisen bis auf den Punkt, das die adresse im VBR steht. Es gibt aber keine Limitierung mehr auf 512 Einträge.
Wenn ich schreibe, dass ich die MBR und das Root verzeichniss verstanden habe, dann scheint es doch danach, dass ich bereits bereits mit Google diverse Beiträge gelesen habe. Frage mich sowieso, wieso du dir überhaupt die Mühe machst, da deine Antwort nicht sehr konstruktiv ist. Wünsche dir (A.K.) dennoch einen schönen Abend
Sowohl in der MS Doku als auch den den anderen Stellen steht der Pointer auf die Rootdir ziemlich explizit drin. Nach Du aber grad danach gefragt hast, hatte ich gewisse Zweifel, was Du an Material dazu gelesen hattest. Sorry für die Fehleinschätzung.
Also die FAT braucht man dazu um immer denn nächsten cluster, der datei oder des Verzeichnis zu bekommen. D.h. du schaust in die Tabelle unter dem cluster den du z.b. grad gelesen hast nach ob es noch weiter geht oder ob es das ende der datei/verzeichnis ist, diese information steht in der FAT. Meist ist diese zweimal vorhanden, da wenn die FAT im Arsch ist alle daten weg sind, außer du fängst an puzzel zu spielen
rofl manchmal habe ich so das gefühl, das manche leute sich nicht mal den 1. beitrag durchlesen :-) Offset Description Start of Partition Boot Sector Start + # of Reserved Sectors Fat Tables ... das steht z.b. in der doku (A.K.s link) also anfang jeder partition + anzahl der reservierten cluster und schon sollte man bei der 1. FAT sein achso und das root verzeichnis ist ja als pointer im bootsektor angegeben LameM
@lameM wenn du mich gemeint hast, hab sehr wohl denn ersten beitrag gelesen da steht gegen ende Für was braucht man die Fat? und das hab ich wohl beantwortet
Laut Spezifikation müsste der Offset zum Root Verzeichnis an 0x2C stehen: Winhex: 00-0F EB 58 90 4D 53 44 4F 53 35 2E 30 00 02 02 22 00 10-1F 02 00 00 00 00 F8 00 00 3F 00 FF 00 20 00 00 00 20-2F E0 D1 03 00 CB 03 00 00 00 00 00 00 02 00 <= 0x0002 Cluster2 FAT32 1024 Byte/Cluster => Root@ 0x800 Stehen aber nur 00 00 drin
Die Clusternummern sind relativ zum Anfang des Datenbereichs zu verstehen, wobei Nummer 2 eigentümlicherweise den Anfang bildet. Und wo der Datenbereich beginnt steht im o.A. Link unter "FAT32 Drive Layout". Wenn also die Rootdir an Cluster 2 beginnt, dann ist das der erste Cluster vom Datenbereich und nicht etwa der dritte Cluster der Platte. Der Datenbereich beginnt erst hinter den reservierten Sektoren (Offset 0x0E = 0x22) und beiden FATs (Grösse: Offset 0x24 = 0x3CB). Also bei Sektor (0x22 + 2*0x3CB) = 0x7B8.
Aha jetzt habe ich begriffen: Rootdir=(Adr0x0e+(2 * Adr0x24)) * 512Byte=0xF7000 Rootdir=(0x22 +(2 * 0x03CB )) * 512Byte=0xF7000 FAT1 =(Adr0x0e * 512Byte) =0x4400 FAT1 =(0x22 * 512Byte) =0x4400 FAT2 =((Adr0x0e + Adr0x24) * 512Byte) =0x7DA00 FAT2 =((0x22 + 0x03CB) * 512Byte) =0x7DA00 Daten =(Adr0x0e+(2 * Adr0x24) * 512Byte + 1 Cluster=0xF7400 DAten =(0x22 +(2 * 0x03CB ) * 512Byte + 1 Cluster=0xF7400 :) passt genau danke Dir für deine Hilfe. Ich glaube jetzt habe ich es verstanden
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.