阅读:1424回复:3
为什么NDISSEND没有真正的把包送出去?
调用NDISSEND以后,NDISSEND返回PENDING状态,随即PROTOCOLSENDCOMPLETE被触发.按说到这里数据包已经被送出去了.但是SNIFFER抓不到该包,说明其数据并没有被送出去. 而在大多数情况下,同样的数据包,同样的代码,流程却非常正常,SNIFFER也能看到包的交互.
这是为什么呢? 在PENDING完成指示后, PROTOCOLSENDCOMPLETE 必须调用NDisMSendComplete指示上层驱动吗? 为啥这个地方一调用NDisMSendComplete就蓝屏? 没招了. PS.网卡及驱动都一切正常. 50分奉送! |
|
|
沙发#
发布于:2007-03-24 13:03
NDisMSendComplete调用会导致释放资源,看看你的packet释放有没有问题
|
|
板凳#
发布于:2007-03-28 11:33
你用的是passthru驱动吧?对于上层来的包,当然要调用NDisMSendComplete通知上层去释放资源,如果是你自己组的包,就不需要调用了.你这个包,和其他的包有什么区别?
|
|
地板#
发布于:2007-04-05 19:00
引用第1楼dfbb1980于2007-03-24 13:03发表的“”: 关键是不管释放没释放,包应该都已经发出去了啊。为什么sniffer抓不到包呢?服务器也接收不到这个包。感觉象是在网卡驱动层被卡住了那样。 |
|
|