Windows内核开发:如何使用STL

news/2024/9/23 14:18:20/

前言

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

使用new/delete关键字

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

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


http://www.ppmy.cn/news/1454521.html

相关文章

二.数据结构

单链表 数组实现单链表: int head; //head存储这个单链表的头结点 int value[N];//value存储结点的值 int nextt[N];//nextt存储结点的next指针 int id; //id表示当前用到的点的位置 //初始化: void Init(){head-1,id0;//链表的头节点要指向-1,当前结点位置为0 } //在…

python Flask路由系统如何影响应用性能的一些关键点

Flask的路由系统对应用性能的影响主要体现在路由匹配和分发请求的效率上。以下是关于Flask路由系统如何影响应用性能的一些关键点: 路由匹配方式:Flask支持精准匹配和模糊匹配两种方式。精准匹配是指URL中的路径和定义的路由规则完全匹配,而…

游戏辅助 -- 实战找人物对象基址

本节课在线学习视频: https://pan.quark.cn/s/3e83f4568031 一、打开CE工具,加载游戏进程 二、搜索人物血量144,选择首次扫描 三、进入游戏,让人物血量发生变化,搜索减少的数值 四、发现绿色的数值,一般绿…

Vue - 以$、_开头命名的问题及源码梳理

在 Vue 中,以$、_开头的属性,例如:$private、_private;它们是不会被 Vue 代理。 所以在 this 上是访问不到它们的,watch 监听 $private、_private 也是不会生效的。 如果要访问这些属性,可以通过 this.$d…

Go语言的切片(slice)和数组(array)有什么不同?

文章目录 数组(Array)示例代码数组的缺点 切片(Slice)示例代码切片的优点原因和解决方案 总结 在Go语言中,数组和切片(slice)都是用来存储一系列相同类型数据的集合,但它们之间存在一…

java设计模式三

工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂模式有几种变体,包括简单工厂模式、工厂方法模式和抽象工厂模式。下面通过一个简化的案例和对Java标准库中使用工厂模式的源码分析来说明这一模…

spss 数据分析 ,6项数据,根据第一项数据分成2组,统计2组中其他数据的对比 医学spss数据分析

在SPSS中,你想要根据第一项数据(假设它是变量名如Var1)将数据分成两组,并统计这两组在其他五项数据(Var2到Var6)上的差异,你可以按照以下步骤进行: 数据分组: 首先&…

[Unity实战]热更新如何预防过度裁剪

情景再现 假设你现在有一个游戏客户端,客户端只打包了入口场景,游戏场景都存放在了AB包。 你打的热更包里使用了协程中的waituntil修复游戏场景中空投补给资源加载时机问题,但是打出来的热更在真机跑报如下错误: TypeLoadExcep…