Windows 驱动程序中的 C++ [关闭]

Posted

技术标签:

【中文标题】Windows 驱动程序中的 C++ [关闭]【英文标题】:C++ in a Windows Driver [closed] 【发布时间】:2014-08-12 10:29:55 【问题描述】:

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

我的问题是我不确定应该将编译后的文件链接到哪个 lib 文件。 链接到 msvcrt 会创建对 ntdll.dll 的依赖,这在内核模式中当然不能满足。如果不链接到 msvcrt,就没有新/删除运算符 - 我会收到链接错误。

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

【问题讨论】:

你应该阅读这个。 download.microsoft.com/download/5/b/5/… 谢谢,我一定会读的! 【参考方案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');

【讨论】:

以上是关于Windows 驱动程序中的 C++ [关闭]的主要内容,如果未能解决你的问题,请参考以下文章