小编Ana*_*nas的帖子

ZLIB解压缩

我编写了一个小应用程序,它应该解压缩以gzip/deflate格式编码的数据.

为了实现这一点,我正在使用ZLIB库,使用解压缩功能.

问题是该功能不起作用!在其他方面,数据不是未压缩的!

我在这里发布代码:

int (*decompress)(PBYTE,PULONG,PBYTE,ULONG);

void DecodeData(PBYTE data,ULONG dataSize){
  LoadLibrary("C:\\zlib1.dll");

  decompress=(int(*)(PBYTE,PULONG,PBYTE,ULONG))GetProcAddress(
    GetModuleHandle("zlib1.dll"),"uncompress");

  // Yeah I know the size is hardcoded and it's not right, but it's just a test,
  // so nevermind

  PBYTE decompressedData=(PBYTE)VirtualAlloc(NULL,300,MEM_COMMIT|MEM_RESERVE,
    PAGE_EXECUTE_READWRITE);
  ULONG maxSize=250;

  decompress(decompressedData,&maxSize,data,dataSize);

  MessageBox(0,(char*)decompressedData,0,MB_OK);//MessageBox shows no data, it's blank!
}
Run Code Online (Sandbox Code Playgroud)

GetProcAddress成功获取了该函数的指针,问题是该函数返回NULL(甚至没有zlib文档中列出的错误)

c++ compression winapi zlib

0
推荐指数
1
解决办法
5083
查看次数

标签 统计

c++ ×1

compression ×1

winapi ×1

zlib ×1