1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 6 #ifndef _COMPRESSAPI_ 7 #define _COMPRESSAPI_ 8 9 #include <windef.h> 10 11 #if NTDDI_VERSION >= 0x06020000 12 13 #define COMPRESS_ALGORITHM_INVALID 0 14 #define COMPRESS_ALGORITHM_NULL 1 15 #define COMPRESS_ALGORITHM_MSZIP 2 16 #define COMPRESS_ALGORITHM_XPRESS 3 17 #define COMPRESS_ALGORITHM_XPRESS_HUFF 4 18 #define COMPRESS_ALGORITHM_LZMS 5 19 #define COMPRESS_ALGORITHM_MAX 6 20 21 #define COMPRESS_RAW (1 << 29) 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 typedef enum { 28 COMPRESS_INFORMATION_CLASS_INVALID = 0, 29 COMPRESS_INFORMATION_CLASS_BLOCK_SIZE, 30 COMPRESS_INFORMATION_CLASS_LEVEL 31 } COMPRESS_INFORMATION_CLASS; 32 33 DECLARE_HANDLE (COMPRESSOR_HANDLE); 34 35 typedef COMPRESSOR_HANDLE *PCOMPRESSOR_HANDLE; 36 typedef COMPRESSOR_HANDLE DECOMPRESSOR_HANDLE; 37 typedef COMPRESSOR_HANDLE *PDECOMPRESSOR_HANDLE; 38 typedef PVOID (__cdecl *PFN_COMPRESS_ALLOCATE) (PVOID UserContext, SIZE_T Size); 39 typedef VOID (__cdecl *PFN_COMPRESS_FREE) (PVOID UserContext, PVOID Memory); 40 41 typedef struct _COMPRESS_ALLOCATION_ROUTINES { 42 PFN_COMPRESS_ALLOCATE Allocate; 43 PFN_COMPRESS_FREE Free; 44 PVOID UserContext; 45 } COMPRESS_ALLOCATION_ROUTINES,*PCOMPRESS_ALLOCATION_ROUTINES; 46 47 WINBOOL WINAPI CloseCompressor (COMPRESSOR_HANDLE CompressorHandle); 48 WINBOOL WINAPI CloseDecompressor (DECOMPRESSOR_HANDLE DecompressorHandle); 49 WINBOOL WINAPI Compress (COMPRESSOR_HANDLE CompressorHandle, PVOID UncompressedData, SIZE_T UncompressedDataSize, PVOID CompressedBuffer, SIZE_T CompressedBufferSize, PSIZE_T CompressedDataSize); 50 WINBOOL WINAPI CreateCompressor (DWORD Algorithm, PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, PCOMPRESSOR_HANDLE CompressorHandle); 51 WINBOOL WINAPI CreateDecompressor (DWORD Algorithm, PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, PDECOMPRESSOR_HANDLE DecompressorHandle); 52 WINBOOL WINAPI Decompress (DECOMPRESSOR_HANDLE DecompressorHandle, PVOID CompressedData, SIZE_T CompressedDataSize, PVOID UncompressedBuffer, SIZE_T UncompressedBufferSize, PSIZE_T UncompressedDataSize); 53 WINBOOL WINAPI QueryCompressorInformation (COMPRESSOR_HANDLE CompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize); 54 WINBOOL WINAPI QueryDecompressorInformation (DECOMPRESSOR_HANDLE DecompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize); 55 WINBOOL WINAPI ResetCompressor (COMPRESSOR_HANDLE CompressorHandle); 56 WINBOOL WINAPI ResetDecompressor (DECOMPRESSOR_HANDLE DecompressorHandle); 57 WINBOOL WINAPI SetCompressorInformation (COMPRESSOR_HANDLE CompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize); 58 WINBOOL WINAPI SetDecompressorInformation (DECOMPRESSOR_HANDLE DecompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize); 59 60 #ifdef __cplusplus 61 } 62 #endif 63 64 #endif 65 #endif 66