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 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 che contiene i dati da decomprimere. Questo parametro è obbligatorio e non può essere NULL.
[in] CompressedBufferSize
Dimensioni in byte del buffer compresso compressoBuffer.
[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), questo valore viene restituito. |
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 | i UncompressedBuffer non sono sufficientemente grandi da contenere i dati non compressi. |
Osservazioni
La funzione RtlDecompressBuffer accetta come input un intero buffer compresso e produce l'equivalente decompresso purché 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 funzioneRtlCompressBuffer.
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 |