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

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

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

Студворк — интернет-сервис помощи студентам
Всем привет и доброго времени суток!

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

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

Кто-нибудь может мне подсказать логику работы подобного фильтра?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2014, 10:54
Ответы с готовыми решениями:

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

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

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

3
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
31.03.2014, 14:07
...а надо-ли драйвер еще.

Проще реализовать так: ваша программа работает с физическим COM-портом (или виртуальным over USB, если через конвертор подключено устройство) <-> чего надо делает с данными и пересылает на порт виртуального нуль-модемного кабеля (com0com, к примеру) <-> второй порт виртуального нуль-модемного кабеля завязан на то ПО, данные на который были модифицированы.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
31.03.2014, 14:31
Лучший ответ Сообщение было отмечено 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  [ТС]
Разобрался с тем как работает драйвер-фильтр вцелом. Сделал хороший пример - написал драйвер к которому нужно обращаться через приложение и драйвер-фильтр, который, если включен меняет сообщения передаваемые между приложением/драйвером.

Но с COM портом все сложнее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2014, 15:13
Помогаю со студенческими работами здесь

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

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

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

Драйвер для PCI-контроллера и последовательного порта PCI
Здравствуйте. Помогите, пожалуйста, найти драйвер для PCI-контроллера и последовательного порта PCI. Не знаю, что это такое, был бы...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru