File directory entries describe files and directories. They are critical primary directory entries and any directory may contain zero or more File directory entries (see Table 27). For a File directory entry to be valid, exactly one Stream Extension directory entry and at least one File Name directory entry must immediately follow the File directory entry (see Section 7.6 and Section 7.7, respectively).

Table 27 File DirectoryEntry

Field NameOffset(byte)Size(byte)Comments
EntryType01This field is mandatory and Section 7.4.1 defines its contents.
SecondaryCount11This field is mandatory and Section 7.4.2 defines its contents.
SetChecksum22This field is mandatory and Section 7.4.3 defines its contents.
FileAttributes42This field is mandatory and Section 7.4.4 defines its contents.
Reserved162This field is mandatory and its contents are reserved.
CreateTimestamp84This field is mandatory and Section 7.4.5 defines its contents.
LastModifiedTimestamp124This field is mandatory and Section 7.4.6 defines its contents.
LastAccessedTimestamp164This field is mandatory and Section 7.4.7 defines its contents.
Create10msIncrement201This field is mandatory and Section 7.4.5 defines its contents.
LastModified10msIncrement211This field is mandatory and Section 7.4.6 defines its contents.
CreateUtcOffset221This field is mandatory and Section 7.4.5 defines its contents.
LastModifiedUtcOffset231This field is mandatory and Section 7.4.6 defines its contents.
LastAccessedUtcOffset241This field is mandatory and Section 7.4.7 defines its contents.
Reserved2257This field is mandatory and its contents are reserved.

7.4.1 EntryType Field

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

7.4.1.1 TypeCode Field

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

For a File directory entry, the valid value for this field is 5.

7.4.1.2 TypeImportance Field

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

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

7.4.1.3 TypeCategory Field

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

7.4.1.4 InUse Field

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

7.4.2 SecondaryCount Field

The SecondaryCount field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.2).

7.4.3 SetChecksum Field

The SetChecksum field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.3).

7.4.4 FileAttributes Field

The FileAttributes field contains flags (see Table 28).

Table 28 FileAttributes Field Structure

Field NameOffset(bit)Size(bits)Comments
ReadOnly01This field is mandatory and conforms to the MS-DOS definition.
Hidden11This field is mandatory and conforms to the MS-DOS definition.
System21This field is mandatory and conforms to the MS-DOS definition.
Reserved131This field is mandatory and its contents are reserved.
Directory41This field is mandatory and conforms to the MS-DOS definition.
Archive51This field is mandatory and conforms to the MS-DOS definition.
Reserved2610This field is mandatory and its contents are reserved.

7.4.5 CreateTimestamp, Create10msIncrement, and CreateUtcOffset Fields

In combination, the CreateTimestamp and CreateTime10msIncrement fields shall describe the local date and time the given file/directory was created. The CreateUtcOffset field describes the offset of local date and time from UTC. Implementations shall set these fields upon creation of the given directory entry set.

These fields shall conform to the definitions of the Timestamp, 10msIncrement, and UtcOffset fields (see Section 7.4.8, Section 7.4.9, and Section 7.4.10, respectively).

7.4.6 LastModifiedTimestamp, LastModified10msIncrement, and LastModifiedUtcOffset Fields

In combination, the LastModifiedTimestamp and LastModifiedTime10msIncrement fields shall describe the local date and time the contents of any of the clusters associated with the given Stream Extension directory entry were last modified. The LastModifiedUtcOffset field describes the offset of local date and time from UTC. Implementations shall update these fields:

  1. After modifying the contents of any of the clusters associated with the given Stream Extension directory entry (except for contents which exist beyond the point the ValidDataLength field describes)
  2. Upon changing the values of either the ValidDataLength or DataLength fields

These fields shall conform to the definitions of the Timestamp, 10msIncrement, and UtcOffset fields (see Section 7.4.8, Section 7.4.9, and Section 7.4.10, respectively).

7.4.7 LastAccessedTimestamp and LastAccessedUtcOffset Fields

The LastAccessedTimestamp field shall describe the local date and time the contents of any of the clusters associated with the given Stream Extension directory entry were last accessed. The LastAccessedUtcOffset field describes the offset of local date and time from UTC. Implementations shall update these fields:

  1. After modifying the contents of any of the clusters associated with the given Stream Extension directory entry (except for contents which exist beyond the ValidDataLength)
  2. Upon changing the values of either the ValidDataLength or DataLength fields

Implementations should update these fields after reading the contents of any of the clusters associated with the given Stream Extension directory entry.

These fields shall conform to the definitions of the Timestamp and UtcOffset fields (see Section 7.4.8 and Section 7.4.10, respectively).

