UDF > WinAPIEx > System > Buffer >


_WinAPI_CompressBuffer

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] )

Param�tres

$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

Valeur de retour

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.

Remarques

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

En relation

_WinAPI_DecompressBuffer

Voir aussi

Consultez RtlCompressBuffer 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