【问题标题】:C++ in a Windows Driver [closed]Windows 驱动程序中的 C++ [关闭]
【发布时间】:2014-08-12 10:29:55
【问题描述】:
我正在编写一个简单的 WDM 驱动程序,我想在其中使用一个 C++ 类。
我的问题是我不确定应该将编译后的文件链接到哪个 lib 文件。
链接到 msvcrt 会创建对 ntdll.dll 的依赖,这在内核模式中当然不能满足。如果不链接到 msvcrt,就没有新/删除运算符 - 我会收到链接错误。
如何为我的驱动程序启用 C++ 功能?
【问题讨论】:
标签:
c++
windows
visual-studio
driver
【解决方案1】:
显然,实现 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');
}