File Name directory entries are critical secondary directory entries in File directory entry sets (see Table 34). The valid number of File Name directory entries in a File directory entry set is NameLength / 15, rounded up to the nearest integer. Further, File Name directory entries are valid only if they immediately follow the Stream Extension directory entry as a consecutive series. File Name directory entries combine to form the file name for the File directory entry set.

All children of a given directory entry shall have unique File Name Directory Entry Sets. That is to say there can be no duplicate file or directory names after up-casing within any one directory.

Table 34 File Name DirectoryEntry

Field NameOffset(byte)Size(byte)Comments
EntryType01This field is mandatory and Section 7.7.1 defines its contents.
GeneralSecondaryFlags11This field is mandatory and Section 7.7.2 defines its contents.
FileName230This field is mandatory and Section 7.7.3 defines its contents.

7.7.1 EntryType Field

The EntryType field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.1).

7.7.1.1 TypeCode Field

The TypeCode field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.1.1).

For the File Name directory entry, the valid value for this field is 1.

7.7.1.2 TypeImportance Field

The TypeImportance field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.1.2).

For the File Name directory entry, the valid value for this field is 0.

7.7.1.3 TypeCategory Field

The TypeCategory field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.1.3).

7.7.1.4 InUse Field

The InUse field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.1.4).

7.7.2 GeneralSecondaryFlags Field

The GeneralSecondaryFlags field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.2) and defines the contents of the CustomDefined field to be reserved.

7.7.2.1 AllocationPossible Field

The AllocationPossible field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.2.1).

For the Stream Extension directory entry, the valid value for this field is 0.

7.7.2.2 NoFatChain Field

The NoFatChain field shall conform to the definition provided in the Generic Secondary DirectoryEntry template (see Section 6.4.2.2).

7.7.3 FileName Field

The FileName field shall contain a Unicode string, which is a portion of the file name. In the order File Name directory entries exist in a File directory entry set, FileName fields concatenate to form the file name for the File directory entry set. Given the length of the FileName field, 15 characters, and the maximum number of File Name directory entries, 17, the maximum length of the final, concatenated file name is 255.

The concatenated file name has the same set of illegal characters as other FAT-based file systems (see Table 35). Implementations should set the unused characters of FileName fields to the value 0000h.

Table 35 Invalid FileName Characters

Character CodeDescriptionCharacter CodeDescriptionCharacter CodeDescription
0000hControl code0001hControl code0002hControl code
0003hControl code0004hControl code0005hControl code
0006hControl code0007hControl code0008hControl code
0009hControl code000AhControl code000BhControl code
000ChControl code000DhControl code000EhControl code
000FhControl code0010hControl code0011hControl code
0012hControl code0013hControl code0014hControl code
0015hControl code0016hControl code0017hControl code
0018hControl code0019hControl code001AhControl code
001BhControl code001ChControl code001DhControl code
001EhControl code001FhControl code0022hQuotation mark
002AhAsterisk002FhForward slash003AhColon
003ChLess-than sign003EhGreater-than sign003FhQuestion mark
005ChBack slash007ChVertical bar

The file names “.” and “..” have the special meaning of “this directory” and “containing directory”, respectively. Implementations shall not record either of these reserved file names in the FileName field. However, implementations may generate these two file names in directory listings to refer to the directory being listed and the containing directory.

Implementations may wish to restrict file and directory names to just the ASCII character set. If so they should limit their character use to the range of valid characters in the first 128 Unicode entries. They must still store file and directory names in Unicode on the volume and translate to/from ASCII/Unicode when interfacing with the user.