Função RtlDecompressBufferEx2 (ntifs.h)
A função RtlDecompressBufferEx2 descompacta um buffer compactado inteiro, usando vários processadores sempre que possível. O suporte a vários processadores só é implementado para chamadores do modo kernel.
Sintaxe
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx2(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedBuffer,
[in] ULONG UncompressedBufferSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG UncompressedChunkSize,
[out] PULONG FinalUncompressedSize,
[in, optional] PVOID WorkSpace
);
Parâmetros
[in] CompressionFormat
Uma máscara de bits que especifica o formato de compactação do buffer compactado. Esse parâmetro deve ser definido como COMPRESSION_FORMAT_LZNT1. O significado desse e de outros valores de formato de compactação relacionados são os seguintes.
Valor | Significado |
---|---|
COMPRESSION_FORMAT_NONE | Não há suporte para essa função. |
COMPRESSION_FORMAT_DEFAULT | Não há suporte para essa função. |
COMPRESSION_FORMAT_LZNT1 | A função executará a compactação LZ. |
COMPRESSION_FORMAT_XPRESS | A função executará a compactação Xpress. |
COMPRESSION_FORMAT_XPRESS_HUFF | A função executará a descompactação Xpress Huffman. |
[out] UncompressedBuffer
Um ponteiro para um buffer alocado por chamador (alocado de um pool de páginas ou não paginados) que recebe os dados descompactados de CompressedBuffer. Esse parâmetro é necessário e não pode ser NULL.
[in] UncompressedBufferSize
O tamanho, em bytes, do buffer UncompressedBuffer.
[in] CompressedBuffer
Um ponteiro para o buffer que contém os dados a serem descompactados. Esse parâmetro é necessário e não pode ser NULL.
[in] CompressedBufferSize
O tamanho, em bytes, do buffer de CompressedBuffer.
[in] UncompressedChunkSize
O tamanho, em bytes, de cada parte dentro do buffer de compactação. Os valores válidos são 512, 1024, 2048 e 4096.
[out] FinalUncompressedSize
Um ponteiro para uma variável alocada por chamador que recebe o tamanho, em bytes, dos dados descompactados armazenados no UncompressedBuffer. Esse parâmetro é necessário e não pode ser NULL.
[in, optional] WorkSpace
Um ponteiro para um buffer de espaço de trabalho alocado pelo chamador usado pela função rtlDecompressBufferEx2 durante a descompactação. Use a função RtlGetCompressionWorkSpaceSize para determinar o tamanho correto do buffer de espaço de trabalho.
Valor de retorno
RtlDecompressBufferEx2 retorna um valor de status de erro apropriado, como um dos seguintes.
Código de retorno | Descrição |
---|---|
STATUS_SUCCESS | O buffer de do CompressedBuffer foi descompactado com êxito. |
STATUS_INVALID_PARAMETER | Um formato de compactação inválido foi especificado por meio do parâmetro CompressionFormat. Se CompressionFormat for COMPRESSION_FORMAT_NONE ou COMPRESSION_FORMAT_DEFAULT (mas não ambos), esse valor será retornado. |
STATUS_UNSUPPORTED_COMPRESSION | Um formato de compactação inválido foi especificado por meio do parâmetro CompressionFormat. Se CompressionFormat não for um dos seguintes, STATUS_UNSUPPORTED_COMPRESSION será retornado: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUFF, COMPRESSION_FORMAT_NONE, COMPRESSION_FORMAT_DEFAULT |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedBuffer não é grande o suficiente para conter os dados não compactados. |
Observações
A função RtlDecompressBufferEx2 usa como entrada um buffer compactado inteiro e produz seu equivalente descompactado desde que os dados não compactados se ajustem dentro do buffer de destino especificado.
Para descompactar apenas uma parte de um buffer compactado (ou seja, um "fragmento" do buffer), use a função RtlDecompressFragment.
Para compactar um buffer não compactado, use a função RtlCompressBuffer.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 10 |
da Plataforma de Destino | Universal |
cabeçalho | ntifs.h (inclua Fltkernel.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |