Здравствуйте, 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