Как мне определить, какой процесс использует последовательный порт?

StackOverflow https://stackoverflow.com/questions/42197

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Бывают моменты, когда мне нужно провести диагностику нашего оборудования.Однако стороннее программное обеспечение подключается к последовательному порту при запуске Windows, блокируя любое другое подключение.Я не знаю названия этого приложения / сервиса, и это не всегда одно и то же.

Есть ли какой-нибудь способ сделать то или другое:

  • Найдите имя / pid приложения / службы, которое в данный момент использует данный последовательный порт или
  • Украдите подключение к последовательному порту из другого приложения.

vb.net предпочтительно, но я также приму ответ, не зависящий от языка.

Это было полезно?

Решение

Вы можете использовать обозреватель процессов инструмент также из SysInternals для поиска открытых дескрипторов.В этом случае вы хотели бы выполнить поиск по "Serial", поскольку он использует имена устройств, которые могут не совпадать с номерами com-портов.(например,COM1 - это \Device\Serial0 в моей системе).

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

Другие советы

Как Роб Уокер сказал, вы можете узнать, кто использует последовательный порт, используя Обозреватель процессов.Большую часть времени набираю текст Ctrl+F и поиск "serial" покажет вам, у кого открыт последовательный порт, но я только что столкнулся с ситуацией, когда дескриптор моего последовательного порта "COM3" отображался как "\ Device \ VCP0".Это может показаться странным, потому что он работал под управлением VirtualBox с разъемом USB-to-serial.

Если поиск по "serial" и "device \ vcp" не дал вам никаких результатов, вы можете выяснить, как называются дескрипторы последовательных портов, открыв один из них с помощью известной программы.В обозревателе процессов отобразите нижнюю панель с открытыми дескрипторами каждого процесса, введя Ctrl+L.Щелкните процесс, который вы использовали для открытия последовательного порта, и просмотрите нижнюю панель, чтобы увидеть, какие дескрипторы выглядят так, как будто они могут быть последовательным портом.Вы можете открывать и закрывать порт во время поиска, и дескриптор файла должен появляться и исчезать, а также выделяться зеленым или красным цветом.Конечно, это возможно только в том случае, если у вас более одного последовательного порта или последовательный порт, который вы пытаетесь диагностировать, не всегда заблокирован каким-то таинственным процессом.

Системные интерфейсы имеет множество утилит, которые я нахожу очень полезными и познавательными для отслеживания того, что процессы делают с системой.

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

-Адам

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top