本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 4037|回复: 8

请求帮助,分页内存与非分页内存的疑惑 [复制链接]

Rank: 1

发表于 2012-12-25 09:44:03 |显示全部楼层
张帆在《驱动详解》中讲到:
当程序的中断请求级在DISPATCH_LEVEL之上时(包括DISPATCH_LEVEL层),程序只能使用非分页内存,否则将导致蓝屏死机。
我的疑问是:
疑问1.代码本身是只能被加载到非分页内存?
假设例程void somefun()总是运行在DISPATCH_LEVEL时,那么是否在例程前只能用#pragma LOCKEDCODE,如:
#pragma LOCKEDCODE
void somefun()
{
    ...
}
但在实际调试时,我用下面方式定义,并没有蓝屏死机,请问为什么?
#pragma PAGEDCODE
void somefun()
{
    ...
}


疑问2.代码内部分配内存时是否只能分配非分页内存?
假设例程void somefun()总是运行在DISPATCH_LEVEL时,在例程内部分配分页内存,编写如下,在实际调试中怎么不蓝屏死机?
#pragma LOCKEDCODE
void somefun()
{
      PVOID pTmp = ExAllocatePool(PagePool, 1024);
     ... //对pTmp操作,
}

请高手帮我解答一下啊,谢谢

Rank: 1

发表于 2012-12-25 15:06:35 |显示全部楼层
在alloc_text 里加上PAGE就是分页了,默认是不分页的。

Rank: 2

发表于 2012-12-25 17:54:58 |显示全部楼层
疑问2.代码内部分配内存时是否只能分配非分页内存?
假设例程void somefun()总是运行在DISPATCH_LEVEL时,在例程内部分配分页内存,编写如下,在实际调试中怎么不蓝屏死机?
#pragma LOCKEDCODE
void somefun()
{
      PVOID pTmp = ExAllocatePool(PagePool, 1024);
     ... //对pTmp操作,
}



你这明显是连函数文档都没看ExAllocatePool有几个参数

Rank: 1

发表于 2012-12-25 19:35:51 |显示全部楼层
catface0511 发表于 2012-12-25 17:54
疑问2.代码内部分配内存时是否只能分配非分页内存?
假设例程void somefun()总是运行在DISPATCH_LEVEL时, ...

msdn:
PVOID
  ExAllocatePool(
    IN POOL_TYPE  PoolType,
    IN SIZE_T  NumberOfBytes
    );

Rank: 1

发表于 2012-12-31 10:26:47 |显示全部楼层
xyhshen 发表于 2012-12-25 15:06
在alloc_text 里加上PAGE就是分页了,默认是不分页的。

谢谢你的回答,但你的回答不是我要问的,答非所问。
难道是我没描述清楚???????!!!!!!!!

Rank: 2

发表于 2012-12-31 13:39:30 |显示全部楼层
本帖最后由 catface0511 于 2012-12-31 13:41 编辑

有些事情是有可能出错 所以我们不能做
可能蓝屏 但是不会说一定触发 你可能试验的时间不够长 或者没触发那个点
比如你接触感冒病人 可能被传染  但是不是说一接触一定传染 只是我们尽量避免


至于你的问题2
疑问2.代码内部分配内存时是否只能分配非分页内存?
xyhshen  回答得很清楚了
msdn:
PVOID
  ExAllocatePool(
    IN POOL_TYPE  PoolType,
    IN SIZE_T  NumberOfBytes
    );
POOLTYPE有几种 MSDN下

Rank: 2

发表于 2012-12-31 23:02:50 |显示全部楼层
这个就好比,通常来说,拿刀捅你一刀,你会死。。。所以一般建议不要拿刀捅你。。。但是,真捅你一刀,你不一定会死。。。。不过这并不代表捅不死你

Rank: 2

发表于 2012-12-31 23:04:44 |显示全部楼层
楼主之所以会有这个疑问,明显是对“中断级”这个驱动编程的基础问题没搞清楚。

Rank: 2

发表于 2012-12-31 23:06:28 |显示全部楼层
建议楼主先搞清楚为什么DPC_LEVEL上不可以用分页内存,以及分页内存与非分页内存的区别、读写分页内存时系统的具体处理是怎么样的这些问题
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-5-23 23:56 , Processed in 0.042159 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部