The server provides:
Open: An Open of a DataFile or DirectoryFile.
On completion, the object store MUST return:
Status: An NTSTATUS code that specifies the result.
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.<70>
Pseudocode for the operation is as follows:
If Open.File.Volume.IsObjectIDsSupported is FALSE, the operation MUST be failed with STATUS_VOLUME_NOT_UPGRADED.
If Volume.IsReadOnly is TRUE, the operation MUST be failed with STATUS_MEDIA_WRITE_PROTECTED.
If Open.File.ObjectId is empty, the operation MUST be completed with STATUS_SUCCESS.
Update Open.File.LastChangeTime to the current time.<71>
Post a USN change as specified in section 220.127.116.11 with File equal to File, Reason equal to USN_REASON_OBJECT_ID_CHANGE, and FileName equal to Open.Link.Name.
ObjectIdInfo.FileReference set to zero.
ObjectIdInfo.ObjectId set to Open.File.ObjectId.
ObjectIdInfo.BirthVolumeId set to Open.File.BirthVolumeId.
ObjectIdInfo.BirthObjectId set to Open.File.BirthObjectId.
ObjectIdInfo.DomainId set to Open.File.DomainId.
Send directory change notification as specified in section 18.104.22.168, with Volume equal to Open.File.Volume, Action equal to FILE_ACTION_REMOVED, FilterMatch equal to FILE_NOTIFY_CHANGE_FILE_NAME, FileName equal to "\$Extend\$ObjId", NotifyData equal to ObjectIdInfo, and NotifyDataLength equal to sizeof(FILE_OBJECTID_INFORMATION).
Set Open.File.ObjectId to empty.
Upon successful completion of the operation, the object store MUST return:
Status set to STATUS_SUCCESS.