gpt4 book ai didi

c++ - 如何通过 DeviceIoControl 功能使用 ATA 命令读取大磁盘(如 1 ,2 TB)?

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:31 24 4
gpt4 key购买 nike

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

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

也就是
CurrentTaskFile[2] = 0xFF 是扇区号寄存器,
CurrentTaskFile[3] = 0xFF 是 Cylinder 低寄存器,
CurrentTaskFile[3] = 0xFF 是 Cylinder High 寄存器。

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

最佳答案

还有 CurrentTaskFile[5] 是 Device/head 寄存器。它的范围depends on the disk capacity ,例如对于 4Tb 磁盘,它是从 0127。因此,该磁盘的最大可寻址扇区数是 256*256*256*128 == 2147483648,这似乎足够了。

关于c++ - 如何通过 DeviceIoControl 功能使用 ATA 命令读取大磁盘(如 1 ,2 TB)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30212509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com