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

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

Синтаксис

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

Параметры

[in] CompressionFormat

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

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

[out] UncompressedBuffer

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

[in] UncompressedBufferSize

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

[in] CompressedBuffer

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

[in] CompressedBufferSize

Размер буфера CompressedBuffer (в байтах).

[out] FinalUncompressedSize

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

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

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

Код возврата Описание
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
STATUS_BAD_COMPRESSION_BUFFER UncompressedBuffer недостаточно велик, чтобы содержать несжатые данные.

Комментарии

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

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

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

Требования

Требование Значение
Минимальная версия клиента Windows XP
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Fltkernel.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также раздел

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragment

RtlDecompressFragmentEx