#pragma alloc_text(PAGE,functionname)

时间:2011-02-27 08:43:11

标签: windows winapi pragma virtual-memory

#pramga alloc_text(PAGE, foo)

void foo(){ return; }

此代码通常用于设备驱动程序 只要系统需要, foo 函数就会被交换。

问题。

  • 它在用户空间代码中有效吗?该功能是否也会被分页?
  • 没有编译指示,我的意思是默认情况下,是否所有内核级功能都分配了非分页内存?
  • PE文件加载器是否决定了功能的分配位置?

2 个答案:

答案 0 :(得分:4)

如果您编译一个简单的hello world驱动程序,那么您将看到名为'.text'的PE(可移植可执行文件)部分将设置'Not pageable'特征标志。所以是的,默认情况下,所有驱动程序代码都在该部分中,除非您将其标记为可分页,这将使其最终位于“页面”部分而不是“.text”部分。

答案 1 :(得分:2)

默认情况下交换用户模式程序。你需要别的东西是不寻常的。听起来像设备驱动程序要求驻留来处理中断或此类事情。用户模式程序不这样做。