Función RtlDecompressBuffer (ntifs.h)

La función RtlDecompressBuffer descomprime un búfer comprimido completo.

Sintaxis

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

Parámetros

[in] CompressionFormat

Máscara de bits que especifica el formato de compresión del búfer comprimido. Este parámetro debe establecerse en COMPRESSION_FORMAT_LZNT1. El significado de este y otros valores de formato de compresión relacionados son los siguientes.

Valor Significado
COMPRESSION_FORMAT_NONE Esta función no es compatible.
COMPRESSION_FORMAT_DEFAULT Esta función no es compatible.
COMPRESSION_FORMAT_LZNT1 La función realizará la compresión LZ.
COMPRESSION_FORMAT_XPRESS La función realizará la compresión Xpress.

[out] UncompressedBuffer

Puntero a un búfer asignado por el autor de la llamada (asignado desde un grupo paginado o no paginado) que recibe los datos descomprimidos de CompressedBuffer. Este parámetro es obligatorio y no puede ser NULL.

[in] UncompressedBufferSize

Tamaño, en bytes, del búfer UncompressedBuffer .

[in] CompressedBuffer

Puntero al búfer que contiene los datos que se van a descomprimir. Este parámetro es obligatorio y no puede ser NULL.

[in] CompressedBufferSize

Tamaño, en bytes, del búfer CompressedBuffer .

[out] FinalUncompressedSize

Puntero a una variable asignada por el autor de la llamada que recibe el tamaño, en bytes, de los datos descomprimidos almacenados en UncompressedBuffer. Este parámetro es obligatorio y no puede ser NULL.

Valor devuelto

RtlDecompressBuffer devuelve un valor de estado de error adecuado, como uno de los siguientes.

Código devuelto Descripción
STATUS_SUCCESS El búfer CompressedBuffer se descomprimió correctamente.
STATUS_INVALID_PARAMETER Se especificó un formato de compresión no válido mediante el parámetro CompressionFormat . Si CompressionFormat es COMPRESSION_FORMAT_NONE o COMPRESSION_FORMAT_DEFAULT (pero no ambos), se devuelve este valor.
STATUS_UNSUPPORTED_COMPRESSION Se especificó un formato de compresión no válido mediante el parámetro CompressionFormat . Si CompressionFormat no es uno de los siguientes, se devuelve STATUS_UNSUPPORTED_COMPRESSION: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS
STATUS_BAD_COMPRESSION_BUFFER UncompressedBuffer no es lo suficientemente grande como para contener los datos sin comprimir.

Comentarios

La función RtlDecompressBuffer toma como entrada un búfer comprimido completo y genera su equivalente descomprimido siempre que los datos sin comprimir se ajusten al búfer de destino especificado.

Para descomprimir solo una parte de un búfer comprimido (es decir, un "fragmento" del búfer), use la función RtlDecompressFragment .

Para comprimir un búfer sin comprimir, use la función RtlCompressBuffer .

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP
Plataforma de destino Universal
Encabezado ntifs.h (incluya Fltkernel.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte también

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragment

RtlDecompressFragmentEx