我正在编写一个简单的WDM驱动程序,我想在其中使用C ++类。
我的问题是,我不确定应该将编译后的文件链接到哪个lib文件。 链接到msvcrt会创建对 ntdll.dll 的依赖,这当然在内核模式下无法满足。没有链接到msvcrt,没有新的/删除操作符 - 我得到了链接错误。
如何为我的驱动程序启用C ++功能?
答案 0 :(得分:5)
显然,实现new / delete运算符足以解决我的问题(只要我不使用异常和其他C ++特性)。
所以我以下面的方式实现了运算符,现在一切正常:
#include <ntddk.h>
void *__cdecl operator new(size_t count) {
return ExAllocatePoolWithTag(NonPagedPool, count, 'TRCm');
}
void __cdecl operator delete(void *object) {
ExFreePoolWithTag(object, 'TRCm');
}