axiaoge
驱动牛犊
驱动牛犊
  • 注册日期2006-11-22
  • 最后登录2012-05-21
  • 粉丝0
  • 关注0
  • 积分206分
  • 威望146点
  • 贡献值1点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:1424回复:3

为什么NDISSEND没有真正的把包送出去?

楼主#
更多 发布于:2007-03-24 11:05
  调用NDISSEND以后,NDISSEND返回PENDING状态,随即PROTOCOLSENDCOMPLETE被触发.按说到这里数据包已经被送出去了.但是SNIFFER抓不到该包,说明其数据并没有被送出去.  而在大多数情况下,同样的数据包,同样的代码,流程却非常正常,SNIFFER也能看到包的交互.

这是为什么呢?

在PENDING完成指示后, PROTOCOLSENDCOMPLETE 必须调用NDisMSendComplete指示上层驱动吗? 为啥这个地方一调用NDisMSendComplete就蓝屏?

没招了.

PS.网卡及驱动都一切正常.

50分奉送!
防火墙,PPPOE,802.1x 源代码出售
dfbb1980
驱动牛犊
驱动牛犊
  • 注册日期2006-07-05
  • 最后登录2007-07-30
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-24 13:03
NDisMSendComplete调用会导致释放资源,看看你的packet释放有没有问题
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-03-28 11:33
你用的是passthru驱动吧?对于上层来的包,当然要调用NDisMSendComplete通知上层去释放资源,如果是你自己组的包,就不需要调用了.你这个包,和其他的包有什么区别?
axiaoge
驱动牛犊
驱动牛犊
  • 注册日期2006-11-22
  • 最后登录2012-05-21
  • 粉丝0
  • 关注0
  • 积分206分
  • 威望146点
  • 贡献值1点
  • 好评度18点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-05 19:00
引用第1楼dfbb19802007-03-24 13:03发表的“”:
NDisMSendComplete调用会导致释放资源,看看你的packet释放有没有问题

关键是不管释放没释放,包应该都已经发出去了啊。为什么sniffer抓不到包呢?服务器也接收不到这个包。感觉象是在网卡驱动层被卡住了那样。
防火墙,PPPOE,802.1x 源代码出售
游客

返回顶部