John |
Отправлено: 17.04.2006, 14:31 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
Подскажите пожайлуста! Как мне утановить вектор прерывания под winXP, и существуют ли стандартные способы используя только функции Win_api? Если нет то хотя бы аналоги dos-овских getvect() и setvect()? Спасибо! |
|
Guest |
Отправлено: 17.04.2006, 15:31 |
|
Не зарегистрирован
|
QUOTE | Как мне утановить вектор прерывания под winXP |
На уровне простого приложения об этом лучше забыть. Временя dos'овской "вольницы" ушли. |
|
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-запросами пользоваться плохо умею! Тут и пришло на ум, что мож кто знает стандартный интерфейс отслеживание этого прерывания из пользовательского приложения! |
|
Георгий |
Отправлено: 22.04.2006, 11:17 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
да.. это не хухры мухры...
можно попробовать так:
1. драйвер эмулирует com порт и отправляет в него посылку, когда приходит прерывание. прога вешает поток на работу с com портом и поток обрабатывает прерывания и считывает данные с железки.
или ещё лучше — драйвер ловит прерывание, и шлёт в ком порт все собранные им железкой данные, а прога их считывает из порта
2. а всё остальное через IOCTL-запросы... |
|