Glesa filåtgärder
För att avgöra om ett filsystem stöder glesa filer anropar du funktionen GetVolumeInformation och undersöker FILE_SUPPORTS_SPARSE_FILES bitflaggan som returneras via parametern lpFileSystemFlags.
De flesta program är inte medvetna om glesa filer och skapar inte glesa filer. Det faktum att ett program läser en gles fil är transparent för programmet. Ett program som är medvetet om glesa filer bör avgöra om dess datauppsättning är lämplig att lagras i en gles fil. När den här bestämningen har gjorts måste programmet uttryckligen deklarera en fil som gles med hjälp av FSCTL_SET_SPARSE-kontrollkoden.
När ett program har angett att en fil ska vara gles kan programmet använda FSCTL_SET_ZERO_DATA-kontrollkoden för att ange en region i filen till noll. Dessutom kan programmet använda FSCTL_QUERY_ALLOCATED_RANGES-kontrollkoden för att påskynda sökningar efter icke-nolldata i den glesa filen.
När du utför en skrivåtgärd (med en annan funktion eller åtgärd än FSCTL_SET_ZERO_DATA) vars data bara består av nollor skrivs nollor till disken under hela skrivlängden. Om du vill nollställa ett intervall av filen och upprätthålla gleshet använder du FSCTL_SET_ZERO_DATA.
Ett sparseness-aware-program kan också ange att en befintlig fil ska vara gles. Om ett program anger att en befintlig fil ska vara gles bör den sedan söka igenom filen efter regioner som innehåller nollor och använda FSCTL_SET_ZERO_DATA för att återställa dessa regioner, vilket möjligen frigör en del fysisk disklagring. Ett program som uppgraderats till gles filmedvetenhet bör utföra den här konverteringen.
När du utför en läsåtgärd från en nollställd del av en gles fil kanske operativsystemet inte läser från hårddisken. I stället identifierar systemet att den del av filen som ska läsas innehåller nollor, och den returnerar en buffert full med nollor utan att faktiskt läsa från disken.
Precis som med andra filer kan systemet skriva data till eller läsa data från valfri position i en gles fil. Icke-nolldata som skrivs till en tidigare nollad del av filen kan leda till allokering av diskutrymme. Nollor som skrivs över icke-nolldata (endast med FSCTL_SET_ZERO_DATA) kan leda till att diskutrymme frigörs.
Not
Det är upp till programmet att upprätthålla gleshet genom att skriva nollor med FSCTL_SET_ZERO_DATA.
Defragmenteringsverktyg som hanterar komprimerade filer i NTFS-filsystem hanterar på rätt sätt glesa filer på NTFS-filsystemvolymer. Stora och mycket fragmenterade glesa filer kan överskrida NTFS-begränsningen för diskutrymmen innan tillgängligt utrymme används.