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

相关推荐
北京_小杰子4 分钟前
Windows10本地安装SQLserver数据库连接的过程
数据库·windows·sqlserver·php
qq_5470261796 分钟前
LangChain 模型(Models)
windows·microsoft·langchain
落寞的魚丶18 分钟前
2025-2026学年广东省职业院校学生专业技能大赛信息安全管理与评估赛项技能测试试卷(一)一阶段解析
网络安全·应急响应·鱼影安全·2026广东技能大赛·信息安全评估赛道
塔中妖24 分钟前
Windows 安装 Maven 详细教程(含镜像与本地仓库配置)
java·windows·maven
以太浮标10 小时前
华为eNSP综合实验之- 3a认证配置案例及解析(AAA认证)
运维·tcp/ip·网络安全·华为·信息与通信
水饺编程13 小时前
第4章,[标签 Win32] :TextOut 测试案例3代码改编
c语言·c++·windows·visual studio
枷锁—sha14 小时前
【CTFshow-pwn系列】03_栈溢出【pwn 053】详解:逐字节爆破!手写 Canary 的终极破解
网络·笔记·安全·网络安全
一个人旅程~14 小时前
win10LTSB2016与win10LTSC2019对于老机型哪个更合适?
linux·windows·经验分享·电脑
零零信安17 小时前
法国某 WordPress 电商平台管理员权限遭拍卖
网络安全·数据泄露
优秀是不可能的19 小时前
Claude Code VSCode 扩展 Windows 打开出现 “claude-vscode.editor.openLast”
ide·windows·vscode·claude code