c++ - 使用简单的 C++ 进行内核模式编程?

标签 c++ windows kernel wdk

我即将深入内核领域。我的问题与编程语言有关。我见过大多数教程都是用 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/

相关文章:

c++ - 修改 Windows 磁盘驱动程序以使用更新的控制代码,如 IOCTL_DISK_GET_DRIVE_GEOMETRY_EX

linux - struct load_info 中的字段strmap 是什么意思?

c++ - "undefined reference to"使用'g++'编译C++程序

c++ - 可变参数模板函数是否以相反的顺序调用 lambda 参数?

c++ - STL 设置自定义排序

c# - 我不太明白 MySql 连接是什么样的

php - 在 PHP 中查找 Windows 用户名

c++ - 类未声明?? (C++)

windows - 使用 NDIS 驱动程序的自定义事件消息

linux - 内核模块中的符号