Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kernel mode programming using simplistic c++?

I am about to delve into kernel land. My question relates to the programming language. I have seen most tutorials to be written in C. I currently program in C++ and Assembly. I also studied C before C++, but I didn't use it a lot. Would it be possible to program in kernel mode using simplistic C++without using any advanced constructs? Basically I am trying to avoid the minor differences that exist between the two languages(like no bool in C, no automatic returning of 0 from main, really minor differences). I won't be using templates, classes and the like. So would it be possible to program in kernel mode using simplistic C++ without any major annoyances?

like image 647
devjeetroy Avatar asked Dec 05 '11 20:12

devjeetroy


1 Answers

Even if not officially supported, you can use C++ as the development language for Windows kernel development. You should be aware of the following things :

  • you MUST define the new and delete operator to map to ExAllocatePoolWithTag and ExFreePool.

  • try to avoid virtual functions. It seems not possible to control the location of the vtable of the object and this may have unexpected results if it is in a pageable portion and you code is called with IRQL >= DISPATCH_LEVEL.

  • if you still need to use virtual methods table than lock .rdata segment before using it on IRQL >= DISPATCH_LEVEL.

Apart from these kinds of limitations, you can use C++ for your driver development.

like image 62
Thierry Franzetti Avatar answered Oct 20 '22 14:10

Thierry Franzetti