Wo ist die FAT?
-
hi,
ich habe bisher die PartitionsTabellen aus dem Bootsector ausgelesen und mit Hilfe dieser Informationen den FATBootRecord (erster Sector der partition) ausgelesen. All die Informationen die in ihm stecken hab ich jetzt schön in riesige strukturen gespeichert. Meine Frage: Wo befindet sich jetzt die FAT? mit all ihren Directory und File Einträgen?
MFG Marcel
-
die FAT folgt unmittelbar nach dem MBR. im allgemeinen auch gleich noch eine kopie davon. die größe der FAT kannst du aus den werten aus dem Boot-Sec ausrechnen. danach findest du den hauptverzeichnis-eintrag (C:\, D:\ usw.), auch dessen größe kannst du mit den werten ausrechnen. danach folgen nur daten-sectoren, wobei diese auch unterverzeichniseinträge enthalten können. am besten du besorgst dir mal die specif von FAT (einfach googlen, da findest du sonstwie viele sachen)
cu todo
-
hi nochmal,
jo ich hab diese tolle FAT-Docu... laut dieser documentation ist das so:
1. Sector auf dem medium: BootSector (enthält partitionstabellen und n prog)
2. Sector: FATBootRecord, hier sind alle möglichen daten zum FAT-Dateisyetem gespeichert
3. Sector: hier beginnt die File Allocataion Tablenun habe ich den dritten sektor meiner festplatte ausgelesen. Laut dokumentation müsste sich hier der erste eintrag befinden. Da die ersten 11Bytes eines eintrag den dateinamen und den dateityp beinhalten habe ich diese 11bytes mit meine printf funktion ausgeben lassen aber das ergibt nur unbrauchbare zeichen (also keinen datei oder verzeichnissnamen)
also liege ich richtig das die einträge im dritten sektor meiner fesplatte liegen? wenn ja, warum beinhalten die erste 11byte des dritten sektors keinen brauchbaren datei/verzeichnis namen?
MFG Marcel
-
autsch bin ich dumm *g*
ok ich weiß jetzt das die einträge im root directory sind. Ich hab jetzt auch diese "Dos-Sektor" Nummer in physische Sectore, Tracks und Heads umgerechnet.
Jetzt habe ich nur noch ein problem: Rundungsfehler
wenn z.b. bei einer division von zwei integern 0,501 oder so rauskommt wird auf 0 abgerundet... klar wenn ich jetzt eins dazuzähle stimmts wieder aber ich kann ja nicht immer einfach eins dazuzählen... da würde ja meine ergebnisse verfälschen ?!?
also wie könnte man dieses problem lösen? (hat zwar nix mit assembler oder fat zu tun aber ich frag trotzdem mal hier)
achja nochwas: ist es möglich das die datei IO.SYS der erste eintrag im root directory ist? wenn ja, dann funktioniert mein code wenigstens teilweiße *g*
nungut
wünsche euch allen schöne träume *g*
Marcel
-
Original erstellt von <Marcel>:
**Jetzt habe ich nur noch ein problem: Rundungsfehlerwenn z.b. bei einer division von zwei integern 0,501 oder so rauskommt wird auf 0 abgerundet... klar wenn ich jetzt eins dazuzähle stimmts wieder aber ich kann ja nicht immer einfach eins dazuzählen... da würde ja meine ergebnisse verfälschen ?!?
**Was rundest du denn komisches? Floating-Point-Zahlen im Dateisystemcode würden mir erstmal suspekt vorkommen
**achja nochwas: ist es möglich das die datei IO.SYS der erste eintrag im root directory ist? wenn ja, dann funktioniert mein code wenigstens teilweiße *g*
**Ja, zumindest bei allen nicht ganz aktuellen DOS-Versionen muss das so sein. (Ich weiß nicht inwiefern die letzten DOS-Versionen die in Win9x/ME dirn waren das abkönnen) Kommt also hin