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 |