Windows内核开发:如何使用STL

前言

大家都知道应用层c++的STL非常强大,非常好用,但是在内核下就没法用了。针对这个问题,经过我不懈的寻找,终于找到了解决内核无法使用STL的方法。

使用new/delete关键字

先说一下常用关键字如何在内核中使用。其实只需要在一个全局头文件中重写这两个关键字就好了,如下:

c++ 复制代码
void * __cdecl operator new (size_t size )
{
    PAGED_CODE();
    return ExAllocatePoolWithTag(PagedPool, size, '.ppc');
}

void *__cdecl operator new[](size_t Size)
{
    PAGED_CODE();
    return ExAllocatePoolWithTag(PoolType, Size, '.ppc');
}

void __cdecl operator delete(void *Object)
{
    PAGED_CODE();
    if (Object != NULL) ExFreePoolWithTag(pObject, '.ppc');
}

void __cdecl operator delete[](void *Object)
{
    PAGED_CODE();
    if (Object != NULL) ExFreePoolWithTag(pObject, '.ppc');
}

内核中使用STL

这里需要用到一个开源库:内核下的STLPort。在visual studio 2019中打开你的项目,然后在项目属性-》VC++目录-》包含目录中输入STLPort项目中的stlport 文件夹目录。
为了更好的使用这个库,建议再引入一个第三方内核crt开源库。这个库我忘了是在哪找到的了,但我把他放到了我的github上,你可以在这里取得。

用同样的方法,加入到你的项目中。然后就可以畅快的使用STL了。

相关推荐
开开心心就好20 小时前
图片校正漂白工具永久免费,矫正实时预览
网络·人工智能·windows·计算机视觉·计算机外设·电脑·excel
Whoami!21 小时前
⓫⁄₁₁ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 未加引号服务路径漏洞利用(上)
windows·网络安全·信息安全·未加引号服务路径
MyBFuture21 小时前
编程实战:相机连接与参数设置指南
windows·c#·visual studio·vision pro·联合编程
Don't Look Down21 小时前
windows 脱机安装wsl 及 Docker Desktop 集成
windows·docker·容器
开开心心就好21 小时前
免费批量抠图软件大模型,复杂倒影精准去除
网络·windows·pdf·计算机外设·电脑·硬件架构·材料工程
Blue桃之夭夭21 小时前
【工具教程】Windows 下十六进制编辑器 HxD 安装与使用指南(附下载链接)
windows·编辑器
qq_2787877721 小时前
Windows 本地 EasySwoole 项目(Docker Desktop 挂载运行+热加载配置)
windows·docker·容器·easyswoole
Yvonne爱编码1 天前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
南宫码农1 天前
我的电视 - Android原生电视直播软件 完整使用教程
android·开发语言·windows·电视盒子
哈基米~南北绿豆1 天前
虚拟机体验:在Windows/Mac上运行鸿蒙PC开发环境
windows·macos·harmonyos