2.1.5.6.3.6 FileIdAllExtdBothDirectoryInformation

OutputBuffer is an array of one or more FILE_ID_ALL_EXTD_BOTH_DIR_INFORMATION structures as described in [MS-FSCC] section 2.4.19. Entry is a parameter to this routine that points to the current FILE_ID_ALL_EXTD_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_ALL_EXTD_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 ViewFileIndex:

      • Entry.FileAttributes.FILE_ATTRIBUTE_DIRECTORY is set

    • EndIf

    • If Entry.FileAttributes has no attributes set:

      • Entry.FileAttributes.FILE_ATTRIBUTE_NORMAL is set

    • EndIf

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

    • Entry.ReparsePointTag set to Link.ReparseTag

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

      • Entry.FileID set to Open.File.FileId64

      • Entry.FileID128 set to Open.File.FileId128

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

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

      • Entry.FileID128 SHOULD<70> be set to Open.Link.ParentFile.FileId128, otherwise MUST be set to zero

    • Else:

      • Entry.FileID set to Link.File.FileId64

      • Entry.FileID128 set to Link.File.FileId128

    • 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