2.1.5.6.3.9 FileIdExtdDirectoryInformation
OutputBuffer is an array of one or more FILE_ID_EXTD_DIR_INFORMATION structures as described in [MS-FSCC] section 2.4.22. Entry is a parameter to this routine that points to the current FILE_ID_EXTD_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_EXTD_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
Entry.EaSize set to Link.ExtendedAttributesLength<76>
Entry.ReparsePointTag set to Link.ReparseTag
If Link.Name == "." (entry for the directory being queried):
Entry.FileID set to Open.File.FileId128
Else if Link.Name == ".." (entry for the parent of the directory being queried):
Entry.FileID SHOULD<77> be set to Open.Link.ParentFile.FileId128, otherwise MUST be set to zero
Else:
Entry.FileID set to Link.File.FileId128
EndIf
Entry.FileNameLength set to the length, in bytes, of Link.Name