jruinet
驱动牛犊
驱动牛犊
  • 注册日期2007-03-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分130分
  • 威望14点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:1385回复:2

NDIS中间层切断(passthru)MPSend,使用IRPRead后,在用户层通过IRPWrite发送该包的问题

楼主#
更多 发布于:2007-06-22 16:23
NDIS中间层切断(passthru)MPSend,使用IRPRead后,在用户层通过IRPWrite发送该包的问题

IrpQueuePacket( pAdapt, MyPacket, enum_BindedSendPort );//将MPSend发送过来的数据包存入IRP队列中
if ( pAdapt->m_AdaptorRunningMode == adaptor_block )//如果当前要求切断该发送
{
            Status = NDIS_STATUS_SUCCESS;
            JRW_FreePktOrg( pPktOrg->Original );
            NdisFreePacket(MyPacket);
            ADAPT_DECR_PENDING_SENDS(pAdapt);
           return (Status);
}
//如果不切断就发送
NdisSend(&Status,
                 pAdapt->BindingHandle,
                 MyPacket);

现在的问题是如果切断后,NdisIMCopySendCompletePerPacketInfo (Packet, MyPacket)就没有使用,也就没有取得发送后的Per信息,不是是不是这个原因上层驱动或用户层认为该包没有发送成功,如果真的是这个原因有什么方法可以实现该功能呢?
目前我的想法是通过用户层取得了该包的信息了,或修改或直接通用IRP_MJ_WRITE将数据包直接发往下层驱动,这个想法可以实现吗?希望高人指点一下
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2007-06-22 16:45
参考cipe
走走看看开源好 Solaris vs Linux
dfbb1980
驱动牛犊
驱动牛犊
  • 注册日期2006-07-05
  • 最后登录2007-07-30
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-24 15:46
返回pending 缓存包
游客

返回顶部