监视已在使用的COM端口

时间:2010-05-17 14:08:13

标签: c# windows-xp serial-port

是否可以从已在Windows XP上使用的COM端口读取?

我希望看到某些软件和插入串行设备的设备之间的通信。我用C#编写了一个小程序来监视COM,但是一旦它被其他设备使用它就不会让你再次打开它。如何监控已使用的COM端口?

我对第三方软件持开放态度。

4 个答案:

答案 0 :(得分:8)

是的,这在技术上是可行的。您需要一个过滤器驱动程序,一种在本机串行端口驱动程序之前注入自身的组件的设备驱动程序类型。在将它们发送给常规驱动程序之前,它会对驱动程序IRP产生破坏。

这是SysInternals的PortMon实用程序使用的技术。但是,你不能在C#代码中编写这样的驱动程序,CLR无法加载到0环中。至少在超级秘密的Midori项目看到光明之前不会。

COM过滤器驱动程序很常见,例如,请查看this one。你必须做一些谷歌搜索才能找到一个有.NET包装器的人。

答案 1 :(得分:6)

PortMon是经典的COM端口监视器。它必须在程序打开COM端口之前运行,但可以启用/禁用监视部分。

答案 2 :(得分:2)

您可以使用Portmon for Windows来监控活动。我这样做的另一种方式是使用一些硬件和笔记本电脑。我不确定如何使用C#应用程序自行监控它。一旦连接到它并再次尝试连接,它就会被使用。

同样检查一下,它有点相关,并附有关于PortMon如何工作的说明:
Serial Port Redirection or Splitting - Stack Overflow

如果您有或可以获得多个COM端口,您可以使用分离器并从另一个端口进行监控。

答案 3 :(得分:2)

com0com可满足您的需求。它对我有用。