Funzione RtlDecompressFragment (ntifs.h)

La funzione RtlDecompressFragment viene usata per decomprimere parte di un buffer compresso, ovvero un buffer "frammento".

Sintassi

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragment(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedFragment,
  [in]  ULONG  UncompressedFragmentSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [in]  ULONG  FragmentOffset,
  [out] PULONG FinalUncompressedSize,
  [in]  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 Specifica che deve essere eseguita la compressione. Questo valore è obbligatorio.

[out] UncompressedFragment

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] UncompressedFragmentSize

Dimensione, in byte, del buffer UncompressedFragment .

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

[in] FragmentOffset

Offset in base zero, in byte, da cui viene estratto il frammento non compresso. Questo valore di offset è la posizione all'interno del buffer non compresso originale.

[out] FinalUncompressedSize

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

[in] WorkSpace

Puntatore a un buffer dello spazio di lavoro allocato dal chiamante usato dalla funzione RtlDecompressFragment durante la decompressione . Usare la funzione RtlGetCompressionWorkSpaceSize per determinare le dimensioni corrette del buffer dello spazio di lavoro.

Valore restituito

RtlDecompressFragment restituisceun codice NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_SUCCESS Il buffer CompressedBuffer è stato decompresso correttamente in UncompressedFragment.
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
STATUS_BAD_COMPRESSION_BUFFER UncompressedFragment non è sufficientemente grande da contenere i dati non compressi.

Commenti

Rispetto alla funzione RtlDecompressBuffer , RtlDecompressFragment viene usato per decomprimere una parte dei dati da un buffer compresso (anziché dall'intero buffer).

Per determinare le dimensioni corrette del buffer per il parametro WorkSpace , usare la funzione RtlGetCompressionWorkSpaceSize , ovvero il valore restituito dal parametro RtlGetCompressionWorkSpaceSize .

Per comprimere un buffer non compresso, usare la funzione RtlCompressBuffer .

Per decomprimere un intero buffer compresso, usare la funzione RtlDecompressBuffer .

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

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx