谁有c++ zip 压缩源程序
c++ zip 压缩源程序 可在VC 下编译. 问题点数:20、回复次数:4Top
1 楼akirya(坏[其实偶不是什么所谓的坏人])回复于 2006-12-01 09:02:15 得分 0
用zlib吧Top
2 楼todototry(来csdn,学会扯淡了...)回复于 2006-12-01 09:31:04 得分 0
okokok
okokok
okokok
okokok
okokok
okokokTop
3 楼playboxer(大漠苍狼)回复于 2006-12-13 16:51:59 得分 0
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
/*
#define COMPRESSION_FORMAT_LZNT1 0x0002
#define COMPRESSION_ENGINE_STANDARD 0x0000 // Standart compression
#define COMPRESSION_ENGINE_MAXIMUM 0x0100 // Maximum (slowest but better)
*/
#define CMP_FRM COMPRESSION_FORMAT_LZNT1|COMPRESSION_ENGINE_MAXIMUM
typedef DWORD (__stdcall *RtlCompressBuffer_Fn)(
IN ULONG CompressionFormat,
IN PVOID SourceBuffer,
IN ULONG SourceBufferLength,
OUT PVOID DestinationBuffer,
IN ULONG DestinationBufferLength,
IN ULONG Unknown,
OUT PULONG pDestinationSize,
IN PVOID WorkspaceBuffer );
typedef DWORD (__stdcall *RtlDecompressBuffer_Fn)(
IN ULONG CompressionFormat,
OUT PVOID DestinationBuffer,
IN ULONG DestinationBufferLength,
IN PVOID SourceBuffer,
IN ULONG SourceBufferLength,
OUT PULONG pDestinationSize );
typedef DWORD (__stdcall *RtlGetCompressionWorkSpaceSize_Fn)(
IN ULONG CompressionFormat,
OUT PULONG pNeededBufferSize,
OUT PULONG pUnknown );
int main (void)
{
char dst[512] = {0};
char buf[] = "abcabcabcabcabcabcabc";
HANDLE hDLL;
RtlCompressBuffer_Fn fcmp;
RtlDecompressBuffer_Fn fdcp;
RtlGetCompressionWorkSpaceSize_Fn fgcw;
DWORD dw, xx, rc;
void *tmpMem;
register unsigned char i;
hDLL = LoadLibrary ("ntdll.dll");
if ( hDLL != NULL )
{
fcmp = (RtlCompressBuffer_Fn) GetProcAddress(hDLL, "RtlCompressBuffer");
fdcp = (RtlDecompressBuffer_Fn) GetProcAddress(hDLL, "RtlDecompressBuffer");
fgcw = (RtlGetCompressionWorkSpaceSize_Fn) GetProcAddress(hDLL, "RtlGetCompressionWorkSpaceSize");
if ( fcmp && fdcp && fgcw)
{
rc = (*fgcw)(CMP_FRM, &dw, &xx);
tmpMem = LocalAlloc(LPTR, dw);
rc = (*fcmp)(CMP_FRM, buf, sizeof(buf), dst, sizeof(dst), xx, &dw, tmpMem);
LocalFree(tmpMem);
for (i = 0; i< dw; i++) printf("%c", (BYTE) dst[i]); printf("n--n");
for (i = 0; i< sizeof(buf); i++) buf[i] = 0;
rc = (*fdcp)(CMP_FRM, buf, sizeof(buf), dst, dw, &xx);
for (i = 0; i< xx; i++) printf("%c", (BYTE) buf[i]); printf("n");
}
FreeLibrary(hDLL);
}
return 0;
}Top
4 楼xuzheng318(忧郁王子)回复于 2006-12-13 17:09:51 得分 20
http://www.vckbase.com/document/viewdoc/?id=1265
楼主参考此文!Top





