overthere
驱动牛犊
驱动牛犊
  • 注册日期2002-03-24
  • 最后登录2002-04-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1483回复:3

ndis im driver内存问题。

楼主#
更多 发布于:2002-04-17 00:20
各位大虾:我是ndis的新手。在做一个中间层驱动用来对通过网卡的数据包进行加解密。我是在mpsendpacket和ptreceivepackets中将原始packet的buffer内容取出来,放到自己分配的memory中进行处理再分配新的buffer和packet descriptor将经过处理的数据上发或下发出去。问题是这样的:当我在上述的两个函数中动态分配内存放处理数据的时候,我的一些应用,如notes和一些配置管理软件运行正常;当我不在上述两个函数中动态分配内存而是在_adapt结构中增加两个指针,并分别在ptBindAdapter中对他们分配一段缓存,在mpsendpacket和ptreceivepackets中使用由adapt传过来这两段缓存放置待处理的数据的时候,notes等应用都出现了问题,notes出现的问题是\"网络错误:缓冲区太小”。这是不是收发速度不匹配而引起tcp协议报错?还是别的原因?这两种分配内存的机制我觉得后者效率英更好才是呀?我提的问题也许是大家认为比较成熟的问题了,还请看在我一个新手得份上,不吝赐教。

scnuiori
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2009-05-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-18 08:51
应该分配一个buffer pool.需要buffer的时候,从pool里取得空闲的buffer,用完再放回去.到最后,passthru unbindadapter的时候,再释放buffer pool
overthere
驱动牛犊
驱动牛犊
  • 注册日期2002-03-24
  • 最后登录2002-04-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-17 11:52
               发完或者收完的时候,你释放了么?
=================================================
谢谢您的回答。

我是在ptunbindadapter中释放分配的memory.
你指的是buffer的释放吗?

scnuiori
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2009-05-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-17 11:30
发完或者收完的时候,你释放了么?
游客

返回顶部