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.

  • OutputBuffer: An array of bytes that will return a FILE_OBJECTID_BUFFER structure as specified in [MS-FSCC] section 2.1.3.

  • 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.<91>

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 Open.File.DomainId.

  • Upon successful completion of the operation, the object store MUST return:

    • BytesReturned set to sizeof (FILE_OBJECTID_BUFFER).

    • Status set to STATUS_SUCCESS.