Re: _asm {in/out } в NT подобной ОС?
От: magl Россия  
Дата: 29.12.10 08:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>можно ли использовать в nt подобной ОС в частности xp инструкции in/out ?


А>к примеру вот этот вот кусочек кода


А>
А>   __asm {
А>        push edx
А>            mov dx, io_Port
А>            mov eax, val
А>            out dx, eax
А>            pop edx
А>    }
А>

А> падает на
А>
А>out dx, eax
А>

А>с ексепшеном 0xC0000096: Privileged instruction.

В прямую так делать нельзя. Надо писать драйвер по правилам Папы Гейтса — WinDDK и иже с ним.
В кривую — есть два три с половиной обходных пути:
1. Попросить кого-нибудь кто знает как это делать (я знаю...).
2. Поискать в ИНЕТЕ что-то вроде Jungo kernel drivers (название могу перепутать)
Смысл в том, что ставится в систему драйвер, который дает замену функциям С outport, inport.
Цена вопроса -50 мкс на одиночное обращение к порту на машинах с 2-3 ГГц процессорами.
Заранее предупреждаю-прерывания от самопальных устройств обычно этим драйвером не поддерживаются.
3. Поискать в ИНЕТЕ драйвер (забыл название) который перестраивает IOPM процессора в результате чего
открывается доступ КО ВСЕМ портам. Ставить это на общедоступную машину не советую-может рухнуть Ось.
Последний раз играл в эти игры на Win2000. На Хр были какие-то мелкие проблемы, но решать их не стал, а стал честно писать драйвера.

3 с половиной. Реанимировать Win95-98. Там такие игры с прямым доступом к портам ненаказуемы — IOPM в "правильном" состоянии.


Удачи!
To err is human... (C)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.