Condividi tramite


Funzione RtlDecompressBufferEx2 (ntifs.h)

La funzione RtlDecompressBufferEx2 decomprime un intero buffer compresso, usando più processori laddove possibile. Il supporto di più processori viene implementato solo per i chiamanti in modalità kernel.

Sintassi

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
);

Parametri

[in] CompressionFormat

Maschera di bit che specifica il formato di compressione del buffer compresso. Questo parametro deve essere impostato su COMPRESSION_FORMAT_LZNT1. Il significato di questo e altri valori di formato di compressione correlati sono i seguenti.

Valore Significato
COMPRESSION_FORMAT_NONE Non supportato da questa funzione.
COMPRESSION_FORMAT_DEFAULT Non supportato da questa funzione.
COMPRESSION_FORMAT_LZNT1 La funzione eseguirà la compressione LZ.
COMPRESSION_FORMAT_XPRESS La funzione eseguirà la compressione Xpress.
COMPRESSION_FORMAT_XPRESS_HUFF La funzione eseguirà la decompressione di Xpress Huffman.

[out] UncompressedBuffer

Puntatore a un buffer allocato dal chiamante (allocato da un pool di paging o non di paging) che riceve i dati decompressi da CompressedBuffer. Questo parametro è obbligatorio e non può essere NULL.

[in] UncompressedBufferSize

Dimensione, in byte, del buffer UncompressedBuffer.

[in] CompressedBuffer

Puntatore al buffer che contiene i dati da decomprimere. Questo parametro è obbligatorio e non può essere NULL.

[in] CompressedBufferSize

Dimensioni in byte del buffer compresso compressoBuffer.

[in] UncompressedChunkSize

Dimensioni, in byte, di ogni blocco all'interno del buffer di compressione. I valori validi sono 512, 1024, 2048 e 4096.

[out] FinalUncompressedSize

Puntatore a una variabile allocata dal chiamante che riceve le dimensioni, in byte, dei dati decompressi archiviati in UncompressedBuffer. Questo parametro è obbligatorio e non può essere NULL.

[in, optional] WorkSpace

Puntatore a un buffer dello spazio di lavoro allocato dal chiamante usato dal RtlDecompressBufferEx2 funzione durante la decompressione. Usare la funzioneRtlGetCompressionWorkSpaceSizeper determinare le dimensioni corrette del buffer dello spazio di lavoro.

Valore restituito

RtlDecompressBufferEx2 restituisce un valore di stato di errore appropriato, ad esempio uno dei seguenti.

Codice restituito Descrizione
STATUS_SUCCESS Il buffer CompressedBuffer è stato decompresso correttamente.
STATUS_INVALID_PARAMETER È stato specificato un formato di compressione non valido tramite il parametro CompressionFormat. Se CompressionFormat è COMPRESSION_FORMAT_NONE o COMPRESSION_FORMAT_DEFAULT (ma non entrambi), questo valore viene restituito.
STATUS_UNSUPPORTED_COMPRESSION È stato specificato un formato di compressione non valido tramite il parametro CompressionFormat. Se il CompressionFormat non è uno dei seguenti, viene restituito STATUS_UNSUPPORTED_COMPRESSION: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUFF, COMPRESSION_FORMAT_NONE COMPRESSION_FORMAT_DEFAULT
STATUS_BAD_COMPRESSION_BUFFER i UncompressedBuffer non sono sufficientemente grandi da contenere i dati non compressi.

Osservazioni

La funzione RtlDecompressBufferEx2 accetta come input un intero buffer compresso e produce l'equivalente decompresso purché i dati non compressi si adattino al buffer di destinazione specificato.

Per decomprimere solo una parte di un buffer compresso ( ovvero un "frammento" del buffer), usare la funzione RtlDecompressFragment.

Per comprimere un buffer non compresso, usare la funzioneRtlCompressBuffer.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10
piattaforma di destinazione Universale
intestazione ntifs.h (include Fltkernel.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL <= APC_LEVEL

Vedere anche

< FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressFragment

RtlDecompressFragmentEx