index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3198回复:26

磁盘读写问题

楼主#
更多 发布于:2002-03-10 17:06
请教高手,如何把一个磁盘(Windows操作系统不能识别)的数据读写到另一个磁盘(windows系统),说说大概的思路,我一点都不懂,多谢啊!
LIUTANG
驱动大牛
驱动大牛
  • 注册日期2001-03-30
  • 最后登录2020-12-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-03-10 22:26
你的硬盘是什么?我想你可能应该直接读写硬盘的磁道和扇区了。可以先拿一张软盘练一下
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-11 08:28
多谢LIUTANG,我的硬盘是DSP硬盘,在windows下只能看到是空盘,其实上面有数据,再问一句,如何找到软盘或硬盘(有两个硬盘,一个能识别,一个不能)。
再次感谢。
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-11 15:44

不知道磁盘文件系统的格式,就是读出扇区的内容也没有用呀.

还不如先用linux的分区工具查看一下你硬盘的格式.
再查相关格式的资料,编个程序转换一下就可以了.
singwoo
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-03-11 16:46
如果知道磁盘的格式呢,你说的“再查相关格式的资料”是指哪方面的资料。
ysy
ysy
驱动中牛
驱动中牛
  • 注册日期2002-02-18
  • 最后登录2008-08-25
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望29点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-03-11 16:59
你这个空白硬盘是准备干什么用呢?根据情况不同需要开发文件系统或者直接存取硬盘,你应该说明白点呀!后者简单。前者复杂,你如果没有点功力是不行的。
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-03-12 11:32
如果知道磁盘的格式呢,你说的“再查相关格式的资料”是指哪方面的资料。


比方说是fat16或fat32或ntfs或ext2 等等的磁盘文件系统.
你先根据boot分区信息来确定磁盘文件系统.
然后再查相关格式的资料.
singwoo
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-03-12 11:51
请介绍一个流程:假设是fat16,我要获得上面的文件,应先读什么区,再根据什么读取什么,一个流程。多谢!
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-03-12 12:15
请介绍一个流程:假设是fat16,我要获得上面的文件,应先读什么区,再根据什么读取什么,一个流程。多谢!


fat16那就太简单了.
1.先读 mbr,读出你想要处理的分区的起始扇区(boot sector).
2.读出boot sector中fat表的大小,cluster的大小等信息.
3.利用以上信息确定dir根目录的起始扇区.
4.在目录表中查找你想处理的文件的目录项.
5.根据目录项中起始扇区号,结合fat表,就可读取文件的数据了.

建议,用软盘先试,软盘没有mbr的,所以直接可以从第二步开始.
用debug 读取head= 0,cylinder 0,sector 1)扇区就是boot sector 了.
singwoo
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-03-12 12:28
我读取了软盘的一个扇驱(利用此网站的一个vxd程序),from head=0 track=0 sector=1,并把它存入一个TXT文件中,结果是
“?
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-03-12 12:59
[quote]我读取了软盘的一个扇驱(利用此网站的一个vxd程序),from head=0 track=0 sector=1,并把它存入一个TXT文件中,结果是
“?
singwoo
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-03-12 13:47
singwoo:我按你的方法做了,结果与我前面说的有点类似,都有“Non-System diskette
Replace and press any key to reboot ”
这些东西,只是多了地址及16进制表示,这是boot sector吗,怎么获得fat表的大小,cluster的大小等信息
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-03-12 14:08
to index:
1. 这个方法在我机器上是没问题的.win98,win2000都没有问题.
2. boot sector 中有fat表和dir信息.
singwoo
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-03-12 14:23
singwoo:
你是说我这样做出现了问题吗?我是说怎么从其中获得fat表和dir信息
我的QQ:76300124
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-03-12 14:56

而我的意思是让你试一下软盘.因为你先想了解fat的格式.
而软盘是fat12的格式.比较简单.

我猜你出错的原因是你用你的那块不能识别硬盘来试的.
既然在windows下不能识别,当然要出错的了.

还有一种方法可以得到boot sector,就是用 norton diskedit
非常老了,但很管用.(只能在dos下用)

fat表信息和dir信息的索引的确在boot sector.你parse
一下就可以得到了.老早我做过fat文件系统的.

不好意思,QQ不能上.我不在国内.晚上我在家可以上QQ.
我的QQ是84070533











singwoo
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-03-12 15:24
非常感谢singwoo:
我是按你的方法做的,用的是软盘。结果是:

附件名称/大小 下载次数 最后更新
2002-03-12_debug.out.txt (3KB)  2
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-03-12 15:41

呵呵,不用谢.
不过你那个debug.out里的信息有点问题.建议format后再
输出一下debug.out.

还有,对boot sector parse时要注意字节顺序.
非intel 80x86的cpu要注意字节对齐.  
singwoo
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-03-12 16:02
singwoo:
我格式化后再做了一遍,是空盘,结果如下。
附件名称/大小 下载次数 最后更新
2002-03-12_debug.out.txt (3KB)  0
index
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-03-12 16:02
singwoo:
我格式化后再做了一遍,是空盘,结果如下。这回对了吗?
附件名称/大小 下载次数 最后更新
2002-03-12_debug.out.txt (3KB)  0
pinta
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2004-12-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-03-12 16:39
关于FAT16的资料可以在DOS使用手册中找到。
请教singwoo,我现在正在研究直接读写硬盘,并想在硬盘上建立操作系统可以识别的文件系统,所以对你所说的,用linux的分区工具查硬盘格式很感兴趣,你能不能说得清楚一些,谢谢了。
上一页
游客

返回顶部