Я хочу прочитать диск большой емкости, используя команды ATA, отправляющие через DeviceIoControl(). Передача команд с использованием структуры ATA_PASS_THROUGH_EX
является основной проблемой. На самом деле CurrentTaskFile[]
arary из UCHAR
типа не в состоянии послать сектор не больше, чем 16777215.Как читать большой диск (например, 1, 2 ТБ) с помощью команд ATA через функцию DeviceIoControl?
CurrentTaskFile[2] = 0xFF;
CurrentTaskFile[3] = 0xFF;
CurrentTaskFile[4] = 0xFF;
Это
CurrentTaskFile[2] = 0xFF
не является номер сектора регистра,
CurrentTaskFile[3] = 0xFF
является цилиндр низкого регистра,
CurrentTaskFile[3] = 0xFF
является цилиндр высокого регистра ,
Теперь, что делать, если я хочу читать сектора не более 16777215 (Если я хочу прочитать последний сектор диска 1 ТБ). Как отправить сектор не более 16777215. На самом деле я должен читать диск с емкостью до 4 ТБ.
Спасибо @AntonSavin за вашу помощь. Но я не могу понять, как использовать регистр CurrentTaskFile [5] (Device/head) в других регистрах. Можете ли вы описать, как читать сектор не более 16777215 с комбинацией всех остальных регистров (CurrentTaskFile [2], CurrentTaskFile [3], CurrentTaskFile [4]). Пожалуйста помоги. – Sam
@ Сэм Я не совсем понимаю ваш вопрос. Просто установите соответствующие значения (номер сектора, номер цилиндра и номер главы) и прочитайте любой сектор, который вы хотите. –