Partager via


Opérations sur les fichiers partiellement alloués

Pour déterminer si un système de fichiers prend en charge les fichiers partiellement alloués, appelez la fonction GetVolumeInformation et examinez l’indicateur de bits FILE_SUPPORTS_SPARSE_FILES retourné via le paramètre lpFileSystemFlags .

La plupart des applications ne connaissent pas les fichiers partiellement alloués et ne créent pas de fichiers partiellement alloués. Le fait qu’une application lisent un fichier partiellement alloué est transparent pour l’application. Une application qui connaît les fichiers partiellement alloués doit déterminer si son jeu de données peut être conservé dans un fichier partiellement alloué. Une fois cette détermination effectuée, l’application doit déclarer explicitement un fichier comme partiellement alloué, à l’aide du code de contrôle FSCTL_SET_SPARSE .

Une fois qu’une application a défini un fichier à éparse, l’application peut utiliser le code de contrôle FSCTL_SET_ZERO_DATA pour définir une région du fichier sur zéro. En outre, l’application peut utiliser le code de contrôle FSCTL_QUERY_ALLOCATED_RANGES pour accélérer les recherches de données non nulles dans le fichier épars.

Lorsque vous effectuez une opération d’écriture (avec une fonction ou une opération autre que FSCTL_SET_ZERO_DATA) dont les données ne sont constituées que de zéros, les zéros sont écrits sur le disque pour toute la durée de l’écriture. Pour vider une plage du fichier et maintenir l’éparse, utilisez FSCTL_SET_ZERO_DATA.

Une application prenant en charge l’éparse peut également définir un fichier existant pour qu’il soit partiellement alloué. Si une application définit un fichier existant de façon à ce qu’il soit partiellement alloué, elle doit ensuite analyser le fichier pour rechercher les régions qui contiennent des zéros et utiliser FSCTL_SET_ZERO_DATA pour réinitialiser ces régions, ce qui peut éventuellement déallouer du stockage sur disque physique. Une application mise à niveau vers une reconnaissance de fichier éparse doit effectuer cette conversion.

Lorsque vous effectuez une opération de lecture à partir d’une partie mise à zéro d’un fichier partiellement alloué, le système d’exploitation peut ne pas lire à partir du lecteur de disque dur. Au lieu de cela, le système reconnaît que la partie du fichier à lire contient des zéros et retourne une mémoire tampon pleine de zéros sans réellement lire à partir du disque.

Comme pour tout autre fichier, le système peut écrire des données dans un fichier partiellement alloué ou lire des données à partir de n’importe quelle position. Des données non nulles écrites dans une partie du fichier précédemment mise à zéro peuvent entraîner l’allocation d’espace disque. Les zéros écrits sur des données différentes de zéro (uniquement avec FSCTL_SET_ZERO_DATA) peuvent entraîner une désallocation de l’espace disque.

Notes

Il appartient à l’application de maintenir l’éparse en écrivant des zéros avec FSCTL_SET_ZERO_DATA.

 

Les outils de défragmentation qui gèrent les fichiers compressés sur les systèmes de fichiers NTFS gèrent correctement les fichiers épars sur les volumes du système de fichiers NTFS. Les fichiers éparses volumineux et très fragmentés peuvent dépasser la limite NTFS sur les extensions de disque avant l’utilisation de l’espace disponible.