Fonction RtlDecompressFragment (ntifs.h)

La fonction RtlDecompressFragment est utilisée pour décompresser une partie d’une mémoire tampon compressée (autrement dit, un « fragment » de mémoire tampon).

Syntaxe

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragment(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedFragment,
  [in]  ULONG  UncompressedFragmentSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [in]  ULONG  FragmentOffset,
  [out] PULONG FinalUncompressedSize,
  [in]  PVOID  WorkSpace
);

Paramètres

[in] CompressionFormat

Masque de bits spécifiant 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 Spécifie que la compression doit être effectuée. Cette valeur est requise.

[out] UncompressedFragment

Pointeur vers une mémoire tampon allouée à l’appelant (allouée à partir d’un pool paginé ou non paginé) recevant les données décompressées de CompressedBuffer. Ce paramètre est obligatoire et ne peut pas être NULL.

[in] UncompressedFragmentSize

Taille, en octets, de la mémoire tampon UncompressedFragment .

[in] CompressedBuffer

Pointeur vers la mémoire tampon contenant 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 .

[in] FragmentOffset

Décalage de base zéro, en octets, à partir duquel le fragment non compressé est extrait. Cette valeur de décalage est la position dans la mémoire tampon non compressée d’origine.

[out] FinalUncompressedSize

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

[in] WorkSpace

Pointeur vers une mémoire tampon d’espace de travail allouée à l’appelant utilisée par la fonction RtlDecompressFragment pendant la décompression. Utilisez la fonction RtlGetCompressionWorkSpaceSize pour déterminer la taille correcte de la mémoire tampon de l’espace de travail.

Valeur retournée

RtlDecompressFragmentretourne un code NTSTATUS approprié, comme l’un des éléments suivants :

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

Remarques

Par rapport à la fonction RtlDecompressBuffer , RtlDecompressFragment est utilisé pour décompresser une partie des données d’une mémoire tampon compressée (par opposition à la mémoire tampon entière).

Pour déterminer la taille de mémoire tampon correcte pour le paramètre WorkSpace , utilisez la fonction RtlGetCompressionWorkSpaceSize (autrement dit, la valeur retournée par le paramètre RtlGetCompressionWorkSpaceSize ).

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

Pour décompresser une mémoire tampon compressée entière, utilisez la fonction RtlDecompressBuffer .

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

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx