windows # pragma alloc_text(PAGE,functionname)

aemubtdh  于 2023-05-08  发布在  Windows
关注(0)|答案(2)|浏览(139)
#pragma alloc_text(PAGE, foo)

void foo() { }

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

  • 它在用户空间代码中工作吗?函数是否也会被分页?
  • 如果没有杂注,我的意思是默认情况下,所有内核级函数都分配了非分页内存吗?
  • PE文件加载器决定函数的分配位置吗?
ar7v8xwq

ar7v8xwq1#

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

z6psavjg

z6psavjg2#

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

相关问题