![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
TimeMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.9.2006 Репутация: нет Всего: нет |
Помогите пожалуйста решить одну проблему.
Ситуация такая: Есть программа, которая активно общается с устройством через СОМ-порт. Необходимо сделать программный эмулятор этого устройства (без применения каких-либо апаратных средств, таких как переходники с порта на порт), причем программа не должна знать, что общается с "подменой" настоящего устройства. Конечно, можна соединить между собой два порта компьютера кабелем. На один порт шлет свою информацию рабочая программа, на втором принимает программа-эмулятор устройства и на него же отсылает ответ. Но хотелось бы решить эту проблему, без привлечения каких-либо апаратных средств, и без использования дополнительных портов компьютера, поскольку они могут понадобиться для других целей... Тоесть, в и деале, хотелось бы чтобы это выглядело так: запускается рабочая программа настроенная для работы с каким-то СОМ-портом, после этого запускается программа-эмулятор устройства (которая каким-то образом получает данные отосланые первой программой на ее СОМ-порт и отправляет ей ответ, якобы от имени устройства, которое висит на СОМ-порте) и они себе преспокойно общаются (желательно, не подвешивая систему ![]() В связи с этим возникают несколько вопросов: Возможен ли перехват информации, которая поступает на СОМ-порт от одной программы, другой программой. Возможна ли отсылка информации программой, "от имени" СОМ-порта, другой программе (которой собственно и открыт этот порт, с правом монопольного доступа). Сначала я искал, что-то в функциях для роботы с СОМ-портом. Но, по-видимому, если какой-то программой получен дескриптор на один из СОМ-портов (они всегда открываются для монопольного доступа), то другие программы ничего не могут сделать с этим портом, пока не закрыт дескриптор первой программой. Тогда я начал искать возможность перехвата информации к порту. Единственное, что я нашел, о перехвате - в разделе Hooks документации MSDN, но там, я так понял, идет речь о перехвате сообщений для окон и т. п. Возможно ли вообще реализовать подобный принцип. и если возможно, то в каком направлении искать.. Это сообщение отредактировал(а) TimeMan - 25.10.2006, 16:38 |
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
О варианте перехвата вызова API-функций думал?
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
TimeMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.9.2006 Репутация: нет Всего: нет |
Об этом варианте думал, точнее слышал, что такое можно сделать. Но с WIN API я столкнулся сравнительно недавно, поэтому даже представления не имею, где начинать искать информацию об этом способе перехвата. К какому разделу MSDN, что ли, относится эта возможность, где находится описание работы с ней и т. п. не имею ни малейшего понятия. Поэтому, собственно, и обратился на форум....
|
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 4 Всего: 29 |
Перехват API функций в Windows NT (часть 1). Основы перехвата.
Перехват API функций в Windows NT (часть 2). Методы внедрения кода. Перехват API функций в Windows NT (часть 3). Нулевое кольцо. Перехватывай функции работы с файлами. (CreateFile, WriteFile, ReadFile, etc.) Это сообщение отредактировал(а) Damarus - 26.10.2006, 18:33 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |