quarkfc
驱动牛犊
驱动牛犊
  • 注册日期2001-07-13
  • 最后登录2006-07-26
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1369回复:1

sirroom兄弟,你的那个分片后发送返回怎么处理的?(我开了一个队列,将MyPacket指针存入队列)

楼主#
更多 发布于:2003-01-06 21:04
sirroom兄,现在我也在研究使用PASSTHRU作VPN,由于加密接口调用于
MPSend不在一个中断级别,所以只好开了一个队列,每来一个报文,就讲myPacket指针放入队列,在发送线程中调用加密后将重新组装后的报发送出去。但是与你碰到同样的问题就是NDISSend返回成功或PENDING怎么处理的问题,NdisIMCopySendCompletePerPacketInfo 怎么办?,还有原来的MPSend怎么返回?
不知道你现在是怎么解决的?

下面是你原来的问题:
在passthru中,偶对一个原始的IP包进行处理后,包变大了,现在一个包要变成两个才能发出去。用MPSend来说吧。
(当然,这个IP包是指一个完整的IP包,如果上面给的包就是分段的,得先重组)
upper layer给的包是Packet,偶再分配一个MyPacket,对这个MyPacket偶进行处理后,这个包长度增加,要将其分为MyPacket1与MyPacket2才能发送。
代码这里偶应该如何处理
NdisSend(&Status,
pAdapt->BindingHandle,
MyPacket1);
if (Status != NDIS_STATUS_PENDING)
{
//这个函数现在偶该怎么办???
NdisIMCopySendCompletePerPacketInfo (
Packet,
MyPacket);

NdisFreePacket(MyPacket);
}
是不是象这样就没办法用这个函数处理,如果不用,程序其它地方要注意什么问题。
当然类似的在ptreceivepacket中,偶收到两个包,还原处理完了就只有一个包,也就是说MyPacket1与MyPacket2(收到的包)在处理过后就只有MyPacket了,MiniportReserved中保留的东东怎么办。

最新喜欢:

wang2_kkwang2_...
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-06 22:49
如果ndissend返回的不是pending,就判断一下packet是不是你分配的,是就释放,不是就把状态传给系统,如果返回pending,就给系统返回pending,然后在sendcomplete里面做判断,同样处理
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
游客

返回顶部