阅读:1482回复:3
ndis im driver内存问题。
各位大虾:我是ndis的新手。在做一个中间层驱动用来对通过网卡的数据包进行加解密。我是在mpsendpacket和ptreceivepackets中将原始packet的buffer内容取出来,放到自己分配的memory中进行处理再分配新的buffer和packet descriptor将经过处理的数据上发或下发出去。问题是这样的:当我在上述的两个函数中动态分配内存放处理数据的时候,我的一些应用,如notes和一些配置管理软件运行正常;当我不在上述两个函数中动态分配内存而是在_adapt结构中增加两个指针,并分别在ptBindAdapter中对他们分配一段缓存,在mpsendpacket和ptreceivepackets中使用由adapt传过来这两段缓存放置待处理的数据的时候,notes等应用都出现了问题,notes出现的问题是\"网络错误:缓冲区太小”。这是不是收发速度不匹配而引起tcp协议报错?还是别的原因?这两种分配内存的机制我觉得后者效率英更好才是呀?我提的问题也许是大家认为比较成熟的问题了,还请看在我一个新手得份上,不吝赐教。
|
|
沙发#
发布于:2002-04-17 11:30
发完或者收完的时候,你释放了么?
|
|
板凳#
发布于:2002-04-17 11:52
发完或者收完的时候,你释放了么?
================================================= 谢谢您的回答。 我是在ptunbindadapter中释放分配的memory. 你指的是buffer的释放吗? |
|
地板#
发布于:2002-04-18 08:51
应该分配一个buffer pool.需要buffer的时候,从pool里取得空闲的buffer,用完再放回去.到最后,passthru unbindadapter的时候,再释放buffer pool
|
|