Partager via


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 est la suivante.

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 la compression Xpress.

[out] UncompressedBuffer

Pointeur vers une mémoire tampon allouée à l’appelant (allouée à partir d’un pool paginé ou non paginé) qui reçoit les données dé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 CompressedBuffer .

[out] FinalUncompressedSize

Pointeur vers une variable allouée à l’appelant qui reçoit la taille, en octets, des données décompressées stockées dans UncompressedBuffer. Ce paramètre est obligatoire et ne peut pas être NULL.

Valeur retournée

RtlDecompressBuffer retourne une erreur appropriée status valeur, par exemple l’une des valeurs suivantes.

Code de retour Description
STATUS_SUCCESS La mémoire tampon CompressedBuffer a été correctement dé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 assez grand pour contenir les données non compressées.

Remarques

La fonction RtlDecompressBuffer prend en entrée une mémoire tampon compressée entière et produit son équivalent décompressé, à condition que les données non compressées correspondent à la mémoire tampon de destination spécifiée.

Pour décompresser uniquement une partie d’une mémoire tampon compressée (c’est-à-dire un « fragment » de la mémoire tampon), utilisez la fonction RtlDecompressFragment .

Pour compresser une mémoire tampon non compressée, utilisez la fonction RtlCompressBuffer .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP
Plateforme cible Universal
En-tête ntifs.h (include Fltkernel.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragment

RtlDecompressFragmentEx