| Zeile 311: | Zeile 311: | ||
== Lesen von Dateien == | == Lesen von Dateien == | ||
{{TODO|Nochmal überfliegen ob das so stimmt. Hab noch nie einen entsprechenden Treiber geschrieben ;)}} | {{TODO|Nochmal überfliegen ob das so stimmt. Hab noch nie einen entsprechenden Treiber geschrieben ;)}} | ||
| − | Um eine Datei zu lesen benötigt man als ersten den entsprechenden Verzeichnis-Eintrag. Sobald man diesen hat, kann man den ersten Cluster (der ja im Verzeichnis-Eintrag steht) laden. Danach | + | Um eine Datei zu lesen benötigt man als ersten den entsprechenden Verzeichnis-Eintrag. Sobald man diesen hat, kann man den ersten Cluster (der ja im Verzeichnis-Eintrag steht) laden. Danach lädt man für den ersten Cluster den zugehörigen Eintrag in der FAT. Über den FAT-Eintrag kann man nun feststellen ob dieser Cluster der letzte war oder, wenn nicht, welcher der nächste Cluster ist. Hier nochmal in Kurzform: |
# Verzeichnis-Eintrag suchen | # Verzeichnis-Eintrag suchen | ||
| − | # Nummer des ersten Clusters extrahieren | + | # Nummer des ersten Clusters aus den Verzeichnis-Eintrag extrahieren |
# Cluster-Inhalt laden (Nutzdaten der Datei) | # Cluster-Inhalt laden (Nutzdaten der Datei) | ||
# zugehörigen FAT-Eintrag für den aktuellen Cluster laden | # zugehörigen FAT-Eintrag für den aktuellen Cluster laden | ||
# Wenn im FAT-Eintrag eine gültige Cluster-Nummer steht zu 3. gehen, sonst weitermachen | # Wenn im FAT-Eintrag eine gültige Cluster-Nummer steht zu 3. gehen, sonst weitermachen | ||
# Datei ist geladen | # Datei ist geladen | ||
| + | Da man eine Datei aber nur selten wirklich komplett vom Anfang bis zum Ende lädt, vor allem bei größeren Dateien, ist es noch wichtig wenn man wahlfreie Zugriffe implementiert. Dazu bekommt man vom VFS ja üblicherweise ein Offset innerhalb der Datei und die Länge der gewünschten Daten (beides muss natürlich anhand der Dateigröße auf Gültigkeit geprüft werden). Mit dem Offset muss man sich als erstes ausrechnen in welchem Cluster der gewünschte Bereich anfängt um sich dann anhand der Cluster-Kette in der FAT bis zur gewünschten Stelle durch zu hangeln, ab da kann man dann die gewünschten Daten wie oben beschrieben laden. | ||
== Siehe auch == | == Siehe auch == | ||