Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM порт в режиме мониторинга 
:(
    Опции темы
stallman
Дата 6.9.2011, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.10.2008

Репутация: нет
Всего: нет



Здравствуйте.

Необходимо читать из файла ком-порта занятого иной программой в Win32.
Подобные вещи существуют - AdvancedSerialPortMonitor например (функция spy(sniffer) mode).
Рыл в сторону CreateFile с параметрами share, но безрезультатно.

PM MAIL   Вверх
xvr
Дата 7.9.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(stallman @  6.9.2011,  13:35 Найти цитируемый пост)
Рыл в сторону CreateFile с параметрами share, но безрезультатно.

Угу, COM драйвер всегда открывает себя в эксклюзивном режиме. Так что ответ на ваш вопрос -
Цитата(stallman @  6.9.2011,  13:35 Найти цитируемый пост)
Необходимо читать из файла ком-порта занятого иной программой в Win32.

никак  smile 
Цитата(stallman @  6.9.2011,  13:35 Найти цитируемый пост)
Подобные вещи существуют - AdvancedSerialPortMonitor например

Только свой драйвер в ядро ОС  smile 


PM MAIL   Вверх
Dem_max
Дата 7.9.2011, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



неправда, есть программа portmon от майкрософт и вот как она работает http://technet.microsoft.com/ru-ru/sysinternals/bb896644
Цитата

Принцип работы программы:

ОС WinNT

Графический пользовательский интерфейс программы Portmon отвечает за определение последовательных и параллельных портов. Информация о последовательных портах берется из раздела реестра HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm, а о параллельных портах — из раздела HKEY_LOCAL_MACHINE\Hardware\DeviceMap\Parallel Ports. В этих разделах содержится соответствие имен, доступных с помощью вызовов Win32, именам устройств последовательных и параллельных портов.

После выбора порта для отслеживания программа Portmon отправляет запрос драйверу устройства. Этот запрос содержит NT-имя требуемого устройства (например, \device\serial0). Драйвер использует стандартные фильтрующие программные интерфейсы и присоединяет свой собственный фильтрующий объект устройства к требуемому объекту устройства. Сначала с помощью вызова функции ZwCreateFile открывается требуемое устройство. Полученный дескриптор преобразуется в указатель на объект устройства. После создания собственного фильтрующего объекта устройства, который соответствует характеристикам требуемого устройства, драйвер устанавливает этот фильтр с помощью вызова функции IoAttachDeviceByPointer. Начиная с этого момента драйвер программы Portmon будет видеть все запросы, адресованные этому устройству.

В программу Portmon включена поддержка всех стандартных команд управления IOCTL последовательными и параллельными портами. В большинстве случае для настройки и чтения информации о состоянии из портов в приложениях и драйверах используются именно эти команды. Они определены в файлах \ddk\src\comm\inc\ntddser.h и \ddk\src\comm\inc\ntddpar.h из пакета DDK. Некоторые из них документированы в пакете DDK.



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
xvr
Дата 7.9.2011, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Вот это -
Цитата(Dem_max @  7.9.2011,  17:46 Найти цитируемый пост)
После создания собственного фильтрующего объекта устройства, который соответствует характеристикам требуемого устройства,
и есть тот самый драйвер, который 'в ядре ОС'. 'фильтрующий объект' - это инстанс специального драйвера, который portmon и помещает в ядро


PM MAIL   Вверх
Dem_max
Дата 8.9.2011, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



portmon драйверов не устанавливает


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
xvr
Дата 8.9.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Dem_max @ 8.9.2011,  04:00)
portmon драйверов не устанавливает

Скачал и запустил portmon. Он создал рядом с собой файл PORTMSYS.SYS, загрузил его (в качестве драйвера) и стер.
В Winobj теперь фигурирует драйвер PORTMON и девайс Portmon
В реестре прописан драйвер PORTMON (в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PORTMON) с ключем
ImagePath = \??\C:\!1\PORTMSYS.SYS
(Запускал я Portmon из  C:\!1 как можно догадаться)

Так что то, что
Цитата

portmon драйверов не устанавливает
 несколько не соотвествует действительности  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0853 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.