yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2235回复:6

[讨论]如何检测硬盘坏扇区?

楼主#
更多 发布于:2004-06-10 09:54
检测一硬盘,看他有没有坏扇区,如何实现?我只想到下面这个:
读写pattern大法:先写再读(55 ,AA, 00, 11),二者相比,若不相同则肯定为坏扇区。缺点:耗时太长。
不知大家还有什么好办法?欢迎大家探讨,多谢
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于:2004-06-10 11:13
用ATA命令Read Verify Sector(s) (IDE硬盘)
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-10 11:15
那要是SCSI的硬盘呢?
yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-10 11:19
用ATA命令Read Verify Sector(s) (IDE硬盘)

对应的IOCTL是IOCTL_DISK_VERIFY吧?
yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-16 20:06
用ATA命令Read Verify Sector(s) (IDE硬盘)

现在取得了总的扇区数,不知道各个寄存器应该放什么数据?spec上面写的是LBA,我搞不清楚到底该怎么写?多谢!
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
5楼#
发布于:2004-06-17 08:09
LBA(logical block address)是硬盘的一种编(寻)址方式,范围从0到(总扇区数-1)。现在的硬盘都支持这个,如果是CHS参数的话,可以转换成LBA,转换公式在ATA规范里面有。
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-17 09:50
LBA(logical block address)是硬盘的一种编(寻)址方式,范围从0到(总扇区数-1)。现在的硬盘都支持这个,如果是CHS参数的话,可以转换成LBA,转换公式在ATA规范里面有。

我知道LBA,但是现在知道总的扇区数,如何求得各个寄存器的具体参数?转换公式就是这个吧:
LBA = (C1 * H0 + H1) * S0 + S1 - 1
Where:
C1 = Selected Cylinder Number
H0 = Number of Heads (Maximum Head Number + 1)
H1 = Selected Head Number
S0 = Maximum Sector Number
S1 = Selected Sector Number
假设现在一共10000个扇区,如何往计算各个寄存器填写什么?
ft,我菜
游客

返回顶部