Добрый день! У меня есть нестандартный драйвер для COM порта. В ходе выполнения программы необходимо подменить стандартный драйвер COM порта на мой, а затем обратно. Подскажите пожалуйста, как это сделать.
Тогда вопрос: а как повеситься на прерывания стандартного COM порта? Как это сделать в vxd я знаю, но мой драйвер должен работать в 2k и XP
А там надо обрабьатывать перехваченные IRP запросы . На скока я понимаю IRP попадает в твой драйвер фильтр и ты его обрабатываешь ... Почитай 15 и 16 статьи Four-F , там подробно про фильтрацию написано.
Возможно я что-то где-то недочитал или недоискал, но как сделать свой обработчик прерываний от COM порта в драйвере-фильтре я не нашел.
1)А разве через MajorFunction можно подписаться на прирывание получения символа (именно это прерывание мне особо необходимо) 2)Как я понял, стандартный драйвер COM порта предусматривает единственный вариант уведомления: - посылая IOCTL_SERIAL_SET_WAIT_MASK подписываюсь на интерресующее меня событие (прием символа) - с помощью IOCTL_SERIAL_WAIT_ON_MASK в отдельном потоке драйвера ждем события. деспетчер I/O не возвращает управление этому потоку до тех пор пока не происходит ожидаемое событие. Но этот вариант меня не очень устраивает. Возможно существуют другие способы...
<font color="gray][ Ant123</font><!--color--><font color="gray]: А разве через MajorFunction можно подписаться на прирывание получения символа ]</font><!--color--> Нет, конечно. Просто из вопроса не очень ясно было зачем подменять драйвер.
>>управление этому потоку до тех пор пока не происходит >>ожидаемое событие. >>Но этот вариант меня не очень устраивает Ты наверное из тех, кто думает, что каждый новый СПЯЩИЙ поток жрёт системные ресурсы? Чем тебя это не устраивает? Ну состряпай APC. Только не знаю, работает ли эта технология в режиме ядра...