Перейти к содержанию
    

Возможно ли программно создать виртуальный COM порт?

Возможно ли без написания драйвера UMDF/KMDF и без применения готового ПО, вроде com0com, создать при помощи WinAPI приложение, которое бы имитировало бы работу COM порта в операционной системе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, для регистрации устройства нужны возможности драйвера уровня ядра ОС. Прикладное ПО так не может (в общем случае).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну можно перехватить вызовы CreateFile, SetCommState, read, write...

так, что некое приложение вполне будет думать что работает с портом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 часа назад, _pv сказал:

ну можно перехватить вызовы CreateFile, SetCommState, read, write...

Вопрос был про "создать COM-порт", а не про перехват работы с готовым.

Хотя: Если перехватить все возможные способы получения списка COM-портов win-приложениями и добавлять через них в список свой порт, то можно попробовать. Но это будет посложнее перехвата всех CreateFile/WriteFile/ReadFile вместе взятых. Так что - проще будет драйвер написать. имхо.  :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, jcxz said:

Вопрос был про "создать COM-порт", а не про перехват работы с готовым.

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

скорее всего речь про какую-то конкретную стороннюю программу которой надо подсунуть свой виртуальный порт и смотреть что она шлёт /подсовывать в ответ свои данные.

и выяснить каким именно способом данная конкретная программа получает список портов и перехватить ещё и его (а то вдруг оно там вообще руками в текстовом конфиг файле задано?) имхо всё же проще написания драйверов. тем более что ТС именно этого и не хочет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А просто вставить usb адаптер с двумя-четырьмя портами ?
Чем Com2com не угодил, тоже непонятно.

Пусть пишет драйвер или dll свою тогда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, _pv said:

надо подсунуть свой виртуальный порт и смотреть что она шлёт

Это легко сделать снифером, представляющим собой или просто два терминала, подключенным к Tx и Rx, или терминала и своей софтинки, пропускающей через себя трафик с Rx и делающей в нём нужные подмены.

 

13 hours ago, x893 said:

Com2com

com0com в исходниках выложен и, наверно, его можно использовать как каркас своего драйвера СОМ-порта.

 

А вообще, если бы ТС описал подробней свою задумку, то, возможно, и готовое решение для можно было бы найти. Тема СОМ-портов хорошо распахана, много чего для неё накодили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.01.2023 в 19:13, _pv сказал:

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

Я не о том вообще. Я имел в виду, что ваш способ никак не годится, если в системе нет ни одного COM-порта. Или точнее: "ни одного свободного, не используемого в данный момент COM-порта". А если программа работы с COM-портом создаётся для заказчика, а не как какой-то временный инструмент "чисто для себя", то она должна быть рассчитана и на такой случай.

В 09.01.2023 в 19:13, _pv сказал:

и выяснить каким именно способом данная конкретная программа 

Какая "конкретная программа"??? О чём вы вообще?  :wacko2:

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

А не пытается пропатчить какую-то конкретную программу, как вы почему-то решили.

Или вы советуете реверсить все существующие программы работы с COM-портами?  :))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.01.2023 в 18:31, x893 сказал:

А просто вставить usb адаптер с двумя-четырьмя портами ?

А как это поможет в решении задачи ТС???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, jcxz said:

Виден для любых других программ (так как не указана конкретная программа)

Вы сейчас ровно так же выдумываете что нужно ТСу, а что ему на самом деле надо никто кроме него этого не скажет.

Хорошо, пусть перехватывать вызовы системных функий это фу и вообще нельзя так, что тогда делать-то ему предлагаете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 минут назад, _pv сказал:

Хорошо, пусть перехватывать вызовы системных функий это фу и вообще нельзя так,

Почему "нельзя"? Я же писал, что можно. Только проще имхо будет изучить написание драйверов.

26 минут назад, _pv сказал:

что тогда делать-то ему предлагаете?

Снимать штаны и бегать.

1. Изучить создание драйверов и создать.

