kissfire
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2006-01-05
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1573回复:13

在驱动扩展区中开缓冲区的问题

楼主#
更多 发布于:2005-01-10 08:58
我想在驱动的扩展区中开一个10000字节左右的缓冲,最好用什么方法不容易出错?
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-10 09:05
ExAllocatePool( NonPagedPool, bufferSize );
在交流中学习。。。
kissfire
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2006-01-05
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-10 09:35
我就是这样开的缓冲啊 ,为什么用verifier工具检测时候会蓝屏呢
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-10 14:21
开完以后,当程序卸载的时候释放了没有?
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-10 14:46
开完以后,当程序卸载的时候释放了没有?

用完之后必须释放的。
在交流中学习。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-14 10:29
yes
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
liwashington
驱动小牛
驱动小牛
  • 注册日期2004-04-30
  • 最后登录2010-10-21
  • 粉丝0
  • 关注0
  • 积分-11分
  • 威望98点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-14 13:08
据同事说这样申请的内存即使不释放也不会蓝屏,只是会有内存泄漏。我想也差不多吧,所以我想蓝屏可能是其它原因造成的。
我只想有个好老婆,每天有几顿好饭吃……
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-17 14:23
----------------
据同事说这样申请的内存即使不释放也不会蓝屏,只是会有内存泄漏。我想也差不多吧,所以我想蓝屏可能是其它原因造成的。
----------------
是这样的,我前几天做个试验,申请了几M的非分页内存,程序卸载以后也没有任何问题。
不过如果用verifier进行测试的话,再小的内存泄漏也会蓝屏的。
嗯,这样才会叫开发者注意到内存泄漏。
xiaorain
驱动牛犊
驱动牛犊
  • 注册日期2003-04-21
  • 最后登录2005-11-05
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-17 14:35
如果不用verifier,内存泄漏不会蓝屏,如果用了verifier,肯定蓝了。
做过WHQL就会知道了,verifier是WHQL的一部分。
我以前用verifier,就算分发例程不全都会导致蓝屏,像irp_mj_system_control这个irp的分发例程,如果不再driverentry中指定,就会蓝屏的,虽然这个例程可以什么也不用作,直接完成irp。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-19 19:56
如果设置了low resource simulation,verifier会让ExAllocatePool失败,返回NULL。你的代码有检查这种情况吗?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-01-20 10:23
如果设置了low resource simulation,verifier会让ExAllocatePool失败,返回NULL。你的代码有检查这种情况吗?

斑竹高,带来了新问题,在代码中如何检查这种情况?
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
11楼#
发布于:2005-01-20 10:26
[quote]如果设置了low resource simulation,verifier会让ExAllocatePool失败,返回NULL。你的代码有检查这种情况吗?

斑竹高,带来了新问题,在代码中如何检查这种情况? [/quote]
不是很清楚了吗??ExAllocatePool失败,你必须进行相应的处理..
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-01-20 11:33
[quote][quote]如果设置了low resource simulation,verifier会让ExAllocatePool失败,返回NULL。你的代码有检查这种情况吗?

斑竹高,带来了新问题,在代码中如何检查这种情况? [/quote]
不是很清楚了吗??ExAllocatePool失败,你必须进行相应的处理.. [/quote]

So, always do this:

p = ExAllocatePool(...);
if(p == NULL)
{
 // do some cleaning
 return STATUS_UNSUFFICIENT_RESOURCE;
}
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-01-20 16:28
[quote][quote][quote]如果设置了low resource simulation,verifier会让ExAllocatePool失败,返回NULL。你的代码有检查这种情况吗?

斑竹高,带来了新问题,在代码中如何检查这种情况? [/quote]
不是很清楚了吗??ExAllocatePool失败,你必须进行相应的处理.. [/quote]

So, always do this:

p = ExAllocatePool(...);
if(p == NULL)
{
 // do some cleaning
 return STATUS_UNSUFFICIENT_RESOURCE;
} [/quote]
哈哈,倒是我自己想复杂了,我以为是检测verifier的low resource simulation环境呢!
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部