2

我想使用通过 DeviceIoControl() 发送的 ATA 命令读取大容量磁盘。使用结构发送命令ATA_PASS_THROUGH_EX是主要问题。实际上CurrentTaskFile[]UCHAR类型的数组无法发送不大于 16777215 的扇区。

CurrentTaskFile[2] = 0xFF;
CurrentTaskFile[3] = 0xFF;
CurrentTaskFile[4] = 0xFF;


CurrentTaskFile[2] = 0xFF 是扇区号寄存器,
CurrentTaskFile[3] = 0xFF 是气缸低寄存器,
CurrentTaskFile[3] = 0xFF 是气缸高寄存器。

现在如果我想读取不超过 16777215 的扇区(如果我想读取 1 TB 磁盘的最后一个扇区)该怎么办。如何发送不超过 16777215 的扇区。实际上我必须读取容量高达 4 TB 的磁盘。

4

1 回答 1

2

还有CurrentTaskFile[5]哪个是设备/头寄存器。它的范围取决于磁盘容量,例如对于 4Tb 磁盘它是从0127。因此,该磁盘的最大可寻址扇区数256*256*256*128 == 2147483648似乎足够了。

于 2015-05-13T11:13:22.760 回答