VFAT () est une extension des systèmes de fichiers de type FAT de Microsoft (FAT12, FAT16 ou FAT32) qui permet l’utilisation de noms de fichiers longs. En effet, elle permet de s’affranchir du format restreint à 8+3 caractères ASCII majuscules imposé originellement par FAT : VFAT autorise des noms pouvant contenir jusqu’à Unicode. Seuls sont interdits les caractères spéciaux ayant une signification dans la description de chemin sous Windows, c’est-à-dire les caractères /, \, ?, *, ", :.
L’extension VFAT a été introduite dans pour la lignée grand public de Windows, et dans la version 3.5 de .
Détails d'implémentation
Principes Un système de fichiers sur lequel figurent des noms de fichiers longs reste lisible par les programmes antérieurs à l’introduction de VFAT. En effet, pour un nom de fichier long, VFAT génère systématiquement un nom de fichier « classique » de qui peut être lu par les anciens programmes. Ce nom est obtenu par troncature du nom de fichier long, et en général ajout d’un suffixe numérique (du type ~1). Le nom de fichier long lui-même est stocké en plus en utilisant une astuce.
Les caractères du nom de fichier long sont stockés dans des entrées de répertoire particulières, situées avant l’entrée classique. Ces entrées sont marquées des attributs nom de volume, système, caché, lecture seule (valeur 0xF), une combinaison normalement impossible, et qui fait qu’elles sont ignorées par les anciens programmes, notamment par les appels système MS-DOS. Le seul inconvénient peut être un affichage incorrect du nom de volume par d’anciennes versions de MS-DOS.
Chacune de ces entrées particulières peut contenir jusqu’à Unicode codés en UTF-16, soit qui sont stockés dans divers champs de la structure « entrée de répertoire » habituelle : nom , date et heure, taille. Cependant, pour garantir une compatibilité maximum avec les utilitaires de disques, le champ indiquant le premier du fichier n’a pas été réutilisé ; il est systématiquement mis à zéro.
Jusqu’à 20 de ces entrées peuvent être enchaînées, ce qui donne au total possibles. Après le dernier caractère, les deux octets 0x00, 0x00 marquent la fin de la chaîne. Les éventuels octets restants dans la dernière entrée sont mis à 0xFF. Les entrées sont stockées en commençant par la dernière. Elles possèdent chacune un numéro de séquence, qui commence à 1 pour la première. La valeur 0x40 est ajoutée au numéro de séquence de la dernière entrée (celle stockée en premier).
Exemple Pour représenter le nom de fichier « Un nom de fichier vraiment long.txt », quatre entrées de répertoire sont en tout nécessaires :
Numéro de séquencePartie du nom stocké0x43" long.txt"0x02"hier vraiment"0x01"Un nom de fic"Entrée classique 8+3 (UNNOMD~1.TXT)
Notes et références
Voir aussi Articles connexes
Liens externes
Catégorie:Système de fichiers