zzw315
驱动牛犊
驱动牛犊
  • 注册日期2007-03-20
  • 最后登录2013-03-06
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望251点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2010-10-19 09:54
引用第2楼zxm1983123于2007-01-07 20:48发表的 :
代码贴出来了
代码测试过了,可以运行,但是有一个问题我没有搞明白,每次向下一层发送一个查询IRP报文的时候,要从NonPagedPool中申请一段内存,这个IRP处理完成后,在它的完成函数,没有释放掉这段内存(释放会蓝屏),这样理应会造成内存泄漏.但是感觉好像对系统性能没有造成什么大影响.不知道是什么原因.


看了你的代码,找到了释放蓝屏的原因:
代码如下:

done:
// cleanup
if (mdl != NULL)
IoFreeMdl(mdl);

if (tai != NULL)
ExFreePool(tai);

if (query_irp != NULL)
。。。。。。。。。。。。。。。

在done之前正确的处理完没有把“tai”赋值为NULL,导致在“tdi_create_addrobj_complete”里已经把tai的内存释放掉了,
所以在查询完成函数“tdi_create_addrobj_complete2”里再释放tai 内存当然会导致蓝屏。
shiqishe8102
驱动牛犊
驱动牛犊
  • 注册日期2010-11-06
  • 最后登录2010-11-12
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2010-11-12 16:58
楼主好人。正在找相关资料。
ttt123ttt
驱动牛犊
驱动牛犊
  • 注册日期2008-05-18
  • 最后登录2010-12-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望14点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2010-12-27 11:21
路过 先站位
上一页 下一页
游客

返回顶部