Operacje na plikach rozrzednych
Aby określić, czy system plików obsługuje pliki rozrzedzone, wywołaj funkcję GetVolumeInformation i zbadaj flagę bitową FILE_SUPPORTS_SPARSE_FILES zwróconą za pomocą parametru lpFileSystemFlags.
Większość aplikacji nie zna rozrzednych plików i nie tworzy rozrzedniejszych plików. Fakt, że aplikacja odczytuje plik rozrzedny, jest niewidoczny dla aplikacji. Aplikacja, która ma świadomość rozrzedzona plików, powinna określić, czy jego zestaw danych jest odpowiedni do zachowywania w pliku rozrzedzona. Po wykonaniu tej determinacji aplikacja musi jawnie zadeklarować plik jako rozrzedny przy użyciu kodu sterującego FSCTL_SET_SPARSE.
Po ustawieniu pliku jako rozrzedzona aplikacja może użyć FSCTL_SET_ZERO_DATA kodu sterującego, aby ustawić region pliku na zero. Ponadto aplikacja może użyć FSCTL_QUERY_ALLOCATED_RANGES kodu sterującego, aby przyspieszyć wyszukiwanie danych niezerowych w pliku rozrzedzanym.
Podczas wykonywania operacji zapisu (z funkcją lub operacją inną niż FSCTL_SET_ZERO_DATA), której dane składają się z niczego, ale zera, zera zostaną zapisane na dysku przez całą długość zapisu. Aby zerować zakres pliku i zachować rozrzedwienie, użyj FSCTL_SET_ZERO_DATA.
Aplikacja z rozrzedzona obsługą może również ustawić istniejący plik jako rozrzedzona. Jeśli aplikacja ustawia istniejący plik do rozrzedlenia, powinien następnie przeskanować plik dla regionów zawierających zera i użyć FSCTL_SET_ZERO_DATA do zresetowania tych regionów, co może spowodować cofnięcie przydziału magazynu dysku fizycznego. Aplikacja uaktualniona do rozrzednia rozpoznawania plików powinna wykonać tę konwersję.
Po wykonaniu operacji odczytu z zerowej części pliku rozrzedzonego system operacyjny może nie odczytać z dysku twardego. Zamiast tego system rozpoznaje, że część pliku do odczytu zawiera zera i zwraca bufor pełen zer bez faktycznego odczytu z dysku.
Podobnie jak w przypadku dowolnego innego pliku, system może zapisywać dane do lub odczytywać dane z dowolnej pozycji w pliku rozrzednym. Dane niezerowe zapisywane w wcześniej zerowej części pliku mogą spowodować alokację miejsca na dysku. Zera zapisywane w danych niezerowych (tylko z FSCTL_SET_ZERO_DATA) mogą spowodować cofnięcie przydziału miejsca na dysku.
Nuta
Należy do aplikacji, aby zachować rozrzedwienie, zapisując zera z FSCTL_SET_ZERO_DATA.
Narzędzia do defragmentacji obsługujące skompresowane pliki w systemach plików NTFS będą prawidłowo obsługiwać rozrzedzone pliki na woluminach systemu plików NTFS. Duże i wysoce fragmentowane pliki rozrzedzone mogą przekraczać ograniczenie NTFS w zakresach dysków, zanim zostanie użyte dostępne miejsce.