Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 3
1

Драйвер-фильтр для COM порта

31.03.2014, 10:54. Просмотров 3350. Ответов 3
Метки нет (Все метки)


Всем привет и доброго времени суток!

//Я надеюсь кто-нибудь сможет мне помочь

Передо мной стоит задача создать драйвер-фильтр, который перехватывает сообщения передаваемые от некоего устройства по COM-порту на компьютер, если в сообщении имеется заданная последовательность выполнить некоторое действие (к примеру заменить AA на 11) и т.д.
продолжение задачи - отдельная тема...

Кто-нибудь может мне подсказать логику работы подобного фильтра?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2014, 10:54
Ответы с готовыми решениями:

Как написать драйвер для COM-порта
Люди, помогите написать драйвер для COM порта ... устройство: нажали на датчик и данные пошли в...

Драйвер для LPT порта (Windows 7 x32)
Данный код драйвера умеет только записывать данные в порт и читать их от туда. #include...

Свой драйвер COM порта для USB устройства
Всем здрасте... Хотелось бы услышать мнения профессионалов. В частности Убежденного:) видел много...

Драйвер для COM-порта
Доброго времени суток. Подскажите нужен ли драйвер на порт RS232 под windos7? Зарание спасибо за...

3
10214 / 6595 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
31.03.2014, 14:07 2
...а надо-ли драйвер еще.

Проще реализовать так: ваша программа работает с физическим COM-портом (или виртуальным over USB, если через конвертор подключено устройство) <-> чего надо делает с данными и пересылает на порт виртуального нуль-модемного кабеля (com0com, к примеру) <-> второй порт виртуального нуль-модемного кабеля завязан на то ПО, данные на который были модифицированы.
0
Ушел с форума
Эксперт С++
16414 / 7389 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
31.03.2014, 14:31 3
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

Цитата Сообщение от Rush18 Посмотреть сообщение
Кто-нибудь может мне подсказать логику работы подобного фильтра?
Логика работы практически всех фильтров более-менее схожа:

1) Находим целевое устройство. Например, по имени драйвера или
по имени девайса. Для PnP-устройств все проще, достаточно правильно
зарегистрироваться в системе и в драйвер будет приходить AddDevice с
нужным указателем.

2) Имея указатель на нижнее устройство в стеке, выполняем
IoAttachDeviceToDeviceStackSafe. При этом Major Table драйвера-фильтра
должна быть заполнена так, чтобы фильтровать все функции, идущие к
фильтруемому девайсу, иначе можно порушить стек.

Обычно делают примерно так:
C
1
2
3
4
for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; ++i)
{
    pDriverObj->MajorTable[i] = DispatchAny;
}
DispatchAny просто отправляет IRP вниз по стеку.
Для PnP-драйверов особой обработки требуют только запросы
IRP_MJ_POWER и IPR_MJ_PNP, все остальное можно сразу
передавать в DispatchAny.

3) Чтобы фильтровать открытие-закрытие устройства, нужно
повесить свои обработчики на IRP_MJ_CREATE, IRP_MJ_CLOSE, а
также IRP_MJ_READ/WRITE/DISPATCH_CONTROL и другие функции
ввода-вывода, конкретику следует искать в спецификации
драйвера. Например, драйвер класса клавиатуры "носит" скан-коды
через IRP_MJ_READ, эта инфа есть в MSDN.

Имея доступ к операциям ввода-вывода, можно "отменять" или
модифицировать данные на лету, задерживать их в стеке и т.д.

4) В более сложный случаях требуется установка функций
завершения, поддержка отмены, очередей и т.п.

Описание логики работы фильтров есть у Уолтера Они в его книге.
Куча примеров (с использованием WDF) в Windows Driver Kit (исходники).
1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 3
24.04.2014, 15:13  [ТС] 4
Разобрался с тем как работает драйвер-фильтр вцелом. Сделал хороший пример - написал драйвер к которому нужно обращаться через приложение и драйвер-фильтр, который, если включен меняет сообщения передаваемые между приложением/драйвером.

Но с COM портом все сложнее.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2014, 15:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Мне нужно написать драйвер для com порта, ubuntu подойдет для этого?
Сабж, вычитал на этом форуме, что драйвер для com порта не очень трудно написать на линуксе и...

User-mode драйвер / фильтр для сканера штрих-кодов. Какой правильный подход при разработке?
У меня сейчас стоит задача сделать некую программу или юзермодный драйвер если точнее, которая...

Драйвер для PCI-контроллера и последовательного порта PCI
Здравствуйте. Помогите, пожалуйста, найти драйвер для PCI-контроллера и последовательного порта...

Вызвать ZwOpenFile в примере input\moufiltr\moufiltr.c (драйвер-фильтр для мыши)
Задача следующая: нужно записывать в лог все действия пользователя с мышью (перемещения курсора и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.