Microsoft implemented support for LFNs in the FAT filesystem by using hidden directory entries, of the
volume label type, to store the longer names; this scheme is known as
VFAT, and was chosen for compatibility, as volume labels are generally ignored by programs and
operating system (OS) components. Programs running on older OSs could still access the files' short names, while newer, LFN-aware OSs and programs could use the longer ones. When LFN support was first introduced into a
DOS-based operating system in the form of
Windows 95, it caused some problems for older programs. For example, a DOS program performing sector-level directory operations while Windows was in DOS mode could destroy long filename information so, by default, sector-level access to hard disks was disallowed in this mode. Upon booting into plain DOS, the long filenames are not visible unless a VFAT LFN driver is installed. Microsoft did not add LFN support to many of its older programs, including
File Manager, the
Windows 3.1x (Windows for Workgroups) file manager that was made obsolete by the new operating system shell,
Windows Explorer.
Windows NT supported LFNs on NTFS file systems starting with the release of NT 3.1, and all of its utilities, including File Manager, were updated to support LFNs. NT 3.5 added FAT LFN support in preparation for Windows 95. However, the Windows 95 version of File Manager came from Windows for Workgroups 3.11.
OS/2 stores LFNs for FAT filesystems in .LONGNAME
extended attributes that are incompatible with Microsoft's implementation and only visible to tools supporting OS/2's standard. Many APIs providing access to files by pathname cannot see the new, longer names without a supporting driver.
Limits Because the FAT LFN implementation is layered atop an older, more limited naming system, there are inevitable complications, such as if an attempt is made to create too many files with the same first six letters. Also, one is more likely to encounter issues creating files or folders in the root directory, since
FAT12 and
FAT16 only allocate space for 512 root directory entries on hard disks. Since long filenames use more than one directory entry, this problem may occur with fewer than 512 files or folders in the root directory. There is space only for 24 long filenames of maximum length (512/(1+20)). This problem does not exist for
FAT32 volumes. The long filename system allows a maximum length of 255
UCS-2 characters including spaces and non-alphanumeric characters (excluding the following characters, which have special meaning within the
COMMAND.COM command interpreter or the operating system kernel: \ / : * ? " |). This is achieved by chaining up to 20 directory entries of 13 2-byte
Unicode characters each. The maximum length of a pathname is 256 characters, which includes all parent directories and the filename. 255-character mixed-case long filename is possible only for files, or folders with no sub-folders, at the root folder of any drive. While long filename support allows for longer file and directory names, under DOS-based systems, the
absolute file path constructed from the associated short file and directory name equivalents is still represented in an internal data structure called the
Current Directory Structure (CDS), which imposes a limit of 66 characters on the (short) path name and thereby indirectly limits also the path
depth to a maximum of 33 levels (counting in the root directory and assuming only single-letter names). (This design limitation was not present in older versions of
DR DOS (prior to DR DOS 6.0 November 1991 updates) which still utilized a
relative path representation internally, however, due to their internal differences these versions are not compatible with existing LFN add-on drivers.) Non-DOS-based operating systems without a CDS are not restricted to this path depth limitation. ==VFAT LFN drivers==