首页 > 解决方案 > 为什么内核模式驱动程序不能分配和使用内存而不导致潜在的不稳定?

问题描述

我正在学习编写内核模式代码。我一直看到这种系统稳定性的概念在这种操作模式下很脆弱。我正在寻找一个低层次的解释为什么会这样。

我了解在内核模式代码中运行的代码肯定会导致问题的一些方式:

但是这些似乎可以通过简单地分配一个安全的内存空间来工作来避免,并且通常不会覆盖分配给另一个进程的任何内存,除非该进程专门设计用于共享该内存。

我将引用我刚刚在 Windows 文档中阅读的内容:

重要驱动程序不应该“在侧面”分配内存并将其用作内核模式堆栈。这从来都不是任何平台的推荐做法,因为它会影响操作系统的稳定性和可靠性。在基于 x64 的系统上,如果操作系统检测到未经授权的内核模式堆栈,它将生成错误检查并关闭系统。-使用内核模式堆栈的指南

为什么会这样?

驱动程序不能简单地分配一些系统其余部分知道不使用的未使用内存吗?

标签: driverwindows-kernelstabilitykernel-mode

解决方案


在内核(堆上)分配内存是常见的做法,有很多函数可以做到这一点。

如果您需要使用大数据,建议您在正确的池中分配内存,而不是在堆栈上使用变量。


推荐阅读