40楼#
发布于:2005-06-09 15:10
[quote]_NDIS_OPEN_BLOCK应该是每个网卡对应一个吧? _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] |
|
|
41楼#
发布于:2005-06-09 23:25
问题是:为什么每个协议会有NDIS_OPEN_BLOCK结构连表呢?按道理应该是该协议只拥有一个NDIS_OPEN_BLOCK结构即可,但是ProtocolNextOpen明显是连表,到底是什么含义呢?
回复:一个协议可以绑定到多块网卡上,当然需要一个链表来保存NDIS_OPEN_BLOCK了! |
|
上一页
下一页