阅读:2328回复:6
[讨论]如何检测硬盘坏扇区?
检测一硬盘,看他有没有坏扇区,如何实现?我只想到下面这个:
读写pattern大法:先写再读(55 ,AA, 00, 11),二者相比,若不相同则肯定为坏扇区。缺点:耗时太长。 不知大家还有什么好办法?欢迎大家探讨,多谢 |
|
沙发#
发布于:2004-06-10 11:13
用ATA命令Read Verify Sector(s) (IDE硬盘)
|
|
|
板凳#
发布于:2004-06-10 11:15
那要是SCSI的硬盘呢?
|
|
地板#
发布于:2004-06-10 11:19
用ATA命令Read Verify Sector(s) (IDE硬盘) 对应的IOCTL是IOCTL_DISK_VERIFY吧? |
|
地下室#
发布于:2004-06-16 20:06
用ATA命令Read Verify Sector(s) (IDE硬盘) 现在取得了总的扇区数,不知道各个寄存器应该放什么数据?spec上面写的是LBA,我搞不清楚到底该怎么写?多谢! |
|
5楼#
发布于:2004-06-17 08:09
LBA(logical block address)是硬盘的一种编(寻)址方式,范围从0到(总扇区数-1)。现在的硬盘都支持这个,如果是CHS参数的话,可以转换成LBA,转换公式在ATA规范里面有。
|
|
|
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,我菜 |
|