我即将深入内核领域。我的问题与编程语言有关。我见过大多数教程都是用 C 语言编写的。我目前使用 C++ 和 Assembly 编程。在C++之前我也学过C,但是用的不多。是否可以在不使用任何高级结构的情况下使用简单的 C++ 在内核模式下进行编程?基本上,我试图避免两种语言之间存在的细微差异(比如 C 中没有 bool
,没有从 main
自动返回 0,这些差异确实很小)。我不会使用模板、类等。那么是否可以使用简单的 C++ 在内核模式下进行编程而不会遇到任何重大麻烦?
最佳答案
即使官方不支持,也可以使用C++作为Windows内核开发的开发语言。 您应该了解以下事项:
您必须定义 new 和 delete 运算符以映射到 ExAllocatePoolWithTag 和 ExFreePool。
尽量避免虚函数。似乎无法控制对象 vtable 的位置,如果它位于可分页部分并且您使用 IRQL >= DISPATCH_LEVEL 调用代码,这可能会产生意外结果。
如果您仍然需要使用虚拟方法表,那么在 IRQL >= DISPATCH_LEVEL 上使用它之前先锁定 .rdata 段。
除了这些限制之外,您还可以使用 C++ 进行驱动程序开发。
关于c++ - 使用简单的 C++ 进行内核模式编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8391151/