有通过1Gbit以太网连接到PC的设备。的WinXP / 7 我想以下列方式捕获数据:
我不知道如何实现它。 有网卡驱动程序。有NDIS。用户应用程序可以与NDIS通信吗? 我是否需要编写额外的驱动程序来与NDIS进行通信?
答案 0 :(得分:2)
你的问题确实有两个部分:
第一个问题有两种可能的解决方案,具体取决于您的设备是否接受封装在IPv4 / IPv6中的命令,或者是否需要其他一些低级协议。如果设备接受封装在IPv4 / IPv6中的命令,则只需使用您喜欢的编程语言中的the sockets API。
如果设备需要自己的非IP协议,则需要添加NDIS协议驱动程序。 Windows驱动程序工具包中包含sample protocol driver;此驱动程序实质上打开一个通道,允许用户模式应用程序发送任何类型的数据包。 (如果广泛部署,这将是一个安全问题,这就是为什么它不是操作系统的内置功能。)您可能需要修改协议驱动程序以选择性地仅侦听来自设备的控制消息。
第二个问题 - 数据包捕获 - 已经解决。您应该可以从现成的软件中提取现有软件并将其集成到您的解决方案中。 Microsoft Network Monitor有一个API,可用于轻松启动/停止数据包捕获,并迭代捕获的结果。或者,有些人使用WinPcap。