flammmable 4 8 января, 2023 Опубликовано 8 января, 2023 · Жалоба Возможно ли без написания драйвера UMDF/KMDF и без применения готового ПО, вроде com0com, создать при помощи WinAPI приложение, которое бы имитировало бы работу COM порта в операционной системе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 8 января, 2023 Опубликовано 8 января, 2023 · Жалоба Нет, для регистрации устройства нужны возможности драйвера уровня ядра ОС. Прикладное ПО так не может (в общем случае). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 71 8 января, 2023 Опубликовано 8 января, 2023 · Жалоба ну можно перехватить вызовы CreateFile, SetCommState, read, write... так, что некое приложение вполне будет думать что работает с портом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 9 января, 2023 Опубликовано 9 января, 2023 · Жалоба 23 часа назад, _pv сказал: ну можно перехватить вызовы CreateFile, SetCommState, read, write... Вопрос был про "создать COM-порт", а не про перехват работы с готовым. Хотя: Если перехватить все возможные способы получения списка COM-портов win-приложениями и добавлять через них в список свой порт, то можно попробовать. Но это будет посложнее перехвата всех CreateFile/WriteFile/ReadFile вместе взятых. Так что - проще будет драйвер написать. имхо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 71 9 января, 2023 Опубликовано 9 января, 2023 · Жалоба 22 minutes ago, jcxz said: Вопрос был про "создать COM-порт", а не про перехват работы с готовым. я не думаю что ТСу надо просто создать порт только для того, чтобы его было видно в device manager. скорее всего речь про какую-то конкретную стороннюю программу которой надо подсунуть свой виртуальный порт и смотреть что она шлёт /подсовывать в ответ свои данные. и выяснить каким именно способом данная конкретная программа получает список портов и перехватить ещё и его (а то вдруг оно там вообще руками в текстовом конфиг файле задано?) имхо всё же проще написания драйверов. тем более что ТС именно этого и не хочет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 9 января, 2023 Опубликовано 9 января, 2023 · Жалоба А просто вставить usb адаптер с двумя-четырьмя портами ? Чем Com2com не угодил, тоже непонятно. Пусть пишет драйвер или dll свою тогда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 42 10 января, 2023 Опубликовано 10 января, 2023 · Жалоба 13 hours ago, _pv said: надо подсунуть свой виртуальный порт и смотреть что она шлёт Это легко сделать снифером, представляющим собой или просто два терминала, подключенным к Tx и Rx, или терминала и своей софтинки, пропускающей через себя трафик с Rx и делающей в нём нужные подмены. 13 hours ago, x893 said: Com2com com0com в исходниках выложен и, наверно, его можно использовать как каркас своего драйвера СОМ-порта. А вообще, если бы ТС описал подробней свою задумку, то, возможно, и готовое решение для можно было бы найти. Тема СОМ-портов хорошо распахана, много чего для неё накодили. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 10 января, 2023 Опубликовано 10 января, 2023 · Жалоба В 09.01.2023 в 19:13, _pv сказал: я не думаю что ТСу надо просто создать порт только для того, чтобы его было видно в device manager. Я не о том вообще. Я имел в виду, что ваш способ никак не годится, если в системе нет ни одного COM-порта. Или точнее: "ни одного свободного, не используемого в данный момент COM-порта". А если программа работы с COM-портом создаётся для заказчика, а не как какой-то временный инструмент "чисто для себя", то она должна быть рассчитана и на такой случай. В 09.01.2023 в 19:13, _pv сказал: и выяснить каким именно способом данная конкретная программа Какая "конкретная программа"??? О чём вы вообще? Вроде из стартового сообщения ТС ясно, что автор создаёт некий сервис в системе, который должен быть виден для других программ как COM-порт. Виден для любых других программ (так как не указана конкретная программа). А не пытается пропатчить какую-то конкретную программу, как вы почему-то решили. Или вы советуете реверсить все существующие программы работы с COM-портами? :)))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 10 января, 2023 Опубликовано 10 января, 2023 · Жалоба В 09.01.2023 в 18:31, x893 сказал: А просто вставить usb адаптер с двумя-четырьмя портами ? А как это поможет в решении задачи ТС??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 71 10 января, 2023 Опубликовано 10 января, 2023 · Жалоба 41 minutes ago, jcxz said: Виден для любых других программ (так как не указана конкретная программа) Вы сейчас ровно так же выдумываете что нужно ТСу, а что ему на самом деле надо никто кроме него этого не скажет. Хорошо, пусть перехватывать вызовы системных функий это фу и вообще нельзя так, что тогда делать-то ему предлагаете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 10 января, 2023 Опубликовано 10 января, 2023 · Жалоба 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-сокет. Но это тоже будет колхозно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 10 января, 2023 Опубликовано 10 января, 2023 · Жалоба Да @flammmable это не нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flammmable 4 13 января, 2023 Опубликовано 13 января, 2023 · Жалоба On 1/8/2023 at 3:16 PM, makc said: Нет, для регистрации устройства нужны возможности драйвера уровня ядра ОС. Прикладное ПО так не может (в общем случае). Большое спасибо за ответ по существу! Мне нужно, чтобы функционал моего приложения создавал в диспетчере устройств COM-порт в отсутствие внешних подключений. Я начал погружаться в тематику написания драйверов, но решил уточнить: зря или не зря. Если создание виртуального COM-порта невозможно без написания драйвера, то не зря. On 1/9/2023 at 3:51 PM, jcxz said: Вопрос был про "создать COM-порт", а не про перехват работы с готовым. Большое спасибо, что вы есть! На форумах хватает "советчиков", которые на самом деле не знают ответа на конкретный вопрос, но отписаться желают. Потому они читают исходный вопрос через слово, перемешивают отдельные фразы в голове, формулируют какой-то свой вопрос и на него же отвечают. Это просто бич электронного комьюнити! Ещё один важный вопрос: кто разбирается в написании драйверов для Windows и может за деньги проконсультировать меня по Скайпу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 13 января, 2023 Опубликовано 13 января, 2023 · Жалоба 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/ и те части книг, на которые там приводятся ссылки, поизучать примеры и далее задавать вопросы по конкретным проблемам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flammmable 4 13 января, 2023 Опубликовано 13 января, 2023 · Жалоба 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!"). И по скопипащенному из книги примеру при помощи драйвера и консольного приложения поменял приоритет треда. Да, консультации не заменят чтения, но заметно ускорят процесс, так как чтиву не задашь уточняющий вопрос. Вообще, мой опыт запросов платных консультаций говорит о несколько парадоксальной ситуации. Задаёшь вопрос на форуме: - <Вопрос> - <Странный, не раскрывающий суть ответ> [я не про текущий случая, а в целом; здесь вы сразу, лаконично, ёмко и по сути ответили] - Вы рассказываете здесь что-то не то. - А что вы хотели? Здесь всё бесплатно и добровольно, нам за это не приплачивают, между прочим. - Хорошо, давайте за деньги. - Ой, вы знаете, я, на самом деле, не специалист, а если и специалист, то давно этим не занимался, а если и занимался недавно то... Ой птичка, смотрите-смотрите! <убегает в противоположную сторону> Непонятный феномен ))) Ну да ладно. Попробую позадавать вопросы в данном разделе по мере возникновения ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться