#pragma alloc_text(PAGE,函数名)

Ben*_*min 4 windows winapi pragma virtual-memory

#pramga alloc_text(PAGE, foo)

void foo(){ return; }
Run Code Online (Sandbox Code Playgroud)

此代码通常在设备驱动程序中使用。
FOO功能将被交换时系统的需求。

问题。

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

Jel*_*rts 5

如果编译一个简单的hello world驱动程序,则将看到名为“ .text”的PE(便携式可执行文件)部分将设置“ Not pageable”特征标记。因此,是的,默认情况下,所有驱动程序代码都在该部分中,除非您将其标记为可分页,否则它将最终出现在“ PAGE”部分而不是“ .text”部分中。