Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
OutputBuffer is of type FILE_COMPRESSION_INFORMATION as defined in [MS-FSCC] section 2.4.9.<163>
Pseudocode for the operation is as follows:
If OutputBufferSize is smaller than sizeof(FILE_COMPRESSION_INFORMATION), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.
The object store MUST initialize all fields in OutputBuffer to zero.
If Open.Stream.StreamType is DirectoryStream:
If Open.File.FileAttributes.FILE_ATTRIBUTE_COMPRESSED is TRUE:
The object store MUST set OutputBuffer.CompressionState to COMPRESSION_FORMAT_LZNT1.
Else:
The object store MUST set OutputBuffer.CompressionState to COMPRESSION_FORMAT_NONE.
EndIf
Else:
The object store MUST set OutputBuffer.CompressedFileSize to the number of bytes actually allocated on the underlying physical storage for storing the compressed data. This value MUST be a multiple of Open.File.Volume.ClusterSize and MUST be less than or equal to Open.Stream.AllocationSize.
If Open.Stream.IsCompressed is TRUE:
The object store MUST set OutputBuffer.CompressionState to COMPRESSION_FORMAT_LZNT1.
Else:
The object store MUST set OutputBuffer.CompressionState to COMPRESSION_FORMAT_NONE.
EndIf
EndIf
If OutputBuffer.CompressionState is not equal to COMPRESSION_FORMAT_NONE, the object store MUST set:
OutputBuffer.CompressedUnitShift to the base-2 logarithm of Open.File.Volume.CompressionUnitSize.
OutputBuffer.ChunkShift to the base-2 logarithm of Open.File.Volume.CompressedChunkSize.
OutputBuffer.ClusterShift to the base-2 logarithm of Open.File.Volume.ClusterSize.
EndIf
Upon successful completion of the operation, the object store MUST return:
ByteCount set to sizeof(FILE_COMPRESSION_INFORMATION).
Status set to STATUS_SUCCESS.