2.1.5.6.3.4 FileIdBothDirectoryInformation

OutputBuffer is an array of one or more FILE_ID_BOTH_DIR_INFORMATION structures as described in [MS-FSCC] section 2.4.17. Entry is a parameter to this routine that points to the current FILE_ID_BOTH_DIR_INFORMATION structure to fill out. Note that the FileName field is not set in this section.

Pseudocode for the operation is as follows:

  • If OutputBufferSize is smaller than FieldOffset(FILE_ID_BOTH_DIR_INFORMATION.FileName), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.

  • The object store MUST process this query using the algorithm described in section 2.1.5.6.3.

  • Entry MUST be constructed as follows:

    • Entry.NextEntryOffset set to zero

    • Entry.FileIndex set to zero

    • Entry.CreationTime set to Link.CreationTime

    • Entry.LastAccessTime set to Link.LastAccessTime

    • Entry.LastWriteTime set to Link.LastModificationTime

    • Entry.ChangeTime set to Link.LastChangeTime

    • Entry.EndOfFile set to Link.FileSize

    • Entry.AllocationSize set to Link.AllocationSize

    • Entry.FileAttributes set to Link.FileAttributes

    • If Link.File.FileType is DirectoryFile or ViewIndexFile:

      • Entry.FileAttributes.FILE_ATTRIBUTE_DIRECTORY is set

    • EndIf

    • If Entry.FileAttributes has no attributes set:

      • Entry.FileAttributes.FILE_ATTRIBUTE_NORMAL is set

    • EndIf

    • If Link.FileAttributes.FILE_ATTRIBUTE_REPARSE_POINT is SET:

      • Entry.EaSize set to Link.ReparseTag

    • Else:

      • Entry.EaSize set to Link.ExtendedAttributesLength<64>

    • EndIf

    • If Link.ShortName is not empty:

      • Entry.ShortNameLength set to the length, in bytes, of Link.ShortName

      • Entry.ShortName set to Link.ShortName padding with zeroes as necessary

    • Else:

      • Entry.ShortNameLength set to zero

      • Entry.ShortName filled with zeroes

    • EndIf

    • If Link.Name == "." (entry for the directory being queried):

      • Entry.FileID set to Open.File.FileId64

    • Else if Link.Name == ".." (entry for the parent of the directory being queried):

      • Entry.FileID SHOULD<65> be set to Open.Link.ParentFile.FileId64, otherwise MUST be set to zero

    • Else:

      • Entry.FileID set to Link.File.FileId64

    • EndIf

    • Entry.FileNameLength set to the length, in bytes, of Link.Name