7.4.8 Timestamp Fields

Timestamp fields describe both local date and time, down to a two-second resolution (see Table 29).

Table 29 Timestamp Field StructureExpand table

Field NameOffset(bit)Size(bits)Comments
DoubleSeconds05This field is mandatory and Section 7.4.8.1 defines its contents.
Minute56This field is mandatory and Section 7.4.8.2 defines its contents.
Hour115This field is mandatory and Section 7.4.8.3 defines its contents.
Day165This field is mandatory and Section 7.4.8.4 defines its contents.
Month214This field is mandatory and Section 7.4.8.5 defines its contents.
Year257This field is mandatory and Section 7.4.8.6 defines its contents.
7.4.8.1 DoubleSeconds Field

The DoubleSeconds field shall describe the seconds portion of the Timestamp field, in two-second multiples.

The valid range of values for this field shall be:

  • 0, which represents 0 seconds
  • 29, which represents 58 seconds
7.4.8.2 Minute Field

The Minute field shall describe the minutes portion of the Timestamp field.

The valid range of values for this field shall be:

  • 0, which represents 0 minutes
  • 59, which represents 59 minutes
7.4.8.3 Hour Field

The Hour field shall describe the hours portion of the Timestamp field.

The valid range of values for this field shall be:

  • 0, which represents 00:00 hours
  • 23, which represents 23:00 hours
7.4.8.4 Day Field

The Day field shall describe the day portion of the Timestamp field.

The valid range of values for this field shall be:

  • 1, which is the first day of the given month
  • The last day of the given month (the given month defines the number of valid days)
7.4.8.5 Month Field

The Month field shall describe the month portion of the Timestamp field.

The valid range of values for this field shall be:

  • At least 1, which represents January
  • At most 12, which represents December
7.4.8.6 Year Field

The Year field shall describe the year portion of the Timestamp field, relative to the year 1980. This field represents the year 1980 with the value 0 and the year 2107 with the value 127.

All possible values for this field are valid.

7.4.9 10msIncrement Fields

10msIncrement fields shall provide additional time resolution to their corresponding Timestamp fields in ten-millisecond multiples.

The valid range of values for these fields shall be:

  • At least 0, which represents 0 milliseconds
  • At most 199, which represents 1990 milliseconds

7.4.10 UtcOffset Fields

UtcOffset fields (see Table 30) shall describe the offset from UTC to the local date and time their corresponding Timestamp and 10msIncrement fields describe. The offset from UTC to the local date and time includes the effects of time zones and other date-time adjustments, such as daylight saving and regional summer time changes.

Table 30 UtcOffset Field Structure

Field NameOffset(bit)Size(bits)Comments
OffsetFromUtc07This field is mandatory and Section 7.4.10.1defines its contents.
OffsetValid71This field is mandatory and Section 7.4.10.2 defines its contents.
7.4.10.1 OffsetFromUtc Field

The OffsetFromUtc field shall describe the offset from UTC of the local date and time the related Timestamp and 10msIncrement fields contains. This field describes the offset from UTC in 15 minute intervals (see Table 31).

Table 31 Meaning of the Values of the OffsetFromUtc Field

ValueSigned Decimal EquivalentDescription
3Fh63Local date and time is UTC + 15:45
3Eh62Local date and time is UTC + 15:30
01h1Local date and time is UTC + 00:15
00h0Local date and time is UTC
7Fh-1Local date and time is UTC – 00:15
41h-63Local date and time is UTC – 15:45
40h-64Local date and time is UTC – 16:00

As the table above indicates, all possible values for this field are valid. However, implementations should only record the value 00h for this field when:

  1. Local date and time are actually the same as UTC, in which case the value of the OffsetValid field shall be 1
  2. Local date and time are not known, in which case the value of the OffsetValid field shall be 1 and implementations shall consider UTC to be local date and time
  3. UTC is not known, in which case the value of the OffsetValid field shall be 0

If the local date and time offset from UTC happens to not be a multiple of 15 minute intervals, then implementations shall record 00h in the OffsetFromUtc field and shall consider UTC to be local date and time.

7.4.10.2 OffsetValid Field

The OffsetValid field shall describe whether the contents of the OffsetFromUtc field are valid or not, as follows:

  • 0, which means the contents of the OffsetFromUtc field are invalidand shall be 00h
  • 1, which means the contents of the OffsetFromUtc field are valid

Implementations should only set this field to the value 0 when UTC is not available for computing the value of the OffsetFromUtc field. If this field contains the value 0, then implementations shall treat the Timestamp and 10msIncrement fields as having the same UTC offset as the current local date and time.