pango99
驱动牛犊
驱动牛犊
  • 注册日期2001-08-21
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1191回复:4

如何在物理内存中分配块教大的区域(>20),且不会被移出物理内存

楼主#
更多 发布于:2002-05-15 19:22
要求这块区域一直在物理内存中,不会因为虚拟内存机制被移出物理内存
wangqins
驱动小牛
驱动小牛
  • 注册日期2002-04-28
  • 最后登录2007-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-15 19:51
你是在那里分配?用户层肯定会对换的,还有什么OS?
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-16 08:25
驱动程序中使用ExAllocatePool分配非分页内存。
应用层使用GlobalAlloc,再使用GlobalLock锁定即可。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
wilton
驱动牛犊
驱动牛犊
  • 注册日期2001-04-23
  • 最后登录2005-03-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-16 09:30
tigerzd说错了:
GlobalLock不能锁定到物理内存。GlobalAlloc、LocalAlloc等一系列函数是从Win16移植的,概念不一样,他们的存在只是为了兼容。详细情况参见Jeffrey的Advanced Windows。
在Win32中,Ring3应该使用VirtualLock。
pango99
驱动牛犊
驱动牛犊
  • 注册日期2001-08-21
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-16 13:07
wilton说的对,我已经知道怎么做了:先用SetProcessWorkingSet()设置进程的工作集大小,再使用VirtualAlloc()分配内存,最后用VirtualLock()锁定在物理内存中
游客

返回顶部