阅读:1978回复:16
磁盘问题:请问我是用I/O来操作还是以INT 13来操作的好?请给实例
请问我是用I/O来操作还是以INT 13来操作的好?
请您给出实例,我从I/O里读出来的厂商写入的参数和其它方式 取得的不一样.数值都让已让我头大. 再别说读和写了操作了. 还有逻辑扇区和物理扇区的计算方式. 请写过这些程序的同志给实例. 正在看Linux内核分析,太长了,自己也慢慢找一些资料. 麻烦各位. Bini.Yi 2002/07/09 |
|
|
沙发#
发布于:2002-07-09 16:54
用IO太底层,你需要管的东西太多。
用int 13h要好些,BIOS替你干了不少事 |
|
|
板凳#
发布于:2002-07-09 21:11
不知道你所问的是什么意思?如果是在9X下,可以通过INT13的方式来读写磁盘,但是在NT/2K下是不可以的
|
|
地板#
发布于:2002-07-09 21:15
不知道你所问的是什么意思?如果是在9X下,可以通过INT13的方式来读写磁盘,但是在NT/2K下是不可以的 他显然不用操作系统 |
|
|
地下室#
发布于:2002-07-09 21:49
正在用int 13h 做但现在的问题是我取得的数值由谁说了算.
象int 13h这边取到的是239个head,而产商256字里头的是15个head. 我的是富土6.4G的笔记本硬盘.和日立的20G的笔记本硬盘. 取得的数值都不同.最后相剩的结果也是让人掉眼镜.可能是我看到的算法太多了吧.谁有一个正确的算法?或者用int 13h的哪个功能直接得到总扇区? 注:Bios支持int 13h扩展. |
|
|
5楼#
发布于:2002-07-09 21:50
正在用int 13h 做但现在的问题是我取得的数值由谁说了算.
象int 13h这边取到的是239个head,而产商256字里头的是15个head. 我的是富土6.4G的笔记本硬盘.和日立的20G的笔记本硬盘. 取得的数值都不同.最后相剩的结果也是让人掉眼镜.可能是我看到的算法太多了吧.谁有一个正确的算法?或者用int 13h的哪个功能直接得到总扇区? 注:Bios支持int 13h扩展. now,我正在试48H号功能.但是那个Qword值让又让我现在的大脑头晕了.我这两天算得太多了...都不相信计算机和自己了.请同志们能我一个算法. [编辑 - 7/9/02 by bini] |
|
|
6楼#
发布于:2002-07-09 21:58
正在用int 13h 做但现在的问题是我取得的数值由谁说了算. 劝你相信Bios的话吧,它如果错了,你的机器应该起不来了 |
|
|
7楼#
发布于:2002-07-10 00:04
其实支持扩展int13的话,就不用读磁头和磁道了,可以直接读扇区,因为它是线性的。
本人这两天也在搞这个,可是int13只能在dos的exe里调用,能在NE文件或VXD中调吗?你用的是什么方法? |
|
8楼#
发布于:2002-07-10 01:31
其实支持扩展int13的话,就不用读磁头和磁道了,可以直接读扇区,因为它是线性的。 应该可以在“NE文件或VXD中调”的吧!?! :( |
|
|
9楼#
发布于:2002-07-10 11:43
INT 13读出的是逻辑参数,厂商给出的的是物理参数,二者不一样是很正常的。直接调用INT 13是不会错的。除非是非常古老的硬盘,否则建议用LBA方式,CHS方式不能访问8.4G以上的区域。
|
|
|
10楼#
发布于:2002-07-10 12:50
请问用1nt13h 功能 48h取到的值.从10h到17h这两个QWORD值怎么算出总扇区数的?真是搞倒我算数都不会了啊!!
头都气大了. |
|
|
11楼#
发布于:2002-07-10 12:57
INT 13?在Intel x86机器上,INT 13不是被处理器保留用作一般保护异常中断吗?如果INT 13可以的话,那一般保护异常中断怎么处理?!
|
|
12楼#
发布于:2002-07-10 13:02
INT 13?在Intel x86机器上,INT 13不是被处理器保留用作一般保护异常中断吗?如果INT 13可以的话,那一般保护异常中断怎么处理?! 施主,他说的是实模式的 |
|
|
13楼#
发布于:2002-07-10 14:03
麻烦在写操作系统或Linux或对硬盘处理等各位同志的帮忙了.
:( 本人正计算中... |
|
|
14楼#
发布于:2002-07-10 15:48
引用:
/ 正在用int 13h 做但现在的问题是我取得的数值由谁说了算. 象int 13h这边取到的是239个head,而产商256字里头的是15个head. / 正如shyeagle兄说的,一个是逻辑参数,一个是物理参数,239是采用LBA模式读取的,是逻辑上的参数,16是物理参数,也即硬盘真正的磁头个数,建议好好看看有关INT 13,硬盘规格参数,LBA/NORMAL/LARGE模式的定义,调用INT 13有的给出的是逻辑参数,有的功能给出的是物理参数,MSDN中有扩展INT 13功能的说明,至于QWORD的访问,根据我的经验,比如内存中是这样的: aa bb cc dd ee ff gg hh 实际上的值应为hhggffeeddccbbaa,具体先看看手册上的说明,再实际上根据你硬盘的大小不难推断出应如何访问 |
|
15楼#
发布于:2002-07-10 16:23
终于被算出.谢谢各位,下面就是读写测试了.
这台笔记本的in13h 能读出物理参数.终于明白为什么了. Yanghui 回复正确. |
|
|
16楼#
发布于:2004-06-10 10:07
搭车问一下:如何检测硬盘有无坏扇区?坏扇区能不能写数据?
|
|