我爱Aspx >> VC.Net >> 实战DeviceIoControl 之三:制作磁盘镜像文件将软盘保存成镜像文件的步骤简单描述为:
1、创建空的镜像文件。
2、调用OpenDisk打开软盘。成功转3,失败转8。
3、调用LockVolume将卷锁定。成功转4,失败转7。
4、调用GetDiskGeometry获取参数。成功转5,失败转6。
5、将磁盘参数写入镜像文件作为文件头。调用ReadTracks按柱面读出数据,保存在镜像文件中。循环次数等于柱面数。
6、调用UnlockVolume将卷解锁。
7、调用CloseDisk关闭软盘。
8、关闭镜像文件。
将镜像文件载入软盘的步骤简单描述为:
1、打开镜像文件。
2、调用OpenDisk打开软盘。成功转3,失败转11。
3、调用LockVolume将卷锁定。成功转4,失败转10。
4、调用GetDiskGeometry获取参数。成功转5,失败转9。
5、从镜像文件中读出文件头,判断两个磁盘参数是否一致。不一致转6,否则转7。
6、调用LowLevelFormatTracks按柱面格式化软盘。循环次数等于柱面数。成功转7,失败转8。
7、从镜像文件中读出数据,并调用WriteTracks按柱面写入磁盘。循环次数等于柱面数。
8、调用DismountVolume将卷卸下。
9、调用UnlockVolume将卷解锁。
10、调用CloseDisk关闭软盘。
11、关闭镜像文件。
Q 我注意到,磁盘读写和格式化是按柱面进行的,有什么道理吗?
A 没有特别的原因,只是因为在这个例子中可以方便地显示处理进度。
有一点需要特别提及,按绝对地址读写磁盘数据时,“最小单位”是扇区,地址一定要与扇区对齐,长度也要等于扇区长度的整数倍。比如,每扇区512字节,那么起始地址和数据长度都应能被512整除才行。
【我对这篇文章有话说?】
WindowsCE下Unicode和Ansi字符间..[05-21]
关联自己的应用程序到右键菜单中[05-21]
实战DeviceIoControl 之二:获取..[05-21]
非议MFC(三)库代码的质量问题[05-21]
从WEB服务器下载文件的简单方法。[05-21]
非议MFC(二)逻辑上的不完备[05-21]
实战DeviceIoControl 之一:通过..[05-21]
Windows中文输入法的实现[05-21]
用Delphi 6开发ASP上传组件详解[05-21]
”新快乐时光“再解[05-21]