【问题标题】:Monitor a COM port already in use [closed]监控已在使用的 COM 端口 [关闭]
【发布时间】:2010-05-17 14:08:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# windows-xp serial-port


    【解决方案1】:

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

    这是 SysInternals 的 PortMon 实用程序使用的技术。但是,你不能用 C# 代码编写这样的驱动程序,CLR 不能加载到 ring 0。至少在超级机密的 Midori 项目出现之前不能。

    COM 过滤器驱动程序很常见,例如查看this one。不过,您必须进行一些谷歌搜索才能找到具有 .NET 包装器的产品。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 提醒您在其他程序打开 COM 端口之前运行 PortMon。
      【解决方案3】:

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

      也检查一下,它有点相关,并附上关于 PortMon 工作原理的说明:
      Serial Port Redirection or Splitting - Stack Overflow

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我也打算这样做
        猜你喜欢
        • 2012-03-04
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多