Всем привет!
Вот, мучаюсь. Можно ли как-нибудь переключить винт из PIO в DMA и назад
используя DeviceIoControl и IOCTL_ATA_PASS_TROUGH
С уважением Вернигора. А.В.
Posted via RSDN NNTP Server 1.9
Соответственно во всех системах начиная с Win95 и заканчивая XP
Posted via RSDN NNTP Server 1.9
Здравствуйте, Darth Maul, Вы писали:
DM>Вот, мучаюсь. Можно ли как-нибудь переключить винт из PIO в DMA и назад
DM>используя DeviceIoControl и IOCTL_ATA_PASS_TROUGH
DM>Соответственно во всех системах начиная с Win95 и заканчивая XP
На сколько я знаю, IOCTL_ATA_PASS_THROUGH появился только в последних виндах семейства NT.
В более младших NT есть возможность посылать ATA SMART команды через IOCTL_SCSI_MINIPORT_xxx.
В принципе можно, но драйвер контроллера об этом скорее всего так и не узнает.
Дальше пойдет несогласованая работа винта, контроллера и драйвера, что как правило
заканчивается timeout'ом, bus-reset'ом и переинициализацией. Или вообще подвисанием.
По идее, это можно делать через WMI в w2k и старше (Device Manager как-то с этим справляется)
PS. отсутствие нормального API для управления ATA контроллером и подключенными
устройствами было одной из причин написания
вот этого.
Но оно пока еще сырое и на некотором железе сильно глючит.
--
Alter,
http://alter.org.ua
А вообще, есть доки по поводу того, как это можно зделать. Если не DeviceIoControl — то как иначе.
Posted via RSDN NNTP Server 1.9
Вот, нашел некий исходник посылания команд. На основе него, повырезав, конечно всякий ввод-вывод, написал следующую шнягу. Но, вот, не пойму, работает оно или нет. У меня XPSP2. Мож кто чего подскажет?
Posted via RSDN NNTP Server 1.9
Через NNTP не вышло, можно попробовать взять тут
http://www.rsdn.ru/File/38278/drvTST.rarPosted via RSDN NNTP Server 1.9