Dateivorgänge mit geringer Dichte
Um zu bestimmen, ob ein Dateisystem Sparsedateien unterstützt, rufen Sie die GetVolumeInformation-Funktion auf, und untersuchen Sie das Bitflag FILE SUPPORTS _ _ SPARSE _ FILES, das über den lpFileSystemFlags-Parameter zurückgegeben wird.
Die meisten Anwendungen kennen Sparsedateien nicht und erstellen keine Sparsedateien. Die Tatsache, dass eine Anwendung eine Sparsedatei liest, ist für die Anwendung transparent. Eine Anwendung, die sparse-files kennt, sollte bestimmen, ob ihr Dataset für die Speicherung in einer Sparsedatei geeignet ist. Nachdem diese Bestimmung getroffen wurde, muss die Anwendung eine Datei mithilfe des FSCTL SET SPARSE-Steuerungscodes explizit als _ _ Sparse deklarieren.
Nachdem eine Anwendung eine Datei mit geringer Dichte festgelegt hat, kann die Anwendung den FSCTL _ SET ZERO _ DATA-Steuerungscode _ verwenden, um einen Bereich der Datei auf 0 (null) festzulegen. Darüber hinaus kann die Anwendung den Steuerungscode FSCTL _ QUERY ALLOCATED _ _ RANGES verwenden, um Suchvorgänge nach Daten ungleich 0 (null) in der Sparsedatei zu beschleunigen.
Wenn Sie einen Schreibvorgang (mit einer anderen Funktion oder einem anderen Vorgang als FSCTL _ SET ZERO _ _ DATA)ausführen, dessen Daten nur aus Nullen bestehen, werden Nullen für die gesamte Länge des Schreibvorgangs auf den Datenträger geschrieben. Verwenden Sie FSCTL _ SET ZERO _ _ DATA, um einen Bereich der Datei auf null zu setzen und die Sparsese zu gewährleisten.
Eine Anwendung mit geringer Dichte kann auch eine vorhandene Datei als sparse festlegen. Wenn eine Anwendung eine vorhandene Datei als sparse festlegt, sollte sie die Datei auf Regionen überprüfen, die Nullen enthalten, und FSCTL _ SET ZERO _ _ DATA verwenden, um diese Regionen zurückzusetzen, wodurch möglicherweise die Suche nach physischem Datenträgerspeicher eingestellt wird. Eine Anwendung, die auf Dateierkennung mit geringer Dichte aktualisiert wurde, sollte diese Konvertierung durchführen.
Wenn Sie einen Lesevorgang aus einem nicht entfernten Teil einer Sparsedatei ausführen, liest das Betriebssystem möglicherweise nicht von der Festplatte. Stattdessen erkennt das System, dass der zu lesende Teil der Datei Nullen enthält, und gibt einen Puffer mit Nullen zurück, ohne tatsächlich vom Datenträger zu lesen.
Wie bei jeder anderen Datei kann das System Daten in eine Datei mit geringer Dichte schreiben oder Daten von einer beliebigen Position aus lesen. Daten ohne 0 (null) daten, die in einen zuvor mit Null geschriebenen Teil der Datei geschrieben werden, können zur Zuordnung des Speicherplatzes führen. Nullen, die über Daten ungleich 0 geschrieben werden (nur mit FSCTL _ SET ZERO _ _ DATA),können zu einer Freigabe des Speicherplatzes führen.
Hinweis
Es liegt an der Anwendung, die Sparseness beizubehalten, indem Nullen mit FSCTL _ SET ZERO _ _ DATAgeschrieben werden.
Defragmentierungstools, die komprimierte Dateien auf NTFS-Dateisystemen verarbeiten, verarbeiten Sparsedateien auf NTFS-Dateisystemvolumes ordnungsgemäß. Große und stark fragmentierte Sparsedateien können die NTFS-Einschränkung für Datenträger-Erweiterungen überschreiten, bevor verfügbarer Speicherplatz verwendet wird.