我目前正在尝试让 LBA 为我的 ATA 驱动程序工作,但我遇到了问题。
我的identify
函数返回 OK 并word 83;bit 10
设置了返回的标识数据,所以我的设备支持 LBA48。但是当我尝试获取 LBA48 扇区的总数(配置字 100-103)时,它给了我的零。在虚拟机中我有 1GB 磁盘集,但这个字段仍然为零。我还尝试获取 LBA28 扇区的数量 => 这是正确的扇区。
有趣的是,当我打印出来时heads * cylinders * sectors_per_track
,该值几乎与位于字 60-61 上的总 LBA28 扇区的值相同。它是2097152
总 LBA28 和 2096640 的h * c * s
. 这两个值的差是512
。
有人知道我在做什么错吗?有没有其他方法可以获取硬盘的大小?