mirror of
https://git.code.sf.net/p/mingw-w64/mingw-w64
synced 2024-11-27 03:43:37 +08:00
Add Windows 8's compression/decompression API
This commit is contained in:
parent
bf99de61e4
commit
ab248138f4
65
mingw-w64-headers/include/compressapi.h
Normal file
65
mingw-w64-headers/include/compressapi.h
Normal file
@ -0,0 +1,65 @@
|
||||
/**
|
||||
* This file is part of the mingw-w64 runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
|
||||
#ifndef _COMPRESSAPI_
|
||||
#define _COMPRESSAPI_
|
||||
|
||||
#include <windef.h>
|
||||
|
||||
#if NTDDI_VERSION >= 0x06020000
|
||||
|
||||
#define COMPRESS_ALGORITHM_INVALID 0
|
||||
#define COMPRESS_ALGORITHM_NULL 1
|
||||
#define COMPRESS_ALGORITHM_MSZIP 2
|
||||
#define COMPRESS_ALGORITHM_XPRESS 3
|
||||
#define COMPRESS_ALGORITHM_XPRESS_HUFF 4
|
||||
#define COMPRESS_ALGORITHM_LZMS 5
|
||||
#define COMPRESS_ALGORITHM_MAX 6
|
||||
|
||||
#define COMPRESS_RAW (1 << 29)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
COMPRESS_INFORMATION_CLASS_INVALID = 0,
|
||||
COMPRESS_INFORMATION_CLASS_BLOCK_SIZE,
|
||||
COMPRESS_INFORMATION_CLASS_LEVEL
|
||||
} COMPRESS_INFORMATION_CLASS;
|
||||
|
||||
DECLARE_HANDLE (COMPRESSOR_HANDLE);
|
||||
|
||||
typedef COMPRESSOR_HANDLE *PCOMPRESSOR_HANDLE;
|
||||
typedef COMPRESSOR_HANDLE DECOMPRESSOR_HANDLE;
|
||||
typedef COMPRESSOR_HANDLE *PDECOMPRESSOR_HANDLE;
|
||||
typedef PVOID (__cdecl *PFN_COMPRESS_ALLOCATE) (PVOID UserContext, SIZE_T Size);
|
||||
typedef VOID (__cdecl *PFN_COMPRESS_FREE) (PVOID UserContext, PVOID Memory);
|
||||
|
||||
typedef struct _COMPRESS_ALLOCATION_ROUTINES {
|
||||
PFN_COMPRESS_ALLOCATE Allocate;
|
||||
PFN_COMPRESS_FREE Free;
|
||||
PVOID UserContext;
|
||||
} COMPRESS_ALLOCATION_ROUTINES,*PCOMPRESS_ALLOCATION_ROUTINES;
|
||||
|
||||
WINBOOL WINAPI CloseCompressor (COMPRESSOR_HANDLE CompressorHandle);
|
||||
WINBOOL WINAPI CloseDecompressor (DECOMPRESSOR_HANDLE DecompressorHandle);
|
||||
WINBOOL WINAPI Compress (COMPRESSOR_HANDLE CompressorHandle, PVOID UncompressedData, SIZE_T UncompressedDataSize, PVOID CompressedBuffer, SIZE_T CompressedBufferSize, PSIZE_T CompressedDataSize);
|
||||
WINBOOL WINAPI CreateCompressor (DWORD Algorithm, PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, PCOMPRESSOR_HANDLE CompressorHandle);
|
||||
WINBOOL WINAPI CreateDecompressor (DWORD Algorithm, PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, PDECOMPRESSOR_HANDLE DecompressorHandle);
|
||||
WINBOOL WINAPI Decompress (DECOMPRESSOR_HANDLE DecompressorHandle, PVOID CompressedData, SIZE_T CompressedDataSize, PVOID UncompressedBuffer, SIZE_T UncompressedBufferSize, PSIZE_T UncompressedDataSize);
|
||||
WINBOOL WINAPI QueryCompressorInformation (COMPRESSOR_HANDLE CompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize);
|
||||
WINBOOL WINAPI QueryDecompressorInformation (DECOMPRESSOR_HANDLE DecompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize);
|
||||
WINBOOL WINAPI ResetCompressor (COMPRESSOR_HANDLE CompressorHandle);
|
||||
WINBOOL WINAPI ResetDecompressor (DECOMPRESSOR_HANDLE DecompressorHandle);
|
||||
WINBOOL WINAPI SetCompressorInformation (COMPRESSOR_HANDLE CompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize);
|
||||
WINBOOL WINAPI SetDecompressorInformation (DECOMPRESSOR_HANDLE DecompressorHandle, COMPRESS_INFORMATION_CLASS CompressInformationClass, PVOID CompressInformation, SIZE_T CompressInformationSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user