Поделиться через


Функция RtlDecompressBufferEx (ntifs.h)

Функция RtlDecompressBufferEx распаковывает весь сжатый буфер.

Синтаксис

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedBuffer,
  [in]  ULONG  UncompressedBufferSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [out] PULONG FinalUncompressedSize,
  [in]  PVOID  WorkSpace
);

Параметры

[in] CompressionFormat

Битовая маска, указывающая формат сжатия сжатого буфера. Этот параметр должен иметь значение COMPRESSION_FORMAT_LZNT1. Значение этого и других связанных значений формата сжатия приведены следующим образом.

Ценность Значение
COMPRESSION_FORMAT_NONE Эта функция не поддерживается.
COMPRESSION_FORMAT_DEFAULT Эта функция не поддерживается.
COMPRESSION_FORMAT_LZNT1 Функция выполнит сжатие LZ.
COMPRESSION_FORMAT_XPRESS Функция выполнит сжатие Xpress.
COMPRESSION_FORMAT_XPRESS_HUFF Функция выполнит декомпрессию Xpress Huffman.

[out] UncompressedBuffer

Указатель на выделенный вызывающим буфер (выделенный из страничного или нестраничного пула), который получает распакованные данные из CompressedBuffer. Этот параметр является обязательным и не может иметь значение NULL.

[in] UncompressedBufferSize

Размер буфера UncompressedBuffer в байтах.

[in] CompressedBuffer

Указатель на буфер, содержащий данные для распаковки. Этот параметр является обязательным и не может иметь значение NULL.

[in] CompressedBufferSize

Размер в байтах буфера сжатойBuffer.

[out] FinalUncompressedSize

Указатель на выделенную вызывающим переменную, которая получает размер в байтах декомпрессированных данных, хранящихся в uncompressedBuffer. Этот параметр является обязательным и не может иметь значение NULL.

[in] WorkSpace

Указатель на выделенный вызывающим буфер рабочего пространства , используемый функцией RtlDecompressBufferEx во время распаковки. Используйте функцию RtlGetCompressionWorkSpaceSize, чтобы определить правильный размер буфера рабочего пространства.

Возвращаемое значение

RtlDecompressBufferEx возвращает соответствующее значение состояния ошибки, например одно из следующих.

Возвращаемый код Описание
STATUS_SUCCESS Буфер CompressedBuffer успешно распаковался.
STATUS_INVALID_PARAMETER Недопустимый формат сжатия был указан с помощью параметра CompressionFormat. Если CompressionFormat COMPRESSION_FORMAT_NONE или COMPRESSION_FORMAT_DEFAULT (но не оба), возвращается это значение.
STATUS_UNSUPPORTED_COMPRESSION Недопустимый формат сжатия был указан с помощью параметра CompressionFormat. Если CompressionFormat не является одной из следующих, возвращается STATUS_UNSUPPORTED_COMPRESSION: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUFF
STATUS_BAD_COMPRESSION_BUFFER uncompressedBuffer недостаточно велик, чтобы содержать несжатые данные.

Замечания

Функция RtlDecompressBufferEx принимает в качестве входных данных весь сжатый буфер и создает его декомпрессированный эквивалент, если несжатые данные помещаются в указанный буфер назначения.

Для распаковки только части сжатого буфера (то есть фрагмента буфера) используйте функцию RtlDecompressFragment.

Чтобы сжать несжатый буфер, используйте функцию RtlCompressBuffer.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8
целевая платформа Всеобщий
заголовка ntifs.h (include Fltkernel.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

< FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx2

RtlDecompressFragment

RtlDecompressFragmentEx