WinXPe NDIS 5.1多端口

时间:2012-04-04 19:51:42

标签: device-driver ndis

拥有一个包含三个NIC的PCI设备,由Altera以太网核心提供。必须为WinXPe实现NDIS 5.1。 MVP建议为每个核心实现一个WDM驱动程序,然后是单个NDIS驱动程序,它与各个WDM驱动程序进行通信,我不明白,因为单个NDIS驱动程序似乎没有任何多个端口或通道的概念。 / p>

如果在DriverEntry上为每个以太网核心调用一次名为NdisMInitializeWrapper的NDIS驱动程序怎么办?它需要每次使用相同的DriverObject调用,但可能会在每次调用时返回不同的NdisWrapperHandle。该独特的NdisWrapperHandle可用作调用所有其他NDIS驱动程序函数的上下文说明符。

1 个答案:

答案 0 :(得分:0)

这不起作用;每个驱动程序只能调用一次NdisMInitializeWrapper。

规则是:每个网络接口需要一个设备节点。因此,如果您需要3个以太网接口,则系统中需要3个设备节点。有几种方法可以实现目标:

  1. PCI总线将为每个PCI功能编号创建一个设备节点。如果您的PCI设备向总线公开3个功能,则Windows将枚举3个微型端口设备对象。这使得驱动程序非常简单。但是,显然,你必须能够重新调整硬件才能做到这一点。

  2. 或者,如果您只使用一个具有一个PCI功能的PCI设备,则需要自己复用PCI枚举的设备节点。这意味着您应该创建自己的虚拟总线驱动程序(VBD)。 PCI总线枚举一个设备节点,该节点与VBD的驱动程序相关联。然后你的VBD转过来并枚举3个子节点,每个子节点都与一个微型端口相关联。

    这种方法需要花费更多的工作,因为现在你需要编写两个驱动程序。幸运的是,WDF使得为公共汽车司机编写公共汽车司机成为可能。您的VBD需要实现代码以在子网络微型端口之间共享资源(中断,配置空间)。

  3. 大牌供应商对于他们是选择#1还是选项#2存在分歧,因此都可以工作。根据您的描述,听起来您已经获得了实施VBD的建议。