cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
40楼#
发布于:2005-06-09 15:10
[quote]_NDIS_OPEN_BLOCK应该是每个网卡对应一个吧?

每个网卡都要调用NdisOpenAdapter函数,这样就会为每个网卡创建一个_NDIS_OPEN_BLOCK,理解没有错误吧?

我得机器有两个网卡,数据连续调用发送函数两次?为什么会这样?

[编辑 -  6/9/05 by  cyliu]

_NDIS_OPEN_BLOCK应该是NtOpenAdapter就会生成一个,如果两个协议,分别绑定到一块网卡,就应该是两个 [/quote]

我的理解是这样的:
首先,系统调用NdisRegisterProtocol函数,注册每个协议,形成一个协议表.

然后,只要存在一个网卡,就会调用一次NdisOpenAdapter函数,两个网卡就会调用两次,依次类推.其中参数NdisProtocolHandle应该是协议链句柄,NdisBindingHandle将会返回NIC的NDIS_OPEN_BLOCK1.

问题是:为什么每个协议_NDIS_PROTOCOL_BLOCK
会有NDIS_OPEN_BLOCK结构连表呢?按道理应该是一个协议_NDIS_PROTOCOL_BLOCK 只拥有一个NDIS_OPEN_BLOCK结构即可,但是ProtocolNextOpen明显是连表,到底是什么含义呢?

我在多网卡环境中替换了所有的NDIS_OPEN_BLOCK中发送函数,结果是在双网卡条件下调用了两次SendHandle函数,如果是三个就有可能调用三次SendHandle函数,为什么?

谢谢!

[编辑 -  6/9/05 by  cyliu]
走走看看开源好 Solaris vs Linux
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
41楼#
发布于:2005-06-09 23:25
问题是:为什么每个协议会有NDIS_OPEN_BLOCK结构连表呢?按道理应该是该协议只拥有一个NDIS_OPEN_BLOCK结构即可,但是ProtocolNextOpen明显是连表,到底是什么含义呢?

回复:一个协议可以绑定到多块网卡上,当然需要一个链表来保存NDIS_OPEN_BLOCK了!
上一页 下一页
游客

返回顶部