Fonction RtlDecompressBuffer (ntifs.h)
La fonction RtlDecompressBuffer décompose une mémoire tampon compressée entière.
Syntaxe
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBuffer(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedBuffer,
[in] ULONG UncompressedBufferSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[out] PULONG FinalUncompressedSize
);
Paramètres
[in] CompressionFormat
Masque de bits qui spécifie le format de compression de la mémoire tampon compressée. Ce paramètre doit être défini sur COMPRESSION_FORMAT_LZNT1. La signification de cette valeur et d’autres valeurs de format de compression associées sont les suivantes.
Valeur | Signification |
---|---|
COMPRESSION_FORMAT_NONE | Non pris en charge par cette fonction. |
COMPRESSION_FORMAT_DEFAULT | Non pris en charge par cette fonction. |
COMPRESSION_FORMAT_LZNT1 | La fonction effectue la compression LZ. |
COMPRESSION_FORMAT_XPRESS | La fonction effectue une compression Xpress. |
[out] UncompressedBuffer
Pointeur vers une mémoire tampon allouée par l’appelant (allouée à partir d’un pool paginé ou non paginé) qui reçoit les données compressées de CompressedBuffer. Ce paramètre est obligatoire et ne peut pas être NULL.
[in] UncompressedBufferSize
Taille, en octets, de la mémoire tampon UncompressedBuffer.
[in] CompressedBuffer
Pointeur vers la mémoire tampon qui contient les données à décompresser. Ce paramètre est obligatoire et ne peut pas être NULL.
[in] CompressedBufferSize
Taille, en octets, de la mémoire tampon de compressé tampon.
[out] FinalUncompressedSize
Pointeur vers une variable allouée par l’appelant qui reçoit la taille, en octets, des données compressées stockées dans UncompressedBuffer. Ce paramètre est obligatoire et ne peut pas être NULL.
Valeur de retour
RtlDecompressBuffer retourne une valeur d’état d’erreur appropriée, telle que l’une des suivantes.
Retourner le code | Description |
---|---|
STATUS_SUCCESS | La mémoire tampon compressée a été correctement compressée. |
STATUS_INVALID_PARAMETER | Un format de compression non valide a été spécifié via le paramètre CompressionFormat. Si CompressionFormat est COMPRESSION_FORMAT_NONE ou COMPRESSION_FORMAT_DEFAULT (mais pas les deux), cette valeur est retournée. |
STATUS_UNSUPPORTED_COMPRESSION | Un format de compression non valide a été spécifié via le paramètre CompressionFormat. Si CompressionFormat n’est pas l’un des éléments suivants, STATUS_UNSUPPORTED_COMPRESSION est retourné : COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS |
STATUS_BAD_COMPRESSION_BUFFER | uncompressedBuffer n’est pas suffisamment volumineux pour contenir les données non compressées. |
Remarques
La fonction RtlDecompressBuffer prend comme entrée une mémoire tampon compressée entière et produit son équivalent compressé, à condition que les données non compressées s’intègrent dans la mémoire tampon de destination spécifiée.
Pour décompresser uniquement une partie d’une mémoire tampon compressée (autrement dit, un « fragment » de la mémoire tampon), utilisez la fonction RtlDecompressFragment.
Pour compresser une mémoire tampon non compressée, utilisez la fonction RtlCompressBuffer.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP |
plateforme cible | Universel |
d’en-tête | ntifs.h (include Fltkernel.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |