jieyuan
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2008-05-28
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
阅读:1322回复:4

求助:passthru驱动如何在发数据包时把send函数pending起来?

楼主#
更多 发布于:2007-07-26 14:49
        我想在send函数中截获到数据包,然后把它传到应用层处理,应用层的处理结果决定该数据包是否丢弃,这就需要在应用层处理的同时,让驱动的send函数等待上层处理的结果,就是想把send函数pending起来,请问怎么样可以做到呢?谢谢了
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-07-26 17:15
1.不要调用NdisSend,返回pending
2,把数据通知上层应用程序
3,上层应用程序,判断后,通知驱动,放行的调用NdisSend,拒绝的不要调用NdisSend,直接调用
NdisSendComplete,通知上层协议做善后处理就可以了
jieyuan
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2008-05-28
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-26 17:31
谢谢zhaock版主:)不过还有个问题,您说的第一点:不要调用NdisSend,返回pending;
是不是说在MPSend或者MPSendPackets函数中,在执行到NdisSend函数以前,返回pending?可是MPSendPackets函数的返回值类型为VOID,这个怎么做呢?可能是我的理解有问题,请版主再详细说一下,可以么?3Q
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-07-26 17:59
我说的不全面,对于MPSendPackets当然不需要返回什么了,只说MPSend了.这个返回值,不是很重要.只要最后调用NdisMSendComplete通知上层协议驱动就可以
jieyuan
驱动牛犊
驱动牛犊
  • 注册日期2007-04-06
  • 最后登录2008-05-28
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-26 18:48
再次感谢版主,还想问的是,我如何实现MPSend或者MPSendPackets函数等待应用层的判断呢?我不太懂的地方也就是当MPSend或者MPSendPackets函数执行到NdisSend函数以前时,把数据上传给应用程序,在应用程序对数据包进行判断的这段时间,驱动怎么样等待上层的判断,从而决定是调用NdisSend还是NdisMSendComplete
游客

返回顶部