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了。

相关推荐
菩提小狗3 小时前
每日安全情报报告 · 2026-09-17
网络安全·漏洞·cve·安全情报·每日安全
熊明才6 小时前
WSL2 网络突然瘫痪(Network is unreachable / 没有 eth0)最短修复指南(2026年9月20日亲测可用)
linux·windows·wsl2
2601_966377137 小时前
176号令10月1日施行|网安检查换新规矩,数达数安版等保一体机方案助企业从容应对
网络安全·数据安全·数安版等保一体机
qingtian!8 小时前
VM中安装WinServer2016详细教程
网络安全
罗斯8399 小时前
EMBER恶意软件基准数据集
人工智能·算法·安全·网络安全
恣睢s9 小时前
MISC杂项——Base加密加密
网络安全
黄金龙PLUS10 小时前
5个800比特大状态置换算法的设计与分析
算法·网络安全·密码学·哈希算法·同态加密
xbzb10 小时前
Windows 启动故障修复知识整理:蓝屏 / 无限重启 / 盘符 X / 无 PE 盘
windows
sbjdhjd11 小时前
从日志包含到临时文件竞争:文件包含进阶复盘中的 Docker、Windows 与 Session 限制
网络·安全·web安全·网络安全·数据挖掘·php·rce
我命由我1234511 小时前
Mac 操作系统 - 一些使用记录
运维·windows·学习·系统安全·运维开发·mac·学习方法