疏鬆檔案作業
若要判斷文件系統是否支援疏鬆檔案,請呼叫 GetVolumeInformation 函式,並檢查透過 lpFileSystemFlags 參數傳回的 FILE_SUPPORTS_SPARSE_FILES 位旗標。
大部分的應用程式都不知道疏鬆檔案,也不會建立疏鬆檔案。 應用程式正在讀取疏鬆檔案的事實對應用程式而言是透明的。 知道疏鬆檔案的應用程式應該判斷其數據集是否適合保留在疏鬆檔案中。 完成該判斷之後,應用程式必須使用 FSCTL_SET_SPARSE 控件程式代碼,明確地將檔案宣告為疏鬆。
在應用程式將檔案設定為疏鬆之後,應用程式可以使用 FSCTL_SET_ZERO_DATA 控件程式代碼將檔案的區域設定為零。 此外,應用程式可以使用 FSCTL_QUERY_ALLOCATED_RANGES 控制程式代碼來加速搜尋疏鬆檔案中的非零數據。
當您執行寫入作業(除了 FSCTL_SET_ZERO_DATA以外的函式或作業),其數據只包含零,零會寫入到磁碟,以取得寫入的整個長度。 若要將檔案範圍歸零,並維護疏鬆性,請使用 FSCTL_SET_ZERO_DATA。
疏鬆感知應用程式也可以將現有的檔案設定為疏鬆。 如果應用程式將現有的檔案設定為疏鬆,則應該掃描檔案中是否有包含零的區域,並使用 FSCTL_SET_ZERO_DATA 重設這些區域,因而可能會解除分配某些實體磁碟記憶體。 升級至疏鬆檔案感知的應用程式應該執行此轉換。
當您從疏鬆檔案的零除部分執行讀取作業時,作系統可能不會從硬碟讀取。 相反地,系統會辨識要讀取的檔案部分包含零,而且它會傳回滿零的緩衝區,而不會實際從磁碟讀取。
如同任何其他檔案,系統可以將數據寫入或讀取疏鬆檔案中任何位置的數據。 寫入檔案先前零部分的非零數據可能會導致磁碟空間配置。 在非零數據上寫入零(只有具有 FSCTL_SET_ZERO_DATA),可能會導致磁碟空間解除分配。
注意
應用程式可藉由使用 FSCTL_SET_ZERO_DATA撰寫零來維護疏鬆性。
在NTFS檔系統上處理壓縮檔案的重組工具,將會正確地處理NTFS檔系統磁碟區上的疏鬆檔案。 使用可用空間之前,大型和高度分散的疏鬆檔案可能會超過磁碟範圍的NTFS限制。