Как определить, какой процесс использует последовательный порт? - PullRequest
25 голосов
/ 03 сентября 2008

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

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

Есть ли способ либо:

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

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

Ответы [ 3 ]

20 голосов
/ 03 сентября 2008

Вы можете использовать инструмент Process Explorer также из SysInternals для поиска открытых дескрипторов. В этом случае вы захотите выполнить поиск «Последовательный», поскольку он использует имена устройств, которые могут не сопоставляться с номерами портов. (например, COM1 - это \ Device \ Serial0 в моей системе).

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

7 голосов
/ 27 августа 2012

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

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

3 голосов
/ 03 сентября 2008

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

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

-Adam

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...