我想知道使用 NDIS 6.x 构建以太网桥的最佳选择和方法是什么。我应该从哪里开始,我应该使用哪个,Miniport、IM、协议或过滤驱动程序?
尝试自定义 WDK 中可用的协议驱动程序示例并成功连接到以太网适配器。接下来是什么?
任何帮助深表感谢。
使用 Windows 7x64
我想知道使用 NDIS 6.x 构建以太网桥的最佳选择和方法是什么。我应该从哪里开始,我应该使用哪个,Miniport、IM、协议或过滤驱动程序?
尝试自定义 WDK 中可用的协议驱动程序示例并成功连接到以太网适配器。接下来是什么?
任何帮助深表感谢。
使用 Windows 7x64
让我们看看可用的 NDIS 驱动程序类型:微型端口、轻量级筛选器和协议。
单独的NDIS 微型端口无法解决此问题,因为微型端口从主机操作系统接收数据包。您想要从网络接收数据包的东西。
NDIS 轻量级过滤器可以解决这个问题,但解决方案会有点笨拙。您必须在两个不相关的微型端口堆栈之间手动同步。这比看起来更难;之前尝试过的其他人在最初的几次尝试中都犯了这个错误。
NDIS 协议驱动程序是解决此问题的最佳方法。协议驱动程序旨在附加到多个微型端口,并且协议驱动程序能够将数据包从一个微型端口堆栈路由到另一个。
但是协议驱动程序缺少一项功能。如果您只是编写一个协议驱动程序,那么这就是驱动程序的排列方式:
[TCPIP] [YourProtocol]
| \ / |
| \/ |
| /\ |
| / \ |
[NIC0] [NIC1]
也就是说,主机的 TCPIP 堆栈将两个 NIC 视为单独的 NIC。(@Aczire,您在上一个问题中表示这对您来说没问题。但出于说明目的,这是故事的其余部分。)
NDIS 允许您使用MUX-IM 驱动程序解决此类问题。IM 驱动程序基本上只是粘在另一个微型端口上的协议。这使您可以准确控制主机操作系统看到的内容:
[TCPIP]
|
|
|
|
[YourMiniport]
[YourProtocol]
| |
| |
| |
| |
[NIC0] [NIC1]
使用这种架构,您可以欺骗主机操作系统,使其认为这两个网络是相同的。(例如,面向用户的 GUI 将显示一个网络适配器,而不是两个。)然而,IM 驱动程序需要付出相当大的复杂性成本:它们很难编写,甚至更难正确。除非您有丰富的经验和时间,否则我不建议您处理 IM 驱动程序。