Função RtlDecompressFragmentEx (ntifs.h)
A função RtlDecompressFragmentEx é usada para descompactar parte de um buffer compactado (ou seja, um "fragmento" de buffer), usando vários processadores sempre que possível.
Sintaxe
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
Bitmask especificando 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 | Especifica que a compactação deve ser executada. Esse valor é necessário. |
[out] UncompressedFragment
Ponteiro para um buffer alocado pelo chamador (alocado de um pool paginado ou não paginado) que recebe os dados descompactados do CompressedBuffer. Esse parâmetro é necessário e não pode ser NULL.
[in] UncompressedFragmentSize
O tamanho, em bytes, do buffer UncompressedFragment .
[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 CompressedBuffer .
[in] FragmentOffset
O deslocamento baseado em zero, em bytes, do qual o fragmento descompactado está sendo extraído. Esse valor de deslocamento é a posição dentro do buffer descompactado original.
[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 pelo chamador que recebe o tamanho, em bytes, dos dados descompactados armazenados em UncompressedFragment. Esse parâmetro é necessário e não pode ser NULL.
[in] WorkSpace
Um ponteiro para um buffer de espaço de trabalho alocado pelo chamador usado pela função RtlDecompressFragmentEx durante a descompactação. Use a função RtlGetCompressionWorkSpaceSize para determinar o tamanho correto do buffer de espaço de trabalho.
Retornar valor
RtlDecompressFragmentEx retorna um código NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
STATUS_SUCCESS | O buffer CompressedBuffer foi descompactado com êxito em UncompressedFragment. |
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 |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedFragment não é grande o suficiente para conter os dados descompactados. |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Fltkernel.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |