The server provides:
Open: An Open of a DataFile or DirectoryFile.
OutputBufferSize: The maximum number of bytes to return in OutputBuffer.
On completion, the object store MUST return:
Status: An NTSTATUS code that specifies the result.
BytesReturned: The number of bytes returned in OutputBuffer.
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.<69>
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 OutputBufferSize is less than sizeof(FILE_OBJECTID_BUFFER), the operation MUST be failed with STATUS_INVALID_PARAMETER.
If Open.File.ObjectId is empty, the operation MUST be failed with STATUS_OBJECTID_NOT_FOUND.
The object store MUST populate the fields of OutputBuffer as follows:
OutputBuffer.ObjectId set to Open.File.ObjectId.
OutputBuffer.BirthVolumeId set to Open.File.BirthVolumeId.
OutputBuffer.BirthObjectId set to Open.File.BirthObjectId.
OutputBuffer.DomainId set to empty.
Upon successful completion of the operation, the object store MUST return:
BytesReturned set to sizeof (FILE_OBJECTID_BUFFER).
Status set to STATUS_SUCCESS.