[发明专利]一种解压qcow镜像文件中压缩数据的方法有效
申请号: | 201811594980.7 | 申请日: | 2018-12-25 |
公开(公告)号: | CN109710581B | 公开(公告)日: | 2023-05-30 |
发明(设计)人: | 梁效宁;许超明;刘波;朱星海;董超 | 申请(专利权)人: | 四川巧夺天工信息安全智能设备有限公司 |
主分类号: | G06F16/174 | 分类号: | G06F16/174 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 641000 四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解压 qcow 文件 压缩 数据 方法 | ||
1.一种解压qcow镜像文件中压缩数据的方法,其特征在于包括以下步骤:
S100:查找并解析磁盘中qcow镜像文件,获取所述qcow镜像文件中压缩数据,包含以下步骤:
S101:获取所述qcow镜像文件中头文件信息的第4至第7字节的内容作为版本;
S102:判断所述qcow镜像文件的版本是否为1,如果是,执行步骤S103,否则执行步骤S105;
S103:解析对应的二级表中当前项的前8字节内容,判断最高bit位是否为1,如果是,执行步骤S104,否则,结束流程;
S104:最高bit位后的连续0xXYbit位表示簇压缩后的大小,单位为byte,其余bit位表示簇地址,执行步骤S110,其中,X、Y为大于零的自然数;
S105:解析对应的二级表中当前项的前8字节内容,判断次高bit位是否为1,如果是,执行步骤S106,否则,结束流程;
S106:次高bit位后的连续0xXYbit位代表簇压缩后的大小,单位为扇区,其余bit位表示簇地址,其中,X、Y为大于零的自然数;
S107:判断二级表中当前项的下一项表示的簇是否为压缩数据,如果是,执行步骤S108,否则,执行步骤S109;
S108:当前地址减下一地址的差,与所述簇压缩后的大小乘以512的积进行比较,较大者的值加512的和作为簇压缩后的大小,其单位为byte,执行S110;
S109:簇压缩后的大小被赋值为步骤S106中所述簇压缩后的大小乘以512的积,再加512的和,其单位为byte,执行步骤S110;
S110:根据获取到的簇地址及簇压缩后的大小,从所述qcow镜像文件中读取压缩数据,执行步骤S200;
S200:获取zlib库中压缩数据的头部;
S300:解压所述qcow镜像文件的压缩数据,步骤S300包括以下步骤:
S301:将所述步骤S200所获取的所述头部添加至所述步骤S100所获取的压缩数据前,作为被解压数据;
S302:采用所述函数ZEXTERNintZEXPORTuncompressOF((Bytef*dest,uLongf*destLen,constBytef*source,uLongsourceLen))解压被解压文件,获取所述qcow镜像文件中压缩数据。
2.根据权利要求1所述的一种解压qcow镜像文件中压缩数据的方法,其特征在于,所述步骤S200包括以下步骤:
S201:下载zlib库;
S202:使用zlib库中函数压缩任一数据;
S203:获取所述步骤S202中压缩后的数据中前两个字节作为所述头部。
3.根据权利要求2所述的一种解压qcow镜像文件中压缩数据的方法,其特征在于,所述zlib库中函数为ZEXTERNintZEXPORTcompressOF((Bytef*dest,uLongf*destLen,constBytef*source,uLongsourceLen))。
4.根据权利要求3所述的一种解压qcow镜像文件中压缩数据的方法,其特征在于,所述函数ZEXTERNintZEXPORTcompressOF((Bytef*dest,uLongf*destLen,constBytef*source,uLongsourceLen))中,destLen的值大于簇大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川巧夺天工信息安全智能设备有限公司,未经四川巧夺天工信息安全智能设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811594980.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种多线程桥式起重机数据采集系统及方法
- 下一篇:一种共享目录管理方法和装置