有设备通过 1Gbit 以太网连接到 PC。WinXP/7 我想通过以下方式捕获数据:
- PC 向设备发送命令(启动数据采集)
- 设备正在向 PC 发送数据
- 用户应用程序等待获取
- 驱动程序将数据保存在内存中
- 设备发送命令通知已完成采集
- 驱动程序产生中断,用户应用程序开始从驱动程序读取数据
我不知道如何实现。有网卡驱动。有 NDIS。用户应用程序可以与 NDIS 通信吗?我需要编写额外的驱动程序来与 NDIS 通信吗?
有设备通过 1Gbit 以太网连接到 PC。WinXP/7 我想通过以下方式捕获数据:
我不知道如何实现。有网卡驱动。有 NDIS。用户应用程序可以与 NDIS 通信吗?我需要编写额外的驱动程序来与 NDIS 通信吗?
您的问题实际上有两个部分:
第一个问题有两种可能的解决方案,具体取决于您的设备是否接受封装在 IPv4/IPv6 中的命令,或者是否需要其他一些低级协议。如果设备接受封装在 IPv4/IPv6 中的命令,那么只需使用您喜欢的编程语言中的套接字 API。
如果设备需要自己的非 IP 协议,则需要添加 NDIS 协议驱动程序。Windows 驱动程序工具包中包含一个示例协议驱动程序;该驱动程序实质上打开了一个通道,允许用户模式应用程序发送任何类型的数据包。(如果它被广泛部署,这将是一个安全问题,这就是为什么它不是操作系统的内置功能。)您可能需要修改协议驱动程序以选择性地仅侦听来自您的设备的控制消息。
第二个问题——数据包捕获——已经解决了。您应该能够将现有软件下架并将其集成到您的解决方案中。 Microsoft 网络监视器有一个 API,您可以使用它轻松启动/停止数据包捕获,并遍历捕获的结果。或者,有些人使用 WinPcap。