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

Principes modifier

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

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

Voir aussi modifier

Articles connexes modifier