Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonction RtlGetCompressionWorkSpaceSize permet de déterminer la taille correcte de la mémoire tampon WorkSpace pour les fonctions RtlCompressBuffer et RtlDecompressFragment .
Syntaxe
NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
[in] USHORT CompressionFormatAndEngine,
[out] PULONG CompressBufferWorkSpaceSize,
[out] PULONG CompressFragmentWorkSpaceSize
);
Paramètres
[in] CompressionFormatAndEngine
Masque de bits spécifiant le format de compression et le type de moteur. Ce paramètre doit être défini sur une combinaison OR au niveau du bit valide d’un type de format et d’un type de moteur. Par exemple, COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.
Les significations de ces valeurs et d’autres valeurs connexes sont les suivantes :
| Valeur | Meaning |
|---|---|
| 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. |
| COMPRESSION_FORMAT_XPRESS_HUFF | La fonction effectue la compression Xpress Huffman. |
| COMPRESSION_ENGINE_STANDARD | La mémoire tampon UncompressedBuffer est compressée à l’aide d’un algorithme qui fournit un équilibre entre la compression des données et les performances. Cette valeur ne peut pas être utilisée avec COMPRESSION_ENGINE_MAXIMUM. |
| COMPRESSION_ENGINE_MAXIMUM | La mémoire tampon UncompressedBuffer est compressée à l’aide d’un algorithme qui fournit une compression maximale des données, mais avec des performances relativement lentes. Cette valeur ne peut pas être utilisée avec COMPRESSION_ENGINE_STANDARD. |
| COMPRESSION_ENGINE_HIBER | Non pris en charge par cette fonction. |
[out] CompressBufferWorkSpaceSize
Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit la taille, en octets, nécessaire pour compresser une mémoire tampon. Cette valeur est utilisée pour déterminer la taille correcte de la mémoire tampon WorkSpace de RtlCompressBuffer.
[out] CompressFragmentWorkSpaceSize
Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit la taille, en octets, nécessaire pour décompresser une mémoire tampon compressée sur un fragment. Cette valeur est utilisée pour déterminer la taille correcte de la mémoire tampon WorkSpace de RtlDecompressFragment. Notez que la fonction RtlCompressFragment n’existe pas actuellement.
Valeur retournée
RtlGetCompressionWorkSpaceSizeretourne un état d’erreur approprié, tel que l’un des éléments suivants :
| Code de retour | Descriptif |
|---|---|
| STATUS_SUCCESS | Les tailles de mémoire tampon requises, en octets, ont été retournées avec succès. |
| STATUS_INVALID_PARAMETER | Un format de compression non valide a été spécifié via le paramètre CompressionFormatAndEngine . Si CompressionFormatAndEngine 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 CompressionFormatAndEngine . Si CompressionFormatAndEngine n’est pas l’un des éléments suivants, STATUS_UNSUPPORTED_COMPRESSION est retourné : COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUF |
| STATUS_NOT_SUPPORTED | Un moteur de compression non valide a été spécifié via le paramètre CompressionFormatAndEngine . Si CompressionFormatAndEngine n’est pas COMPRESSION_ENGINE_STANDARD ni COMPRESSION_ENGINE_MAXIMUM (mais pas les deux), cette valeur est retournée. |
Remarques
Les fonctions RtlCompressBuffer et RtlDecompressFragment nécessitent une mémoire tampon d’espace de travail de taille appropriée pour compresser et décompresser correctement. Pour déterminer la taille correcte de la mémoire tampon d’espace de travail, en octets, appelez la fonction RtlGetCompressionWorkSpaceSize .
Par exemple, le paramètre WorkSpace de la fonction RtlCompressBuffer doit pointer vers une mémoire tampon d’espace de travail de taille adéquate. Le paramètre CompressBufferWorkSpaceSize de RtlGetCompressionWorkSpaceSize fournit cette taille.
Pour compresser une mémoire tampon non compressée, utilisez la fonction RtlCompressBuffer .
Pour décompresser une mémoire tampon compressée, utilisez la fonction RtlDecompressBuffer .
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 .
Spécifications
| Requirement | Valeur |
|---|---|
| Client minimum requis | Windows XP |
| plateforme cible | Universal |
| Header | ntifs.h (include Fltkernel.h, Ntifs.h) |
| Library | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |