NTSTATUS RtlCompressChunks( IN PUCHAR UncompressedBuffer, IN ULONG UncompressedBufferSize, OUT PUCHAR CompressedBuffer, IN ULONG CompressedBufferSize, IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo, IN ULONG CompressedDataInfoLength, IN PVOID WorkSpace ); Routine Description: This routine takes as input an uncompressed buffer and produces its compressed equivalent provided the compressed data fits within the specified destination buffer. The desired compression parameters must be supplied via the CompressedDataInfo structure, and this structure then returns all of the compressed chunk sizes. Note that since any given chunk (or all chunks) can simply be transmitted uncompressed, all error possibilities are actually stopped in this routine, except for STATUS_BUFFER_TOO_SMALL. This code will be returned when the data is not compressing sufficiently to warrant sending the data compressed. The caller must field this error, and send the data uncompressed. Arguments: UncompressedBuffer - Supplies a pointer to the uncompressed data. UncompressedBufferSize - Supplies the size, in bytes, of the uncompressed buffer. CompressedBuffer - Supplies a pointer to where the compressed data is to be stored. CompressedBufferSize - Supplies the size, in bytes, of the compressed buffer. CompressedDataInfo - Supplies the compression parameters, such as CompressionFormat, CompressionUnitSize, ChunkSize and ClusterSize, returns all of the compressed chunk sizes. CompressedDataInfoLength - Size of the supplied CompressedDataInfo in bytes. WorkSpace - A workspace area of the correct size as returned from RtlGetCompressionWorkSpaceSize. Return Value: STATUS_SUCCESS - the compression worked without a hitch. STATUS_BUFFER_TOO_SMALL - the data is not compressing sufficiently to warrant sending the data compressed.