2.1.5.15.5 FileFullEaInformation

Support for this operation is optional. If the object store does not implement this functionality, the operation MUST be failed with STATUS_INVALID_DEVICE_REQUEST.<182>

InputBuffer is of type FILE_FULL_EA_INFORMATION, as described in [MS-FSCC] section 2.4.15.

Pseudocode for the operation is as follows:

  • If Open.File.FileAttributes.FILE_ATTRIBUTE_REPARSE_POINT is TRUE, the object store MUST fail the operation with STATUS_EAS_NOT_SUPPORTED.

  • For each Ea in InputBuffer:

    • If Ea.EaName is not well-formed as specified in [MS-FSCC] 2.4.15, the operation MUST be failed with STATUS_INVALID_EA_NAME.

    • If Ea.Flags does not contain a valid set of flags as specified in [MS-FSCC] 2.4.15, the operation MUST be failed with STATUS_INVALID_EA_NAME.

    • If Ea.EaName exists in the Open.File.ExtendedAttributes, remove that entry from Open.File.ExtendedAttributes, updating Open.File.ExtendedAttributesLength to reflect the new list size.

    • If Ea.EaValueLength is NOT zero, add Ea to Open.File.ExtendedAttributes, updating Open.File.ExtendedAttributesLength to reflect the new list size

    • If Open.File.ExtendedAttributesLength becomes greater than 64 KB - 5 bytes, the object store MUST fail the operation with STATUS_EA_TOO_LARGE and undo any changes made as part of this operation.

  • EndFor

  • If Open.UserSetChangeTime is FALSE, the object store MUST update Open.File.LastChangeTime to the current time.

  • The object store MUST set Open.File.FileAttributes.FILE_ATTRIBUTE_ARCHIVE to TRUE.

  • The object store MUST post a USN change as specified in section 2.1.4.11 with File equal to File, Reason equal to USN_REASON_EA_CHANGE, and FileName equal to Open.Link.Name.

  • Set Open.File.PendingNotifications.FILE_NOTIFY_CHANGE_EA to TRUE and Open.File.PendingNotifications.FILE_NOTIFY_CHANGE_ATTRIBUTES to TRUE.