首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinXPe NDIS5.1多端口

WinXPe NDIS5.1多端口
EN

Stack Overflow用户
提问于 2012-04-05 03:51:42
回答 1查看 187关注 0票数 0

拥有一个包含三个网卡的PCI设备,由Altera以太网内核提供。必须为WinXPe实现,因此NDIS5.1。MVP建议为每个核心实现一个WDM驱动程序,然后实现一个与各个WDM驱动程序对话的NDIS驱动程序,我不理解这一点,因为单个NDIS驱动程序似乎没有任何多端口或通道的概念。

如果在DriverEntry中,NDIS驱动程序为每个以太网核心调用一次NdisMInitializeWrapper,结果会怎样?它每次都需要使用相同的DriverObject调用,但可能每次调用都会得到不同的NdisWrapperHandle。这个惟一的NdisWrapperHandle可以用作调用所有其他NDIS驱动程序函数的上下文说明符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-05 13:38:16

这是行不通的;每个驱动程序只能调用一次NdisMInitializeWrapper。

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

PCI

  • 总线将为每个功能编号创建一个设备节点。如果您的PCI设备向总线公开了3个函数,则Windows将枚举3个微型端口设备对象。这使得驱动程序变得非常简单。但是,显然,您必须能够重新调整硬件来执行this.
  1. Alternatively,如果您只能使用一个具有一个PCI功能的PCI设备,那么您需要自己多路复用PCI枚举的设备节点。这意味着您应该创建自己的虚拟总线驱动程序(VBD)。PCI总线枚举一个设备节点,该节点与VBD的驱动程序相关联。然后,您的VBD转向并枚举3个子节点,每个子节点都与一个微型端口相关联。

这种方法需要相当多的工作,因为现在您需要编写两个驱动程序。幸运的是,WDF使得为普通用户编写总线驱动程序成为可能。您的虚拟硬盘需要实现代码,以便在子网络微型端口之间共享资源(中断、配置空间)。

这些大牌供应商在选择选项#1还是选项#2的问题上存在分歧,因此这两个选项都可以工作。从你的描述中,听起来你已经得到了实现VBD的建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10018269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档