Windows驱动程序中的C ++

时间:2014-08-12 10:29:55

标签: c++ windows visual-studio driver

我正在编写一个简单的WDM驱动程序,我想在其中使用C ++类。

我的问题是,我不确定应该将编译后的文件链接到哪个lib文件。 链接到msvcrt会创建对 ntdll.dll 的依赖,这当然在内核模式下无法满足。没有链接到msvcrt,没有新的/删除操作符 - 我得到了链接错误。

如何为我的驱动程序启用C ++功能?

1 个答案:

答案 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');
}