The server provides:
Open: An Open of a DataStream or DirectoryStream.
OutputBufferSize: The maximum number of bytes to return in OutputBuffer.
Upon 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.<66>
The operation MUST be failed with STATUS_INVALID_PARAMETER under any of the following conditions:
OutputBufferSize is less than sizeof(FSCTL_GET_INTEGRITY_INFORMATION_BUFFER).
Open.Stream.StreamType is not DirectoryStream or DataStream.
Pseudocode for the operation is as follows:
The object store MUST initialize all fields in OutputBuffer to zero.
The object store MUST set OutputBuffer.CheckSumAlgorithm to Open.Stream.ChecksumAlgorithm.
The object store MUST set OutputBuffer.ChecksumChunkSizeInBytes to Open.File.Volume.ChecksumChunkSize.
The object store MUST set OutputBuffer.ClusterSizeInBytes to Open.File.Volume.ClusterSize.
If Open.Stream.StreamType is DataStream and Open.Stream.ChecksumEnforcementOff is TRUE, then the object store MUST set OutputBuffer.Flags to FSCTL_INTEGRITY_FLAG_CHECKSUM_ENFORCEMENT_OFF.
Upon successful completion of the operation, the object store MUST return:
ByteCount set to sizeof(FSCTL_GET_INTEGRITY_INFORMATION_BUFFER).
Status set to STATUS_SUCCESS.