Delen via


Sparse-bestandsbewerkingen

Als u wilt bepalen of een bestandssysteem sparse-bestanden ondersteunt, roept u de functie GetVolumeInformation aan en bekijkt u de FILE_SUPPORTS_SPARSE_FILES bitvlag die wordt geretourneerd via de lpFileSystemFlags-parameter.

De meeste toepassingen zijn niet op de hoogte van sparse-bestanden en maken geen sparse-bestanden. Het feit dat een toepassing een sparse-bestand leest, is transparant voor de toepassing. Een toepassing die op de hoogte is van sparse-bestanden, moet bepalen of de gegevensset geschikt is om in een sparse-bestand te worden bewaard. Nadat deze beslissing is gemaakt, moet de toepassing expliciet een bestand declareren als sparse, met behulp van de FSCTL_SET_SPARSE controlecode.

Nadat een toepassing een bestand heeft ingesteld op sparse, kan de toepassing de FSCTL_SET_ZERO_DATA besturingscode gebruiken om een regio van het bestand in te stellen op nul. Bovendien kan de toepassing de FSCTL_QUERY_ALLOCATED_RANGES besturingscode gebruiken om te zoeken naar niet-nulgegevens in het sparse-bestand.

Wanneer u een schrijfbewerking uitvoert (met een andere functie of bewerking dan FSCTL_SET_ZERO_DATA) waarvan de gegevens bestaan uit niets dan nullen, worden nullen naar de schijf geschreven voor de volledige lengte van de schrijfbewerking. Gebruik FSCTL_SET_ZERO_DATAom een bereik van het bestand uit te stellen en sparserheid te behouden.

Een sparseness-aware toepassing kan ook een bestaand bestand instellen op sparse. Als een toepassing instelt dat een bestaand bestand wordt geparseerd, moet het vervolgens het bestand scannen op regio's die nullen bevatten en FSCTL_SET_ZERO_DATA gebruiken om die regio's opnieuw in te stellen, waardoor er mogelijk enige fysieke schijfopslag wordt toegewezen. Een toepassing die is bijgewerkt naar het parseren van bestandsbewustzijn, moet deze conversie uitvoeren.

Wanneer u een leesbewerking uitvoert vanuit een nul-outgedeelte van een sparse-bestand, kan het besturingssysteem niet worden gelezen vanaf de harde schijf. In plaats daarvan herkent het systeem dat het gedeelte van het bestand dat moet worden gelezen nullen bevat en retourneert het een buffer vol nullen zonder daadwerkelijk van de schijf te lezen.

Net als bij elk ander bestand kan het systeem gegevens schrijven naar of lezen vanaf elke positie in een sparse-bestand. Niet-nulgegevens die naar een eerder nulgedeelte van het bestand worden geschreven, kunnen leiden tot de toewijzing van schijfruimte. Nullen die worden geschreven over niet-nulgegevens (alleen met FSCTL_SET_ZERO_DATA) kunnen leiden tot een deallocatie van schijfruimte.

Notitie

Het is aan de toepassing om sparseheid te behouden door nullen te schrijven met FSCTL_SET_ZERO_DATA.

 

Hulpprogramma's voor defragmentatie waarmee gecomprimeerde bestanden op NTFS-bestandssystemen worden verwerkt, verwerken sparsebestanden op NTFS-bestandssysteemvolumes correct. Grote en zeer gefragmenteerde sparsebestanden kunnen de NTFS-beperking voor schijfgebied overschrijden voordat de beschikbare ruimte wordt gebruikt.