Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A função RtlGetCompressionWorkSpaceSize é usada para determinar o tamanho correto do buffer do WorkSpace para as funções RtlCompressBuffer e RtlDecompressFragment .
Sintaxe
NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
[in] USHORT CompressionFormatAndEngine,
[out] PULONG CompressBufferWorkSpaceSize,
[out] PULONG CompressFragmentWorkSpaceSize
);
Parâmetros
[in] CompressionFormatAndEngine
Máscara de bits especificando o formato de compactação e o tipo de mecanismo. Esse parâmetro deve ser definido como uma combinação OR bit a bit válida de um tipo de formato e um tipo de mecanismo. Por exemplo, COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.
Os significados desses e de outros valores relacionados são os seguintes:
| Value | Meaning |
|---|---|
| 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 compactação Xpress Huffman. |
| COMPRESSION_ENGINE_STANDARD | O buffer UncompressedBuffer é compactado usando um algoritmo que fornece um equilíbrio entre a compactação de dados e o desempenho. Esse valor não pode ser usado com COMPRESSION_ENGINE_MAXIMUM. |
| COMPRESSION_ENGINE_MAXIMUM | O buffer UncompressedBuffer é compactado usando um algoritmo que fornece compactação máxima de dados, mas com desempenho relativamente mais lento. Esse valor não pode ser usado com COMPRESSION_ENGINE_STANDARD. |
| COMPRESSION_ENGINE_HIBER | Não há suporte para essa função. |
[out] CompressBufferWorkSpaceSize
Um ponteiro para um buffer alocado pelo chamador que recebe o tamanho, em bytes, necessário para compactar um buffer. Esse valor é usado para determinar o tamanho correto do buffer workspace do RtlCompressBuffer.
[out] CompressFragmentWorkSpaceSize
Um ponteiro para um buffer alocado pelo chamador que recebe o tamanho, em bytes, necessário para descompactar um buffer compactado em um fragmento. Esse valor é usado para determinar o tamanho correto do buffer workspace de RtlDecompressFragment. Observe que a função RtlCompressFragment não existe no momento.
Valor de retorno
RtlGetCompressionWorkSpaceSizeretorna um status de erro apropriado, como um dos seguintes:
| Código de retorno | Description |
|---|---|
| STATUS_SUCCESS | Os tamanhos de buffer necessários, em bytes, foram retornados com êxito. |
| STATUS_INVALID_PARAMETER | Um formato de compactação inválido foi especificado por meio do parâmetro CompressionFormatAndEngine . Se CompressionFormatAndEngine 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 CompressionFormatAndEngine . Se CompressionFormatAndEngine não for um dos seguintes, STATUS_UNSUPPORTED_COMPRESSION será retornado: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS COMPRESSION_FORMAT_XPRESS_HUF |
| STATUS_NOT_SUPPORTED | Um mecanismo de compactação inválido foi especificado por meio do parâmetro CompressionFormatAndEngine . Se CompressionFormatAndEngine não for COMPRESSION_ENGINE_STANDARD ou COMPRESSION_ENGINE_MAXIMUM (mas não ambos), esse valor será retornado. |
Observações
As funções RtlCompressBuffer e RtlDecompressFragment exigem um buffer de espaço de trabalho de tamanho adequado para compactar e descompactar com êxito. Para determinar o tamanho correto do buffer de espaço de trabalho, em bytes, chame a função RtlGetCompressionWorkSpaceSize .
Por exemplo, o parâmetro WorkSpace da função RtlCompressBuffer deve apontar para um buffer de espaço de trabalho de tamanho adequado. O parâmetro CompressBufferWorkSpaceSize do RtlGetCompressionWorkSpaceSize fornece esse tamanho.
Para compactar um buffer não compactado, use a função RtlCompressBuffer .
Para descompactar um buffer compactado, use a função RtlDecompressBuffer .
Para descompactar apenas uma parte de um buffer compactado (ou seja, um "fragmento" do buffer), use a função RtlDecompressFragment .
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Windows XP |
| da Plataforma de Destino | Universal |
| Header | ntifs.h (inclua Fltkernel.h, Ntifs.h) |
| Library | NtosKrnl.lib |
| de DLL | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |