Подтвердить что ты не робот

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

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

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

Есть ли какой-либо способ:

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

-Adam