Funzione RtlDecompressFragmentEx (ntifs.h)
La funzione RtlDecompressFragmentEx viene usata per decomprimere parte di un buffer compresso (ovvero un buffer "frammento"), usando più processori ove possibile.
Sintassi
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragmentEx(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedFragment,
[in] ULONG UncompressedFragmentSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG FragmentOffset,
[in] ULONG UncompressedChunkSize,
[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.
[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 UncompressedFragment. Questo parametro è obbligatorio e non può essere NULL.
[in] WorkSpace
Puntatore a un buffer dello spazio di lavoro allocato dal chiamante utilizzato dalla funzione RtlDecompressFragmentEx durante la decompressione. Usare la funzioneRtlGetCompressionWorkSpaceSizeper determinare le dimensioni corrette del buffer dello spazio di lavoro.
Valore restituito
RtlDecompressFragmentEx restituisce 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. |
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 |