【问题标题】: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');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多