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 |