Я хочу читать диск большой емкости с помощью отправки команд ATA через DeviceIoControl (). Отправка команд с помощью 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 ТБ). Как отправить сектор не более 16777215. На самом деле мне приходится читать диск объемом до 4 ТБ.
Существует также CurrentTaskFile[5]
который является устройством / головным регистром. Его ассортимент зависит от емкости диска, например для диска 4Tb это от 0
в 127
, Таким образом, максимальное количество адресуемых секторов для этого диска 256*256*256*128 == 2147483648
что кажется достаточно.