2.1.5.6.3.1 FileBothDirectoryInformation

OutputBuffer is an array of one or more FILE_BOTH_DIR_INFORMATION structures as described in [MS-FSCC] section 2.4.8. Entry is a parameter to this routine that points to the current FILE_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_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<62>

    • 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 is filled with zeroes

    • EndIf

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