Windows Driver开发_安装与配置环境

首先到这个网站里去下载Visual Studio2019,注意目前最新版的WDK仅支持Visual Studio2019,如果要下载2022版本目前推出了预览版,但需要申请下载,所以这里以2019为例。

以前的 WDK 版本和其他下载 - Windows drivers | Microsoft Docs

打开网站后往下拉,找到Visual Studio2019下载,选择一个适用于你的版本,如果个人的话建议Community版本

 下载之后双击打开进入安装界面,安装时选择C++的桌面开发要选中,同时“用于Windows 10 SDK)”这个也要选中,WDK基于这些LIB。 

如果你电脑上已经有VS了,但是没有装win10SDK,你可以到这个网站下载SDK:Windows SDK - Windows 应用开发

如果网页提示Win11 SDK也没事,可以下载安装到你的Win10上,因为这个是兼容的。

然后在页面往下拉,可以看到WDK,这里有许多版本,你不用在意你的Win10版本,你只需要下载最新的一个就可以了,是向前兼容的。 

下载下来以后用管理员权限运行并安装到你的电脑上就可以了,记住安装顺序,先安装好Visual Stuio2019以后在安装WDK,安装WDK时记得记住安装路径,因为等下需要到安装路径下去安装Visual Stuio2019 Tools插件。

安装完成之后打开WDK安装路径,一直往下拉找到“Vsix”目录双击进去

可以看到vs2019,双击进去

然后双击WDK.vsix,注意,执行这一步之前先退出Visual Stuio2019

安装完成之后在打开Vs2019,在新建项目里就可以看到WDK的项目了,后面括号里(KMDF)的意思是Kernel MDF模型,WDK使用的是MDF开发框架模型,所以这里叫MDF。 

我们创建一个WDK项目,这里创建的是一个基础内核MDF模型项目,注意这里选择“Kernel Model Driver,Empty”空项目,这样更容易理解,如果创建非空项目的话不适合基础开发人员理解,我们先创建一个空项目编写一个基础的代码,这样方便上手

然后我们在增加一个“driver.c”的源文件,注意这里一定要以.c结尾,只能是C语言文件,在Visual Studio里如果.c结尾的则会用C编译器来编译,这样会节省很大的代码空间,如果是C++的话还会增加额外的一些代码,如普通函数里也会增加try异常代码,以及结构体里会增加构造函数调用之类的代码,这也是为什么我们平常看到的C++程序会比C语言的要大。

另外最重要的一点是Windows内核是C语言编写的,用C编译器编译出来的程序更符号内核程序的入栈方式。

这里文件可以随意命名,以.c结尾就好了,起driver只是windows driver开发中惯用这个名字作为main文件

 然后我们包含基础头文件:

这个是ddk的头文件,我们的wdk基于ddk,只不过wdk增加了一些针对电源、PNP的功能,WDK原本就是DDK框架的增强版,只不过现在改名了叫WDK了,WDK包含了DDK框架并增加了一些增强功能,以便能够将过去的一些驱动移植到最新的系统中。

本例程创建一个NTDDK的驱动框架,后续会写文章教大家编写WDK框架的驱动。

#include <ntddk.h>

 然后创建一个DriverEntry函数,这个函数就相当于main函数,原型以及返回值都有要求的,这个函数会在驱动被调用时执行。

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){

     return STATUS_SUCCESS;

}

然后直接build

build可能会出现这个问题: 

这个是Spectre缓解库的问题,MS官方推出的一个库,默认在驱动开发时会开启,但是需要你电脑上安装对应的VS Spectre库,这个库的作用是用来保证硬件开发时的漏洞问题,它对应的是C++库,你可以把它理解为C++的增强安全库,它里面的函数对指针与堆栈溢出代码做了很好的防范,使用这个库可以保证你的代码不会出现内存溢出或指针非法引用。

解决这个问题有两个方案,第一是到官网下载对应的Spectre缓解库,但是比较麻烦,第二是在项目中禁用它,这里我们先禁用它:

build之后就可以在文件夹下看到生成的sys文件以及inf文件:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值