要知道容量大小,需先读取SATA设备的IDENTIFY DATA,默认略去此步。
假设已经读取出SATA Device Identify Data,读取word 100~103的LBA数据(CF卡需读取WORD 60~63)作为计算容量大小的数据源(记为S),
容量大小以G为单位,计算式为 size = (S / 2 / 1024 / 1024) / 93%
PS: 因为每个扇区为512B或者4K,因为测试用到的硬盘基本都小于3T,这里取512B计算,S/2后即可算得该设备上 1K数据空间的个数。
简化为,仅读取word 61,62(记为S2),忽略低16位数据,
size = (S2 / 2 / 16 + 1) / 93%
PS:
“+1” 的作用为, 可以保证显示值为整数,比如,显示为32.0G,而不是31.9G
93%为个人估算,93%~96%均可尝试一下
实测结果:固态硬盘,CF卡,机械硬盘均可以正确计算。