Condividi tramite


Funzione RtlDecompressFragment (ntifs.h)

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

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

Dimensioni, 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

Dimensioni in byte del buffer compresso compressoBuffer.

[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 funzioneRtlGetCompressionWorkSpaceSizeper determinare le dimensioni corrette del buffer dello spazio di lavoro.

Valore restituito

RtlDecompressFragmentrestituisce un 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), 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
STATUS_BAD_COMPRESSION_BUFFER UncompressedFragment non è sufficientemente grande da contenere i dati non compressi.

Osservazioni

Rispetto alla funzioneRtlDecompressBuffer, RtlDecompressFragment viene usata per decomprimere una parte dei dati da un buffer compresso (anziché l'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 funzioneRtlCompressBuffer.

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

Fabbisogno

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

Vedere anche

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx