2.1.1.3 Per File

The object store MUST implement the following persistent attributes:

  • FileType: The type of file. This value MUST be DataFile, DirectoryFile, or ViewIndexFile.<12>

  • FileId128: The optional 128-bit file ID, as specified in [MS-FSCC] section 2.1.10, that identifies the file. If available, this value SHOULD be persistent and SHOULD be unique on a given volume.

  • FileId64: The optional 64-bit file ID, as specified in [MS-FSCC] section 2.1.9, that identifies the file. If available, this value SHOULD be persistent and SHOULD be unique on a given volume.

  • FileNumber: A 64-bit unsigned integer. Not all file systems support this field, and implementation of this field is optional. If implemented, this value MUST be persistent and MUST be unique on a given volume. This value is unrelated to FileId64.

  • LinkList: A list of one or more Links to the file. A DirectoryFile MUST have exactly one element in LinkList. LinkList MUST have at most one element with a non-empty ShortName.<13>

  • SecurityDescriptor: The security descriptor for this file, in the format specified in [MS-DTYP] section 2.4.6.

  • FileAttributes: Attributes of the file in the form specified in [MS-FSCC] section 2.6.

  • CreationTime: The time that identifies when the file was created in the FILETIME format specified in [MS-FSCC] section 2.1.1.<14>

  • LastModificationTime: The time that identifies when the file contents were last modified in the FILETIME format specified in [MS-FSCC] section 2.1.1.<15>

  • LastChangeTime: The time that identifies when the file metadata or contents were last changed in the FILETIME format specified in [MS-FSCC] section 2.1.1.<16>

  • LastAccessTime: The time that identifies when the file was last accessed in the FILETIME format specified in [MS-FSCC] section 2.1.1. Updating this value when accesses occur is optional.<17><18>

  • ExtendedAttributes: A list of FILE_FULL_EA_INFORMATION structures as defined by [MS-FSCC] section 2.4.15.<19>

  • ExtendedAttributesLength: A 32-bit unsigned integer that contains the combined length of all the ExtendedAttributes. <20>

  • ObjectId: A GUID as specified in [RFC4122]. This value can be NULL. If set to non-NULL, this value MUST be unique on a given volume.<21>

  • BirthVolumeId: A GUID that uniquely identifies the volume on which the object resided when the object identifier was created, or zero if the volume had no object identifier at that time. After copy operations, move operations, or other file operations, this value is potentially different from the VolumeId of the volume on which the object currently resides.

  • BirthObjectId: A GUID value containing the object identifier of the object at the time it was created. After copy operations, move operations, or other file operations, this value is potentially different from the ObjectId member at present.<22>

  • DomainId: A GUID value that MUST be zero if created by the object store, but MUST be maintained if explicitly set by a client.

  • StreamList: A list of zero or more named Streams as defined in section 2.1.1.5. A DataFile MUST have one and only one unnamed DataStream; any additional streams MUST be named DataStreams.<23> A DirectoryFile MUST have one and only one unnamed DirectoryStream; any additional streams MUST be named DataStreams.

  • ReparseTag: A 32-bit unsigned integer containing the type of the reparse point, as defined in [MS-FSCC] section 2.1.2.1. If this member is empty, there is no reparse point associated with this file.

  • ReparseGUID: A GUID indicating the type of the reparse point. This field MUST contain a valid GUID if ReparseTag contains a non-Microsoft tag as described in [MS-FSCC] section 2.1.2.1. Otherwise it MUST be empty.

  • ReparseData: An array of bytes containing data associated with a reparse point, which is defined by the type of the reparse point, as described in [MS-FSCC] section 2.1.2. If ReparseTag is empty, this member MUST be empty. If ReparseTag is not empty, this member could be empty, in which case there is no reparse data associated with this reparse point.

  • DirectoryList: For a DataFile, this list MUST be empty. For a DirectoryFile, this is a list of Links contained in the directory. For any two distinct elements Link1 and Link2 in DirectoryList, Link1.Name MUST NOT match Link2.Name or Link2.ShortName.<24>

  • Volume: The Volume on which the file resides.

  • Usn: A 64-bit unsigned integer indicating the positive USN number of the last USN record written for this file, or 0 if no USN records have been written for this file.

  • IsSymbolicLink: A Boolean that is TRUE if the file is a mount point or a symbolic link to another file or directory.

  • UserCertificateList: A list of ENCRYPTION_CERTIFICATE structures as specified in [MS-EFSR] section 2.2.8, used to determine which users can access the contents of any encrypted streams in the file.<25>

Volatile Fields:

  • OpenList: A list of all Opens to this File.

  • PendingNotifications: A 32-bit unsigned integer composed of flags indicating types of changes to file attributes for which directory change notifications are pending, as specified in [MS-SMB2] section 2.2.35, CompletionFilter field.