在Win XP / 7上与NDIS进行通信

时间:2012-09-19 12:59:00

标签: windows-7 windows-xp drivers ethernet ndis

有通过1Gbit以太网连接到PC的设备。的WinXP / 7 我想以下列方式捕获数据:

  1. PC向设备发送命令(启动数据采集)
  2. 设备正在向PC发送数据
  3. 用户申请等待获取
  4. 驱动程序将数据保存在内存中
  5. 设备发送命令以通知其已完成采集
  6. 驱动程序生成中断,用户应用程序开始从驱动程序读取数据
  7. 我不知道如何实现它。 有网卡驱动程序。有NDIS。用户应用程序可以与NDIS通信吗? 我是否需要编写额外的驱动程序来与NDIS进行通信?

1 个答案:

答案 0 :(得分:2)

你的问题确实有两个部分:

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

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

    第二个问题 - 数据包捕获 - 已经解决。您应该可以从现成的软件中提取现有软件并将其集成到您的解决方案中。 Microsoft Network Monitor有一个API,可用于轻松启动/停止数据包捕获,并迭代捕获的结果。或者,有些人使用WinPcap。