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