C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Перехват прерывания из BCB6
John
  Отправлено: 17.04.2006, 14:31


Ученик-кочегар

Группа: Участник
Сообщений: 4



Подскажите пожайлуста! Как мне утановить вектор прерывания под winXP, и существуют ли стандартные способы используя только функции Win_api? Если нет то хотя бы аналоги dos-овских getvect() и setvect()? Спасибо!
Guest
Отправлено: 17.04.2006, 15:31


Не зарегистрирован







QUOTE
Как мне утановить вектор прерывания под winXP

На уровне простого приложения об этом лучше забыть. Временя dos'овской "вольницы" ушли. smile.gif
John
Отправлено: 20.04.2006, 15:23


Ученик-кочегар

Группа: Участник
Сообщений: 4



А как мне тогда поступить?
Konstantine
Отправлено: 20.04.2006, 21:57


Мастер участка

Группа: Модератор
Сообщений: 545



читать ddk для ХР
и писать dll для 0-го кольца защиты... средствами Builder-а не рекомендую
John
Отправлено: 21.04.2006, 09:04


Ученик-кочегар

Группа: Участник
Сообщений: 4



dll 0-го кольца защиты это я так понимаю имеется ввиду драйвер режима ядра, а прерывания пускай даже программные перехватить тоже нужно! НО ЧЕМ???
Но должны же быть какие-нибудь стандартные WinApi-функции для отслеживания прерывания (программного или аппаратного) в WinXP!!?
Георгий
Отправлено: 21.04.2006, 10:26


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



они есть, но только для нулевого кольца.
читай DDK и использую MS VC

по программным прерываниям уже давно не работают — в защищённом режиме используют вызовы шлюза задачи и механизмы соощений.

а ещё лучше будет, если расскажешь зачем тебе перехватывать прерывание — наверняка удастся обойтсь без явного перехвата.

Отредактировано Георгий — 21/04/2006, 11:28
John
Отправлено: 22.04.2006, 08:02


Ученик-кочегар

Группа: Участник
Сообщений: 4



Есть устройство весит на ISA шине, содержащие три 8-ми разрядных счетчика и один из его аппаратных прерывания. Нужно читать из пользовательского приложения по прерыванию эти счётчики. В ДОСе всё работает, но нужно организовать под Винду причем ХПишную. Нашел описание простейшего драйвера, подправил, вроде подходит! Только вот непонятно как из приложения отследить это прерывание! То-ли отсследить по какому нибудь флагу через драйвер, но нежелательно т.к. IOCTL-запросами пользоваться плохо умею! Тут и пришло на ум, что мож кто знает стандартный интерфейс отслеживание этого прерывания из пользовательского приложения! smile.gif
Георгий
Отправлено: 22.04.2006, 11:17


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



да.. это не хухры мухры...
можно попробовать так:
1. драйвер эмулирует com порт и отправляет в него посылку, когда приходит прерывание. прога вешает поток на работу с com портом и поток обрабатывает прерывания и считывает данные с железки.

или ещё лучше — драйвер ловит прерывание, и шлёт в ком порт все собранные им железкой данные, а прога их считывает из порта

2. а всё остальное через IOCTL-запросы...

Вернуться в Работа с внешними устройствами