|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 3
|
|
Драйвер-фильтр для COM порта31.03.2014, 10:54. Показов 5102. Ответов 3
Метки нет (Все метки)
Всем привет и доброго времени суток!
//Я надеюсь кто-нибудь сможет мне помочь Передо мной стоит задача создать драйвер-фильтр, который перехватывает сообщения передаваемые от некоего устройства по COM-порту на компьютер, если в сообщении имеется заданная последовательность выполнить некоторое действие (к примеру заменить AA на 11) и т.д. продолжение задачи - отдельная тема... Кто-нибудь может мне подсказать логику работы подобного фильтра?
0
|
|
| 31.03.2014, 10:54 | |
|
Ответы с готовыми решениями:
3
Как написать драйвер для COM-порта Драйвер для LPT порта (Windows 7 x32) Свой драйвер COM порта для USB устройства |
|
|
|
| 31.03.2014, 14:07 | |
|
...а надо-ли драйвер еще.
Проще реализовать так: ваша программа работает с физическим COM-портом (или виртуальным over USB, если через конвертор подключено устройство) <-> чего надо делает с данными и пересылает на порт виртуального нуль-модемного кабеля (com0com, к примеру) <-> второй порт виртуального нуль-модемного кабеля завязан на то ПО, данные на который были модифицированы.
0
|
|
|
Ушел с форума
|
|||||||
| 31.03.2014, 14:31 | |||||||
Сообщение было отмечено Taatshi как решение
Решение1) Находим целевое устройство. Например, по имени драйвера или по имени девайса. Для PnP-устройств все проще, достаточно правильно зарегистрироваться в системе и в драйвер будет приходить AddDevice с нужным указателем. 2) Имея указатель на нижнее устройство в стеке, выполняем IoAttachDeviceToDeviceStackSafe. При этом Major Table драйвера-фильтра должна быть заполнена так, чтобы фильтровать все функции, идущие к фильтруемому девайсу, иначе можно порушить стек. Обычно делают примерно так:
Для 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
|
|
| 24.04.2014, 15:13 | |
|
Помогаю со студенческими работами здесь
4
User-mode драйвер / фильтр для сканера штрих-кодов. Какой правильный подход при разработке? Драйвер для PCI-контроллера и последовательного порта PCI Вызвать ZwOpenFile в примере input\moufiltr\moufiltr.c (драйвер-фильтр для мыши) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 была полностью переписана на Си, в. . .
|