Compresse un tampon avec le format de compression et le type de moteur sp�cifi�s
#include <WinAPISys.au3>
_WinAPI_CompressBuffer ( $pUncompressedBuffer, $iUncompressedSize, $pCompressedBuffer, $iCompressedSize [, $iFormatAndEngine = 0x0002] )
$pUncompressedBuffer | Le pointeur sur le tampon allou� par l'appelant qui contient les donn�es � compresser. |
$iUncompressedSize | La taille de la m�moire tampon non compress�, en octets. |
$pCompressedBuffer | Le pointeur sur le tampon allou� par l'appelant qui re�oit les donn�es compress�es. |
$iCompressedSize | La taille de la m�moire tampon compress�, en octets. |
$iFormatAndEngine | [optionnel] Un masque de bits qui sp�cifie le format de compression et le type de moteur. Ce param�tre doit �tre d�fini sur un niveau de bit valide ou une combinaison d'un type de format et d'un type de moteur. $COMPRESSION_FORMAT_LZNT1 (par d�faut) $COMPRESSION_FORMAT_XPRESS $COMPRESSION_FORMAT_XPRESS_HUFF $COMPRESSION_ENGINE_STANDARD (par d�faut) $COMPRESSION_ENGINE_MAXIMUM |
Succ�s: | Retourne la taille des donn�es compress�es stock�es dans le tampon compress�, en octets. |
�chec: | Retourne 0 et d�finit @error <> 0, @extended contient le code d'erreur NTSTATUS. |
La fonction _WinAPI_CompressBuffer() prend en entr�e un tampon non compress� et produit son �quivalent compress� � condition que les donn�es compress�es rentre � l'int�rieur du tampon de destination sp�cifi�.
Pour d�compresser un tampon compress�, utilisez la fonction _WinAPI_DecompressBuffer().
Consultez RtlCompressBuffer dans la librairie MSDN.
#include <APISysConstants.au3> #include <WinAPIMem.au3> #include <WinAPISys.au3> ; Cr�e des tampons compress�s et d�compress�s Local $a_pBuffer[2] For $i = 0 To 1 $a_pBuffer[$i] = _WinAPI_CreateBuffer(1024) Next ; Compresse des donn�es binaires Local $dData = Binary('0x00112233445566778899AABBCCDDEEFF00112233445566778899AABBCCDDEEFF00112233445566778899AABBCCDDEEFF00112233445566778899AABBCCDDEEFF') Local $iSize = BinaryLen($dData) DllStructSetData(DllStructCreate('byte['& $iSize & ']', $a_pBuffer[0]), 1, $dData) $iSize = _WinAPI_CompressBuffer($a_pBuffer[0], $iSize, $a_pBuffer[1], 1024, BitOR($COMPRESSION_FORMAT_LZNT1, $COMPRESSION_ENGINE_MAXIMUM)) If Not @error Then ConsoleWrite('Compress�: '& DllStructGetData(DllStructCreate('byte['& $iSize & ']', $a_pBuffer[1]), 1) & @CRLF) EndIf ; D�compresse les donn�es $iSize = _WinAPI_DecompressBuffer($a_pBuffer[0], 1024, $a_pBuffer[1], $iSize) If Not @error Then ConsoleWrite('D�compress�: '& DllStructGetData(DllStructCreate('byte['& $iSize & ']', $a_pBuffer[0]), 1) & @CRLF) EndIf ; Lib�re la m�moire For $i = 0 To 1 _WinAPI_FreeMemory($a_pBuffer[$i]) Next