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 »).
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 par l’appelant (allouée à partir d’un pool paginé ou non paginé) recevant les données 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 de compressé tampon.
[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 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 par 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 d’espace de travail.
Valeur de retour
RtlDecompressFragmentretourne un code NTSTATUS approprié, tel que l’un des éléments suivants :
Retourner le code | Description |
---|---|
STATUS_SUCCESS | La mémoire tampon CompressedBuffer a été correctement compressée dans Non compressé. |
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 volumineux 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 à l’intégralité de la mémoire tampon).
Pour déterminer la taille de mémoire tampon correcte pour le paramètre WorkSpace, utilisez la fonctionRtlGetCompressionWorkSpaceSize (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.
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 |