Virtual FAT
VFAT (Virtual FAT) 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’à 255 caractères 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 Windows 95 pour la lignée grand public de Windows, et dans la version 3.5 de Windows NT.
Détails d'implémentation
[modifier | modifier le code]Principes
[modifier | modifier le code]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 8+3 caractères 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’à 13 caractères Unicode codés en UTF-16, soit 26 octets qui sont stockés dans divers champs de la structure « entrée de répertoire » habituelle : nom 8+3 caractères, date et heure, taille. Cependant, pour garantir une compatibilité maximum avec les utilitaires de disques, le champ indiquant le premier cluster 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 256 caractères 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
[modifier | modifier le code]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équence | Partie 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
[modifier | modifier le code]Voir aussi
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]Liens externes
[modifier | modifier le code]