Windows驱动开发中支持STL_win10驱动开发

Windows驱动开发中支持STL_win10驱动开发

编码文章call10242025-02-07 16:25:3215A+A-

Windows驱动开发中一般的数据结构比如链表,平衡树,位图等都有API提供,使用起来也还方便。随着时代进步,驱动开发也开始支持C++,这时自然想到驱动中能够使用STL该多方便,网上也有不少类似的例子,和Visual studio结合都有这样那样的问题,最近通过网络搜索找到一个比较简易的办法。

一般的,要支持STL,要重写STL的allocator,重载new和delete及一些crt全局初始化的东西,这些需要知道一些与C++及VC编译器相关的知识,幸运的是,github上有一个开源工程HyperPlatform提供了最简单易用的支持,可以摘用如下:

1、使用visual studio 2017 + win 10 WDK

2、下载hyperplatform源码, 提取出global_object及kernel_stl加入你的工程(可能需要稍做修改)

kernel_stl里会重载new和delete使用内核函数ExAllocatePool和ExFreePool

3、在工程输入库里加上libcnptr.lib(为浮点操作提供支持的库)

4、在驱动中DriverEntry起始处注意调用
GlobalObjectInitialization,例子代码如下:

#include "global_object.h"

#include

#include

using namespace std;


NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)

{

UNREFERENCED_PARAMETER(DriverObject);

UNREFERENCED_PARAMETER(RegistryPath);


GlobalObjectInitialization();

vector tmp;

tmp.push_back("123456");


.....


return STATUS_SUCCESS;

}


微软有一个开源wil库据说也提供了此类支持和封装,有兴趣的同学可以试用

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4