我想使用通过DeviceIoControl()发送的ATA命令读取大容量磁盘。使用ATA_PASS_THROUGH_EX
结构发送命令是主要问题。实际上CurrentTaskFile[]
UCHAR
类型的CurrentTaskFile[2] = 0xFF;
CurrentTaskFile[3] = 0xFF;
CurrentTaskFile[4] = 0xFF;
类型无法发送不超过16777215的扇区。
CurrentTaskFile[2] = 0xFF
那是
CurrentTaskFile[3] = 0xFF
是扇区号寄存器,
CurrentTaskFile[3] = 0xFF
是Cylinder低位寄存器,
{{1}}是Cylinder High注册。
现在该怎么办,如果我想读取不超过16777215的扇区(如果我想读取1 TB磁盘的最后一个扇区)。如何发送扇区不超过16777215.实际上我必须读取容量高达4 TB的磁盘。
答案 0 :(得分:2)
还有CurrentTaskFile[5]
是设备/头注册。它的范围为depends on the disk capacity,例如从0
到127
的4Tb磁盘。因此,该磁盘的最大可寻址扇区数为256*256*256*128 == 2147483648
,这似乎已足够。