FAT Dateisystem

Gast #72698
Ich bin gerade dabei einen Compact Flash Reader zu programmieren.
Im Moment bin ich beim Dateisystem. Beim Lesen des Root habe ich ein
Problem:
Es gibt 511 Einträge, von denen jeder 32Bytes lang ist.
An fast jeder 2. Position steht die lange Version des Dateinamens. Aber
eben nur fast.
Woran erkenne ich jetzt, ob die Daten die in jedem Eintrag stehen,
wirklich eine Datei sind, oder ein anderer Eintrag ?
Gast
hallo benedikt

wenn ich mich richtig erinnere gibts nur 2 Möglichkeiten, entweder es
ist ne Datei oder ein Pfad, und die beiden unterscheiden sich in einem
Bit der Flags: das 'D' steht für Directory, wenn's nicht gesetzt
ist, ist es eine datei

gruß
gerhard
Gast
Und wenn es keines von beidem ist ?
Es gibt 512 Plätze für Dateien oder Verzeichnisse. Ich habe aber nur 6
Dateien. Woran erkenne ich jetzt, ob der Eintrag belegt ist, oder ob da
nur Datenmüll steht ?
Gast
Ich nehme an, daß Du nicht über ein Beriebssystem liest, sondern einen
Hardware-Zugriff machst, denn wenn Du über ein Betriebssystem liest,
kriegst Du nur gültige Dateien bzw Pfade. Das ist so lang her, daß ich
damit gearbeitet habe... Also da war was mit dem 1. zeichen. ich denke
es ist 0 wenn der Eintrag gültig ist und E5 wenn der Eintrag
ungültig/gelöscht ist. das 1.zeichen ist das zeichen, das vor dem Namen
(dateiname/pfad) steht.

Gerhard
Gast
Hi0

du gehst sämtliche möglichen Einträge durch bis du auf einen triffst
dessen erstes Zeichen des 8.3 Dateinamens 0x00 ist. Dann sind sämtliche
Einträge beendet. Triffst du auf einen Eintrag dessen 8.3 Dateiname mit
0xE5 beginnt ignorierst du diesen Eintrag. Triffst du auf einen Eintrag
der die Attribute READ_ONLY, HIDDEN, SYSTEM und VOLUME_ID gesetzt hat
ist dieser Eintrag Teil eines langen Dateinames.

Matthias

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.