suliaodai
驱动牛犊
驱动牛犊
  • 注册日期2004-10-11
  • 最后登录2005-09-07
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1285回复:3

passthru的问题

楼主#
更多 发布于:2005-07-12 17:29
  系统wince.net,已经正确安装了passthru,passthru未经任何修改,网卡为2块rtl8139。其中一块被虚拟成vMini,另一块显示为rtl8139。
在protocolReceive函数和protocolReceivePacket函数分别设置了断点,用ping做测试,在程序
。。。。。。
if (pBinding->hMPBinding == NULL)
       {
              status = NDIS_STATUS_FAILURE;
              goto cleanUp;
       }

       //
       // Get at the packet, if any, indicated up by the miniport below.
       //
      
       pRecvPacket = NdisGetReceivedPacket(pBinding->hPTBinding, hMacReceiveContext);

       if (pRecvPacket != NULL)
       {
。。。。。。
运行中使用rtl8139那块网卡时用watch察看pRecvPacket 为NULL,可是ping -t命令的确不停地发包。用ethereal也抓到发的包。
使用vMini那块网卡时用watch察看pRecvPacket 不为NULL,NdisGetReceivedPacket()收到了数据包。用ethereal也抓到发的包。测试显示正常。
各位兄台,谁知道什么原因?
苦力汉子
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-07-13 17:49
这两块网卡要被上层不同(实例)的协议驱动绑定三,不可能同样的包被两个mini port一起发吧,只走一边是正常的阿,如果你上层就设定两个ip,并绑定到下层不同的网卡,然后分别ping他们应该是都可以收到的吧。你想要什么效果?
根据地的兄弟们,团结就是力量
suliaodai
驱动牛犊
驱动牛犊
  • 注册日期2004-10-11
  • 最后登录2005-09-07
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-07-18 09:57
我在上层设定的2个IP地址,做ping试验时分别对两块网卡做试验。

下面是NDIS版的zhaock解释,我觉得比较合理
zhaock:
你们的理解有问题,在这个时候,NdisGetReceivedPacket为空并不代表没有包,只是因为miniport驱动,没有构造packet,而是用老的方式通知协议驱动,看passthru ptreceive的代码,NdisGetReceivedPacket为空时的处理,就明白了
苦力汉子
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-07-18 14:49
对了,回忆起来些了:))
不是很清楚CE的NDIS情况了,原来在2K下做的PASSTHRU在PTRECEIVE里面收包的三种情况中,对于用NdisGetReceivedPacket接收的数据始终为NULL的,总是第二和三种情况,由于比较紧,当时也没有仔细搞清楚是怎么回事。按帮助这种方式是有OOB的包才用,好像也不是啊,我记得都有的嘛
根据地的兄弟们,团结就是力量
游客

返回顶部