UDF > WinAPIEx > System > Buffer >


_WinAPI_DecompressBuffer

D�compresse un tampon compress� entier

#include <WinAPISys.au3>
_WinAPI_DecompressBuffer ( $pUncompressedBuffer, $iUncompressedSize, $pCompressedBuffer, $iCompressedSize [, $iFormat = 0x0002] )

Param�tres

$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

Valeur de retour

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.

Remarques

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().

En relation

_WinAPI_CompressBuffer

Voir aussi

Consultez RtlDecompressBuffer dans la librairie MSDN.

Exemple

#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