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.<125>
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 per [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 per [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.
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 per section 188.8.131.52 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.