Windows 7 在WinXP/7上与NDIS通信

Windows 7 在WinXP/7上与NDIS通信,windows-7,windows-xp,drivers,ethernet,ndis,Windows 7,Windows Xp,Drivers,Ethernet,Ndis,有一个设备通过1Gbit以太网连接到PC。WinXP/7 我希望通过以下方式捕获数据: PC向设备发送命令(启动数据采集) 设备正在向PC发送数据 用户应用程序等待获取 驱动程序将数据保存在内存中 设备发送命令,通知其已完成采集 驱动程序生成中断,用户应用程序开始从驱动程序读取数据 我不知道如何实现这一点。 有一个网卡驱动程序。有NDIS。用户应用程序能否与NDIS通信? 我是否需要编写额外的驱动程序来与NDIS通信?您的问题实际上有两部分: 如何向设备发送命令 如何捕获从设备发送的数据 第一个

有一个设备通过1Gbit以太网连接到PC。WinXP/7 我希望通过以下方式捕获数据:

  • PC向设备发送命令(启动数据采集)
  • 设备正在向PC发送数据
  • 用户应用程序等待获取
  • 驱动程序将数据保存在内存中
  • 设备发送命令,通知其已完成采集
  • 驱动程序生成中断,用户应用程序开始从驱动程序读取数据
  • 我不知道如何实现这一点。 有一个网卡驱动程序。有NDIS。用户应用程序能否与NDIS通信?
    我是否需要编写额外的驱动程序来与NDIS通信?

    您的问题实际上有两部分:

  • 如何向设备发送命令
  • 如何捕获从设备发送的数据
  • 第一个问题有两种可能的解决方案,具体取决于您的设备是否接受封装在IPv4/IPv6中的命令,或者是否需要其他低级协议。如果设备接受IPv4/IPv6中封装的命令,则只需使用您喜爱的编程语言即可

    如果设备需要自己的非IP协议,则需要添加NDIS协议驱动程序。Windows驱动程序工具包中包含一个;这个驱动程序实际上打开了一个通道,允许用户模式应用程序发送任何类型的数据包。(如果广泛部署,这将是一个安全问题,这就是为什么它不是操作系统的内置功能。)您可能需要修改协议驱动程序,以便仅选择性地侦听来自设备的控制消息

    第二个问题——数据包捕获——已经解决。您应该能够将现有的软件从架子上取下来,并将其集成到您的解决方案中。有一个API,您可以使用它轻松启动/停止数据包捕获,并遍历捕获的结果。或者,有些人使用WinPcap