阅读:1323回复:4
求助:passthru驱动如何在发数据包时把send函数pending起来?
我想在send函数中截获到数据包,然后把它传到应用层处理,应用层的处理结果决定该数据包是否丢弃,这就需要在应用层处理的同时,让驱动的send函数等待上层处理的结果,就是想把send函数pending起来,请问怎么样可以做到呢?谢谢了
|
|
沙发#
发布于:2007-07-26 17:15
1.不要调用NdisSend,返回pending
2,把数据通知上层应用程序 3,上层应用程序,判断后,通知驱动,放行的调用NdisSend,拒绝的不要调用NdisSend,直接调用 NdisSendComplete,通知上层协议做善后处理就可以了 |
|
板凳#
发布于:2007-07-26 17:31
谢谢zhaock版主:)不过还有个问题,您说的第一点:不要调用NdisSend,返回pending;
是不是说在MPSend或者MPSendPackets函数中,在执行到NdisSend函数以前,返回pending?可是MPSendPackets函数的返回值类型为VOID,这个怎么做呢?可能是我的理解有问题,请版主再详细说一下,可以么?3Q |
|
地板#
发布于:2007-07-26 17:59
我说的不全面,对于MPSendPackets当然不需要返回什么了,只说MPSend了.这个返回值,不是很重要.只要最后调用NdisMSendComplete通知上层协议驱动就可以
|
|
地下室#
发布于:2007-07-26 18:48
再次感谢版主,还想问的是,我如何实现MPSend或者MPSendPackets函数等待应用层的判断呢?我不太懂的地方也就是当MPSend或者MPSendPackets函数执行到NdisSend函数以前时,把数据上传给应用程序,在应用程序对数据包进行判断的这段时间,驱动怎么样等待上层的判断,从而决定是调用NdisSend还是NdisMSendComplete
|
|