D�compresse un tampon compress� entier
#include <WinAPISys.au3>
_WinAPI_DecompressBuffer ( $pUncompressedBuffer, $iUncompressedSize, $pCompressedBuffer, $iCompressedSize [, $iFormat = 0x0002] )
$pUncompressedBuffer | Le pointeur sur le tampon allou� par l'appelant qui re�oit les donn�es d�compress�es du tampon compress�. |
$iUncompressedSize | La taille de la m�moire tampon non compress�e, en octets. |
$pCompressedBuffer | Le pointeur sur la m�moire tampon qui contient les donn�es � d�compresser. |
$iCompressedSize | La taille de la m�moire tampon compress�e, en octets. |
$iFormat | [optionnel] Le format de compression des donn�es dans le tampon compress�. Ce param�tre doit prendre l'une des valeurs suivantes: $COMPRESSION_FORMAT_LZNT1 (par d�faut) $COMPRESSION_FORMAT_XPRESS $COMPRESSION_FORMAT_XPRESS_HUFF |
Succ�s: | Retourne la taille des donn�es d�compress�es stock�es dans le tampon non compress�, en octets. |
�chec: | Retourne 0 et d�finit @error <> 0, @extended contient le code d'erreur NTSTATUS. |
La fonction _WinAPI_DecompressBuffer() prend en entr�e un buffer compress� entier et produit son �quivalent d�compress� � condition que les donn�es non compress� rentre dans la m�moire tampon de destination sp�cifi�e.
Pour compresser un tampon non compress�, utilisez la fonction _WinAPI_CompressBuffer().
Consultez RtlDecompressBuffer 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