2.1.5.6.3.8 FileIdBothDirectoryInformation
OutputBuffer is an array of one or more FILE_ID_BOTH_DIR_INFORMATION structures as described in [MS-FSCC] section 2.4.21. 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<74>
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<75> 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