Hardware Dev Center

Collapse the table of content
Expand the table of content
Expand Minimize

RtlDecompressBuffer function

The RtlDecompressBuffer function decompresses an entire compressed buffer.

Syntax


NTSTATUS RtlDecompressBuffer(
  _In_  USHORT CompressionFormat,
  _Out_ PUCHAR UncompressedBuffer,
  _In_  ULONG  UncompressedBufferSize,
  _In_  PUCHAR CompressedBuffer,
  _In_  ULONG  CompressedBufferSize,
  _Out_ PULONG FinalUncompressedSize
);

Parameters

CompressionFormat [in]

A bitmask that specifies the compression format of the compressed buffer. This parameter must be set to COMPRESSION_FORMAT_LZNT1. The meaning of this and other related compression format values are as follows.

ValueMeaning
COMPRESSION_FORMAT_NONE

Not supported by this function.

COMPRESSION_FORMAT_DEFAULT

Not supported by this function.

COMPRESSION_FORMAT_LZNT1

The function will perform LZ decompression.

COMPRESSION_FORMAT_XPRESS

The function will perform Xpress decompression.

 

UncompressedBuffer [out]

A pointer to a caller-allocated buffer (allocated from paged or non-paged pool) that receives the decompressed data from CompressedBuffer. This parameter is required and cannot be NULL.

UncompressedBufferSize [in]

The size, in bytes, of the UncompressedBuffer buffer.

CompressedBuffer [in]

A pointer to the buffer that contains the data to decompress. This parameter is required and cannot be NULL.

CompressedBufferSize [in]

The size, in bytes, of the CompressedBuffer buffer.

FinalUncompressedSize [out]

A pointer to a caller-allocated variable that receives the size, in bytes, of the decompressed data stored in UncompressedBuffer. This parameter is required and cannot be NULL.

Return value

RtlDecompressBuffer returns an appropriate error status value, such as one of the following.

Return codeDescription
STATUS_SUCCESS

The CompressedBuffer buffer was successfully decompressed.

STATUS_INVALID_PARAMETER

An invalid compression format was specified through the CompressionFormat parameter. If CompressionFormat is either COMPRESSION_FORMAT_NONE or COMPRESSION_FORMAT_DEFAULT (but not both), this value is returned.

STATUS_UNSUPPORTED_COMPRESSION

An invalid compression format was specified through the CompressionFormat parameter. If CompressionFormat is not one of the following, STATUS_UNSUPPORTED_COMPRESSION is returned:

  • COMPRESSION_FORMAT_LZNT1

  • COMPRESSION_FORMAT_XPRESS

  • COMPRESSION_FORMAT_NONE (in this case, STATUS_INVALID_PARAMETER is returned).

  • COMPRESSION_FORMAT_DEFAULT (in this case, STATUS_INVALID_PARAMETER is returned).

STATUS_BAD_COMPRESSION_BUFFER

UncompressedBuffer is not large enough to contain the uncompressed data.

 

Remarks

The RtlDecompressBuffer function takes as input an entire compressed buffer and produces its decompressed equivalent provided that the uncompressed data fits within the specified destination buffer.

To decompress only a portion of a compressed buffer (that is, a "fragment" of the buffer), use the RtlDecompressFragment function.

To compress an uncompressed buffer, use the RtlCompressBuffer function.

Requirements

Target platform

Universal

Version

Available starting in Windows XP.

Header

Ntifs.h (include Fltkernel.h or Ntifs.h)

Library

NtosKrnl.lib

DLL

NtosKrnl.exe

IRQL

<= APC_LEVEL

See also

FILE_COMPRESSION_INFORMATION
RtlCompressBuffer
RtlDecompressBufferEx
RtlDecompressBufferEx2
RtlDecompressFragment
RtlDecompressFragmentEx

 

 

Send comments about this topic to Microsoft

Show:
© 2015 Microsoft