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

Confira também

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragment