|
****压缩分卷!扇区到扇区读写] 迷你硬盘读写器完工了B tabi
DOS下迷你硬盘读写器终于完工了!
可读写绝对扇区,支持大硬盘,U盘(需加载驱动),软盘。。
由于代码效率高,速度很快。
初步通过测试。
最后在自己的机子上大胆进行了写测试,即用坏数据写入硬盘,硬盘崩溃后,再用本程序把预先备份的数据恢复到硬盘,结果硬盘完好如初。。
有源码大家玩玩。。。
对不起:第一次传错了可执行文件,现在重传了。。
刚加了如果读写出错,给原因的提示
换成了 C 的注释,这样,不用TC3(BC31),TC2就可编译了
刚解决了基本INT13不出现出错提示的BUG..
除了考虑到能读写2048GB,没有加入起始扇区和要处理的扇区参数的对误输入负数的检测外(,否则的话,只能读写1024GB左右了.)对其他几个输入参数都进行了检测..
考虑 DOSFOREVER 的中肯意见
今天 加了 如果 不支持扩展13中断,就先获取硬盘本身的参数来显示出来,调用基本13中断以其参数CHS值来读写,这样就兼容了 非 磁头255,扇区63 的硬盘(也就是很老的硬盘),这样程序的兼容性就很强了。。
也加入了读写 "非1.44mb"软盘的功能, 说明见主帖。。。
另,即使支持扩展,也根据扩展48号功能,获取硬盘参数,显示出来。
显示出硬盘参数,能让用户心中有数。。。
另,把扩展13的读写缓冲增为100扇区的字节数,这样速度就更快了!
(不能再超过了,否则,就超过了文件读写的最大数了)
程序到此 ,基本告一段落了。。。
需要在扩展程序功能的,可在程序上再加上去吧。。
欢迎大家下载玩玩。。。
希望对有兴趣的有点帮助。。
***********************************
%%%%%%%%%%%%%%%%%%%%%%%%%%%
已成功加入了压缩和分卷功能!并采用LINUX帮助风格。。。
初步通过了测试!欢迎试玩!。。
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
遇到问题的片段:
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
刚成功地解决了 压缩引擎问题,下一步就是嵌入到我的程序中实现压缩功能了!
这几天,在国外的网上遨游,下了不下几十套源码!在几百个文件中穿梭!
终于找到了我要的!解决了我的问题
就是 zlib !
简要的过程如下:
1
试了,简单古老的
LZ, LZW,HUFFMAN,LZHUF,LZSS,LZHARC, LZ77,LZARI,LZRW1等等,都不理想,太老,效率太低,只能用来教学。。
2
看了 ARJ/UNARJ,有很多我不要的功能。。
3
曾定在 GZIP(BZIP2,基本差不多),很不错,也觉得有点适合我,压缩比和速度都很好,还有1-9的压缩比选项。。钻研了几天,发现没有内存压缩,只有文件压缩,。。。
4
看到一个提示: zlib 支持内存压缩!
确定它了!
(ZLIB和GZIP,PNG都采用相同的引擎:基于LZ77和HUFFMAN的结合,当然和前面提到的古老原始的版本是不可同日而语的)
在此过程中,与DDCOPY作者李治联系了。取得了DDCOPY源么,对我有启发。。
不过,试了DDCOPY的压缩,不太理想,豪时长,压缩比低。因为他采用的压缩/解压的类较简单,就两个文件(用简单的LZSS,胡颖卓编写的类,后来我也在网上看到了)
将要采用的压缩引擎是先进的最新版的 zlib-1.2.3 库(与GZIP,PNG图象用的同一个引擎),
压缩比和压缩速度很快,解压速度更快的离谱!
在WIN32 控制台程序中,压缩50MB,大约要20秒,压为了25MB。
解压只要大约3秒! 我靠!
还有 压缩比的1-9选项(类似GHOST)。。。
完全解决拉!
已经成功放入纯DOS程序中,被调用,运行结果正确!
并且,令人激动的是:所采用的 ZLIB库的表现相当棒!
刚才,测试结果:
压缩备份:
压缩1000000个扇区(500MB),采用6级(最高9级)就能压为312MB !
(如用9级,大约能压到 250-280之间!)
而且用时仅12分钟!大约一秒钟1MB!(跟GHOST速度差不多!)
而且是读一个很老的2GB的硬盘!
(注意:由于GHOST不处理没有文件的的数据,所以,在备份分区时,所化的总时间自然就很少了。毕竟他不是整个扇区的全真备份。我的程序是的)
解压还原:
解压就快的离谱拉!
把压缩的景象文件(原500MB)解压后还原到硬盘上,大约1分钟左右!
简直不敢相信!这个ZLIB 的解压作者是 Mark Adler,真是牛!
他好象也美国火星计划的研究人员。。
现正在整理程序。进入最后阶段。。。
大概两三天能出来。。。
(DDCOPY 作者李治帮过我,由于我的程序采用了高效的压缩/解压库,出与感谢,我会把我的程序寄给他,希望在更加优越的压缩/解压方面,供他借鉴。。我会很高兴。。)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
将要添加如下功能:
1
支持古董级硬盘(不支持扩展INT13)的压缩分卷
2
主分区的读写(此功能,只有C有实用意义,因为,一般用户都把很多盘弄成了扩展分区的逻辑驱动器了)
[ 本帖最后由 gotomsdos 于 2006-8-6 10:20 PM 编辑 ] |
-
-
mydisk.rar
170.57 KB, 下载次数: 333, 下载积分: 无忧币 -2
程序源码和可执行
|