Función RtlDecompressFragmentEx (ntifs.h)
La función RtlDecompressFragmentEx se usa para descomprimir parte de un búfer comprimido (es decir, un búfer "fragmento"), usando varios procesadores siempre que sea posible.
Sintaxis
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragmentEx(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedFragment,
[in] ULONG UncompressedFragmentSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG FragmentOffset,
[in] ULONG UncompressedChunkSize,
[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 | No es compatible con esta función. |
COMPRESSION_FORMAT_DEFAULT | No es compatible con esta función. |
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.
[in] UncompressedChunkSize
Tamaño, en bytes, de cada fragmento dentro del búfer de compresión. Los valores válidos son 512, 1024, 2048 y 4096.
[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 RtlDecompressFragmentEx durante la descompresión. Use la función RtlGetCompressionWorkSpaceSize para determinar el tamaño de búfer de espacio de trabajo correcto.
Valor devuelto
RtlDecompressFragmentEx devuelve 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 a través del 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 a través del 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. |
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Plataforma de destino | Universal |
Encabezado | ntifs.h (incluya Fltkernel.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |