zhenxf
驱动牛犊
驱动牛犊
  • 注册日期2004-12-15
  • 最后登录2010-07-23
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2006回复:6

在什么时候用NdisAdjustBufferLength?

楼主#
更多 发布于:2005-08-03 10:18
  本人用DirverNetWorks作了一个加密解密程序,思路是:向上给协议层时解密OnReceive(),给NIC时加密OnSend()。在解密时数据变长了,如何将变长的数据交给协议层?NdisAdjustBufferLength()有用吗?
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-03 13:06
把原来的包还回去,重新组包,但最好别大过1580。
zhenxf
驱动牛犊
驱动牛犊
  • 注册日期2004-12-15
  • 最后登录2010-07-23
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-03 15:16
谢谢!
1、是的,我已经这样做了,数据肯定是小于1580的。
2、如果数据比原来的短,是成功的。
3、长了不行,不知道错在哪里了,这件事我已经搞了好几天了,头都大了,再次请求大侠帮助,谢谢!
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-03 15:52
一般重新组包,有两个关键的问题:
把原来包中的所有信息都复制过来,不只是数据。
重新计算校验和。
否则该包就被DROP了。
不知道你说不成功的具体表现是什么?
zhenxf
驱动牛犊
驱动牛犊
  • 注册日期2004-12-15
  • 最后登录2010-07-23
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-08-04 09:32
谢谢!
1、我是这样做的:如果收到的数据是TCP/IP包,并且是某个特定端口的,我判断纯数据的某几位,如果是我想要的,就加密(实验时,简单的在尾部加减几字节的数据),然后计算校验,组成新包,交给协议层。减数据是好的,加完后,就出问题了。新包中,我复制了OOB数据。校验和是对的。
2、问题表现是:在Onreceive()中一直收到数据,是60字节的,OnSend()也一直有数据,是62字节的,象进入了死循环。
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-08-04 13:00
根据我的理解Onreceive()和OnSend()是两条线,也就是说是两个数据流,他们之间应该是没有任何关系的。OnSend()应该是协议发下来的数据,如果程序没有搞错他们之间不应该有60和62的关系,也谈不上什么死锁,现在有他们扯上关系了,就要检查一下你的处理流程是否有问题了。
zhenxf
驱动牛犊
驱动牛犊
  • 注册日期2004-12-15
  • 最后登录2010-07-23
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-08-05 14:43
谢谢!
1、我测试了一下,数据变长后,ForwardUp(MyPacket);应用收到了正确的数据。
2、OnSend()也发出了正确的回应。
3、然后,就出现上边的现象了。
可能是流程出问题了?谢谢大侠!
游客

返回顶部