4
#pramga alloc_text(PAGE, foo)

void foo(){ return; }

此代码通常用于设备驱动程序。foo
函数 将在系统需要时交换。

问题。

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

2 回答 2

5

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

于 2011-11-12T14:23:02.847 回答
2

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

于 2011-02-27T08:56:11.870 回答