Compartir a través de


Función RtlDecompressFragment (ntifs.h)

La función RtlDecompressFragment se usa para descomprimir parte de un búfer comprimido (es decir, un búfer "fragmento").

Sintaxis

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragment(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedFragment,
  [in]  ULONG  UncompressedFragmentSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [in]  ULONG  FragmentOffset,
  [out] PULONG FinalUncompressedSize,
  [in]  PVOID  WorkSpace
);

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 Especifica que se debe realizar la compresión. Este valor es necesario.

[out] UncompressedFragment

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] UncompressedFragmentSize

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

[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 .

[in] FragmentOffset

Desplazamiento de base cero, en bytes, del que se extrae el fragmento sin comprimir. Este valor de desplazamiento es la posición dentro del búfer sin comprimir original.

[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 UncompressedFragment. Este parámetro es obligatorio y no puede ser NULL.

[in] WorkSpace

Puntero a un búfer de espacio de trabajo asignado por el autor de la llamada utilizado por la función RtlDecompressFragment durante la descompresión. Use la función RtlGetCompressionWorkSpaceSize para determinar el tamaño correcto del búfer de espacio de trabajo.

Valor devuelto

RtlDecompressFragmentdevuelve un código NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_SUCCESS El búfer CompressedBuffer se descomprimió correctamente en UncompressedFragment.
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
STATUS_BAD_COMPRESSION_BUFFER UncompressedFragment no es lo suficientemente grande como para contener los datos sin comprimir.

Comentarios

Con respecto a la función RtlDecompressBuffer , RtlDecompressFragment se usa para descomprimir una parte de los datos de un búfer comprimido (en lugar de todo el búfer).

Para determinar el tamaño de búfer correcto para el parámetro WorkSpace , use la función RtlGetCompressionWorkSpaceSize (es decir, el valor devuelto por el parámetro RtlGetCompressionWorkSpaceSize ).

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

Para descomprimir un búfer comprimido completo, use la función RtlDecompressBuffer .

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

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx