Получение доступа к портам жесткого диска в Windows 7?
Как получить доступ к портам жёсткого диска в Windows 7, используя Delphi или С/C++?
В основном интересуют интерфейсы SATA и IDE. В Windows XP такой проблемы не возникает. Решение через Virtual PC (всякие XP Mode) или другие виртуальные машины с использованием Win XP не годятся.
Для WinXP доступ получали как раз через драйвер, но в Windows Vista/7 он напрочь отказался работать, так как я полагаю какие-то механизмы поменялись. Интересна именно сама методика по которой можно написать драйвер или же уже готовый драйвер.
защищенный режим и доступ к портам из третьего кольца — вещи не совместимые
Вы неправы, доступ к портам ввода/вывода на x86 регулируется IOPL и маской разрешений ввода вывода в TSS. Т.е. можно разрешить доступ к портам всем кольцам защиты 0-N, где N — значение IOPL, а можно отдельным задачам разрешить доступ к определённым портам, установви биты в маске доступа.
Со времён NT существовали драйвера, с помощью которых можно было через IOCTL поменять эту маску для процесса. Лёгкий гуглинг подсказывает, например drivers.downloadatoz.com/vendor_other_type_miscellaneous/130412,porttalk-windows-nt-i-o-port-device-driver-2-2/
Другое дело, что современные SATA контроллеры предоставляют интерфейс AHCI, использующий ввод/вывод отображённый в память, вместо портов.