Compartilhar via


Função RtlDecompressFragmentEx (ntifs.h)

A função RtlDecompressFragmentEx é usada para descompactar parte de um buffer compactado (ou seja, um buffer "fragmento"), 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

Máscara de bits especificando o formato de compactação do buffer compactado. Esse parâmetro deve ser definido como COMPRESSION_FORMAT_LZNT1. O significado deste 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 por chamador (alocado do pool de páginas ou não paged) que recebe os dados descompactados de 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 de 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 não compactado 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 por 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 por 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.

Valor de retorno

RtlDecompressFragmentEx retorna um código NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_SUCCESS O buffer de do CompressedBuffer foi descompactado com êxito no 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 não compactados.

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

Consulte também

FILE_COMPRESSION_INFORMATION

rtlCompressBuffer

rtlDecompressBuffer

rtlDecompressBufferEx

rtlDecompressBufferEx2

RtlDecompressFragment