Funzione RtlDecompressBufferEx2 (ntifs.h)
La funzione RtlDecompressBufferEx2 decomprime un intero buffer compresso, usando più processori laddove possibile. Il supporto per più processori viene implementato solo per i chiamanti in modalità kernel.
Sintassi
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx2(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedBuffer,
[in] ULONG UncompressedBufferSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG UncompressedChunkSize,
[out] PULONG FinalUncompressedSize,
[in, optional] 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 di 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. |
COMPRESSION_FORMAT_XPRESS_HUFF | La funzione eseguirà la decompressione di Xpress Huffman. |
[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 contenente i dati da decomprimere. Questo parametro è obbligatorio e non può essere NULL.
[in] CompressedBufferSize
Dimensione, in byte, del buffer CompressedBuffer .
[in] UncompressedChunkSize
Dimensione, 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 UncompressedBuffer. Questo parametro è obbligatorio e non può essere NULL.
[in, optional] WorkSpace
Puntatore a un buffer dello spazio di lavoro allocato dal chiamante usato dalla funzione RtlDecompressBufferEx2 durante la decompressione . Usare la funzione RtlGetCompressionWorkSpaceSize per determinare le dimensioni corrette del buffer dello spazio di lavoro.
Valore restituito
RtlDecompressBufferEx2 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), 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, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUFF, COMPRESSION_FORMAT_NONE, COMPRESSION_FORMAT_DEFAULT |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedBuffer non è sufficientemente grande da contenere i dati non compressi. |
Commenti
La funzione RtlDecompressBufferEx2 accetta come input un intero buffer compresso e produce l'equivalente decompresso a condizione che 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 funzione RtlCompressBuffer .
Requisiti
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 |