Partager via


Opérations de fichier partiellement alloués

Pour déterminer si un système de fichiers prend en charge les fichiers partiellement alloués, appelez la fonctionGetVolumeInformationet examinez l’indicateur de bits FILE_SUPPORTS_SPARSE_FILES retourné par 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 lit un fichier partiellement alloué est transparente pour l’application. Une application qui connaît les fichiers partiellement alloués doit déterminer si son jeu de données convient pour être conservé dans un fichier partiellement alloué. Une fois cette détermination effectuée, l’application doit déclarer explicitement un fichier en tant qu’éparse, à l’aide du code de contrôle FSCTL_SET_SPARSE.

Une fois qu’une application a défini un fichier partiellement alloué, 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 la recherche de données non nulles dans le fichier partiellement alloué.

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 se composent de zéros, les zéros sont écrits sur le disque pour toute la longueur de l’écriture. Pour zéro sur une plage du fichier et conserver l’éparseness, utilisez FSCTL_SET_ZERO_DATA.

Une application prenant en charge l’éparseness peut également définir un fichier existant à éparse. Si une application définit un fichier existant à éparse, elle doit ensuite analyser le fichier pour les régions qui contiennent des zéros et utiliser FSCTL_SET_ZERO_DATA pour réinitialiser ces régions, ce qui peut déallouer un stockage de disque physique. Une application mise à niveau vers la sensibilisation aux fichiers partiellement alloués doit effectuer cette conversion.

Lorsque vous effectuez une opération de lecture à partir d’une partie zéro d’un fichier partiellement alloué, le système d’exploitation peut ne pas lire à partir du 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 avec n’importe quel autre fichier, le système peut écrire ou lire des données à partir de n’importe quelle position dans un fichier partiellement alloué. Les données non nulles écrites dans une partie précédemment zéro du fichier peuvent entraîner l’allocation d’espace disque. Les zéros écrits sur des données non nulles (uniquement avec FSCTL_SET_ZERO_DATA) peuvent entraîner une désallocation de l’espace disque.

Note

Il incombe à l’application de maintenir l’éparseness 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 partiellement alloués sur les volumes du système de fichiers NTFS. Les fichiers éparses volumineux et hautement fragmentés peuvent dépasser la limitation NTFS sur les étendues de disque avant l’utilisation de l’espace disponible.