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++ [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Windows 中的线程有啥好的初学者教程吗? C++ [关闭]

C++ Windows 驱动程序 MSB3030 无法复制文件 '' 因为找不到

适用于 Windows 8.1 的 Nvidia GeForce 驱动程序无法在 Windows 10 上运行 [关闭]

如何在 Windows 上关闭 CafePay 打印机驱动程序

查找可启动笔式驱动器是不是连接到 Windows [关闭]

如何开始编写 Windows minifilter 驱动程序? [关闭]