Funktionreferenz


_WinAPI_DecompressBuffer

Beschreibung anzeigen in

Dekomprimiere einen kompletten komprimierten Puffer.

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

Parameter

$pUncompressedBuffer Ein Zeiger zu einem aufrufer-allokierten Puffer welche die dekomprimierten Daten des komprimierten Puffers erhält.
$iUncompressedSize Die Größe des unkomprimierten Puffers in Bytes.
$pCompressedBuffer Ein Zeiger zu dem Puffer welches die zu dekomprimierenden Daten beinhaltet.
$iCompressedSize Die Größe des komprimierten Puffers in Bytes.
$iFormat [optional] Das Komprimierungsformat der Daten im komprimierten Puffer. Dieser Parameter muss einer der folgenden Werte annehmen:
    $COMPRESSION_FORMAT_LZNT1 (Standard)
    $COMPRESSION_FORMAT_XPRESS
    $COMPRESSION_FORMAT_XPRESS_HUFF

Rückgabewert

Erfolg: Die Größe der dekomprimierten Daten welche im unkomprimierten Puffer gespeichert werden, in Bytes.
Fehler: 0 und setzt das @error Flag auf ungleich null. @extended kann den NTSTATUS Fehlercode enthalten.

Bemerkungen

Die _WinAPI_DecompressBuffer() Funktion nimmt als Eingabe einen komplett komprimierten Puffer und produziert dessen dekomprimiertes Äquivalent vorausgesetzt, dass die unkomprimierten Daten in den angegebenen Zielpuffer passen.

Um einen unkomprimierten Puffer zu komprimieren, sollte man die _WinAPI_CompressBuffer() Funktion verwenden.

Verwandte Funktionen

_WinAPI_CompressBuffer

Siehe auch

Suche nach RtlDecompressBuffer in der MSDN Bibliothek.

Beispiel

#include <APISysConstants.au3>
#include <WinAPIMem.au3>
#include <WinAPISys.au3>

; Create compressed and uncompressed buffers
Local $a_pBuffer[2]
For $i = 0 To 1
    $a_pBuffer[$i] = _WinAPI_CreateBuffer(1024)
Next

; Compress binary data
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('Compressed:   ' & DllStructGetData(DllStructCreate('byte[' & $iSize & ']', $a_pBuffer[1]), 1) & @CRLF)
EndIf

; Decompress data
$iSize = _WinAPI_DecompressBuffer($a_pBuffer[0], 1024, $a_pBuffer[1], $iSize)
If Not @error Then
    ConsoleWrite('Uncompressed: ' & DllStructGetData(DllStructCreate('byte[' & $iSize & ']', $a_pBuffer[0]), 1) & @CRLF)
EndIf

; Free memory
For $i = 0 To 1
    _WinAPI_FreeMemory($a_pBuffer[$i])
Next