如何确定哪个进程正在使用串行端口?

时间:2020-03-05 18:47:10  来源:igfitidea点击:

我工作的公司制造的硬件通过串行端口与计算机通信。第三方公司编写与我们的硬件通信的软件。

有时候我需要诊断我们的硬件。但是,Windows启动时,第三方软件应用程序将连接到串行端口,从而阻止任何其他连接。我不知道此应用程序/服务的名称,并且它并不总是相同的。

有什么办法可以:

  • 查找当前正在使用给定串行端口的应用程序/服务的名称/ pid,或者
  • 从另一个应用程序窃取串行端口连接。

vb.net最好,但我也会接受与语言无关的答案。

解决方案

回答

Sysinternals有许多实用程序,我发现它们对于跟踪系统正在执行的进程非常有用且具有教育意义。

他们有一个叫做Portmon的工具,可以完全满足需要,并在页面底部附近提供一些有关其工作方式的信息。如果实用程序不够用,该信息和一些问得很好的问题可能会为我们提供我们自己实现它所需的一切。

-亚当

回答

我们也可以从SysInternals使用流程浏览器工具来搜索打开的句柄。在这种情况下,我们将要搜索"串行",因为它使用的设备名称可能未映射到COM端口号。 (例如,我系统上的COM1为\ Device \ Serial0)。

如果要从另一个应用程序控制串行端口,我认为我们需要驱动程序的配合。