2. Поискать готовые библиотеки содания виртуальных COM-портов (вроде здесь было, но не уверен что сейчас есть: https://tibbo.com/soi/software.html ) 

3. Поискать другой путь решения задачи, не требующий создания виртуального COM.

4. Ваш способ, добавив перехват всех способов получения списка COM-портов в системе.

1 или 2 или 3 или 4.

Можно конечно просто создать пару COM-порт <-> IP:порт, средствами самого TDST. И работать через TCP-сокет. Но это тоже будет колхозно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/8/2023 at 3:16 PM, makc said:

Нет, для регистрации устройства нужны возможности драйвера уровня ядра ОС. Прикладное ПО так не может (в общем случае).

Большое спасибо за ответ по существу! Мне нужно, чтобы функционал моего приложения создавал в диспетчере устройств COM-порт в отсутствие внешних подключений. Я начал погружаться в тематику написания драйверов, но решил уточнить: зря или не зря. Если создание виртуального COM-порта невозможно без написания драйвера, то не зря.

On 1/9/2023 at 3:51 PM, jcxz said:

Вопрос был про "создать COM-порт", а не про перехват работы с готовым.

Большое спасибо, что вы есть! На форумах хватает "советчиков", которые на самом деле не знают ответа на конкретный вопрос, но отписаться желают. Потому они читают исходный вопрос через слово, перемешивают отдельные фразы в голове, формулируют какой-то свой вопрос и на него же отвечают. Это просто бич электронного комьюнити!

 

Ещё один важный вопрос: кто разбирается в написании драйверов для Windows и может за деньги проконсультировать меня по Скайпу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, flammmable сказал:

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

Посмотрите примеры из DDK: https://github.com/microsoft/Windows-driver-samples/tree/main/serial

4 минуты назад, flammmable сказал:

Ещё один важный вопрос: кто разбирается в написании драйверов для Windows и может за деньги проконсультировать меня по Скайпу?

Лично я не вижу в этом смысла, т.к. консультации в общем не заменят чтения (хотя бы по диагонали) трудов Марка Руссиновича, а в частности не дадут реализации нужного вам драйвера. Поэтому с моей точки зрения лучше всего вдумчиво прочитать https://www.osr.com/getting-started-writing-windows-drivers/ и те части книг, на которые там приводятся ссылки, поизучать примеры и далее задавать вопросы по конкретным проблемам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/13/2023 at 9:00 AM, makc said:

Лично я не вижу в этом смысла, т.к. консультации в общем не заменят чтения (хотя бы по диагонали) трудов Марка Руссиновича, а в частности не дадут реализации нужного вам драйвера. Поэтому с моей точки зрения лучше всего вдумчиво прочитать https://www.osr.com/getting-started-writing-windows-drivers/ и те части книг, на которые там приводятся ссылки, поизучать примеры и далее задавать вопросы по конкретным проблемам.

Вместо Марка Руссиновича я читаю Павла Йосифовича ) Я уже выкачал WDK, настроил Visual Studio, создал виртуалку с Windows, вывел через KdPrint("Hello, world!"). И по скопипащенному из книги примеру при помощи драйвера и консольного приложения поменял приоритет треда. 

Да, консультации не заменят чтения, но заметно ускорят процесс, так как чтиву не задашь уточняющий вопрос.

Вообще, мой опыт запросов платных консультаций говорит о несколько парадоксальной ситуации. Задаёшь вопрос на форуме:
- <Вопрос>
- <Странный, не раскрывающий суть ответ>
[я не про текущий случая, а в целом; здесь вы сразу, лаконично, ёмко и по сути ответили]
- Вы рассказываете здесь что-то не то.
- А что вы хотели? Здесь всё бесплатно и добровольно, нам за это не приплачивают, между прочим.
- Хорошо, давайте за деньги.
- Ой, вы знаете, я, на самом деле, не специалист, а если и специалист, то давно этим не занимался, а если и занимался недавно то... Ой птичка, смотрите-смотрите! <убегает в противоположную сторону>

 

Непонятный феномен )))



Ну да ладно. Попробую позадавать вопросы в данном разделе по мере возникновения )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...