Funzione RtlDecompressBuffer (ntifs.h)

La funzione RtlDecompressBuffer decomprime un intero buffer compresso.

Sintassi

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBuffer(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedBuffer,
  [in]  ULONG  UncompressedBufferSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [out] PULONG FinalUncompressedSize
);

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 di 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.

[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 contenente i dati da decomprimere. Questo parametro è obbligatorio e non può essere NULL.

[in] CompressedBufferSize

Dimensione, in byte, del buffer CompressedBuffer .

[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.

Valore restituito

RtlDecompressBuffer 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), viene restituito questo valore.
STATUS_UNSUPPORTED_COMPRESSION È stato specificato un formato di compressione non valido tramite il parametro CompressionFormat . Se CompressionFormat non è uno dei seguenti, viene restituito STATUS_UNSUPPORTED_COMPRESSION: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS
STATUS_BAD_COMPRESSION_BUFFER UncompressedBuffer non è sufficientemente grande da contenere i dati non compressi.

Commenti

La funzione RtlDecompressBuffer accetta come input un intero buffer compresso e produce l'equivalente decompresso a condizione che 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 funzione RtlCompressBuffer .

Requisiti

Requisito Valore
Client minimo supportato Windows XP
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Fltkernel.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Vedi anche

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragment

RtlDecompressFragmentEx