5

我是 Windows 驱动程序开发的新手。我只想知道,驱动程序中的全局变量将使用分页池内存还是非分页池内存?

谢谢并恭祝安康

纳瓦尼思

4

3 回答 3

8

要看。非分页池应保留用于必须保留在 RAM 中的内存,因此,如果您正在执行可能受磁盘操作中的内存页面影响的关键操作,请使用非分页。

请参阅此处了解更多信息。

看看这个(尽管它讨论的是 C++ 而不是 C),似乎默认情况下全局变量可以通过#pragma 定位。同样在 p22 上, 我们看到了如何做到这一点最后在这里讨论我们看到数据段默认情况下应该是不可分页的。

于 2009-04-28T08:44:42.170 回答
2

内核模式驱动程序中的全局变量是从 NonPagedPool 分配的。

你也可以使用设备扩展(当你调用 IoCreateDevice 时),它总是从非分页内存中分配的。

我希望这会有所帮助,马丁

于 2009-04-28T13:31:37.177 回答
0

我找到的另一个很好的答案是:“非分页池是内核内存,当 Windows 用完可用的物理内存时,它不能被分页到页面文件中。驱动程序使用它来分配他们需要的内存。” 从这里

于 2019-03-14T07:12:23.927 回答