VS2019 开发第一个Windows驱动程序

    VS大概从2013开始集成Windows驱动开发功能;win10下,需要安装3个东西:VS2019(VC++2019),WDK 10(Driver Kit),win10 SDK;然后启动VS2019以后,创建项目模板里面,KMDF模板出来,就可以进行驱动开发了;
    不过这个KMDF驱动,Windows自身已经进行了很多封装,你可以开发驱动加载进内核,但是要想像早期的VxD驱动的情况,相对比较容易做成一些厉害病毒攻击系统,是不太可能的;
    下面是整个环境搭建和构建第一个驱动的一些截图;环境搭建可能会需要时间比较多;VS可能还需要更新;

先看一下VS2019;

找一下KMDF模板;没有;

更新VS2019;启动VS2019 Installer;

结果Installer自己下了一堆东西来安装;耗费不少时间;

看一下Win10 SDK,已安装;装了3个版本;记不清怎么装的了;

安装Driver Kit;版本10.0.18362.1;

下面wdksetup.exe这个是Driver Kit的安装文件;

安装目录如下图;

Driver Kit 安装完成;自带WinDbg;

VS2019更新时间比较长;暂停后又继续;搞了几次;

然后进入Driver Kit的安装目录的如下位置;

双击WDK.vsix文件;执行操作,以便在VS2019中添加KMDF模板;

WDK.vsix执行完;

启动VS2019,KMDF模板有了;

新建一个项目;生成如下文件;

构建;出现错误;

error : A WDK corresponding to target version '10.0.17763.0' was not found. Please install this WDK version before building.

项目属性设置如下;

看网上资料,说禁用Spectre缓解;

仔细看了一下,原来是如果VS本来能开发应用,如果装了驱动环境,能构建驱动,但是不能构建应用,则禁用Spectre缓解;

本机装了3个Win10 SDK;卸掉版本低的2个;

看一下安装好的WDK版本;

 

可能是WDK版本和Win10 SDK版本有些不兼容;

如果安全按照错误提示;需要下个Win10 SDK 10.0.17763.0 安装;目前装的是10.0.17763.132;不知有无其它办法;

参阅:

https://blog.csdn.net/newnewman80/article/details/90754999
https://blog.csdn.net/qq_36535153/article/details/99314223

 

 

  • 0
    点赞
  • 15
    收藏
  • 打赏
    打赏
  • 3
    评论
【适合小白入门】深入掌握Windows操作系统原理,提升程序开发水平,为学习驱动开发,内核安全打下基础。学完本课程可以轻松的理解Windows内核,开阔思路,对没有底层开发基础的人起到有非常好的指导作用。在此基础上可以开发出有趣且功能强大的软件。 课程目录: 第1章windows驱动基础 第一课 认识windows驱动 第二课 在虚拟机里安装windows操作系统 第三课 windows操作系统基本概念 第四课 操作系统的分层结构 第2章windowsw驱动编译环境配置、安装及调试 第五课 安装驱动开发环境 第六课 安装驱动开发环境 第七课 实战:编写驱动程序加载器 第3章驱动程序的基本结构 第八课 复习c语言的指针和数据结构 第九课 windows驱动程序的基本结构 第十课 编程实战-创建设备对象 第4章windows内存管理 第十一课 内存管理操作 第十二课 驱动开发中使用链表 第十三课 驱动开发中使用快查表 第十四课 在驱动中使用c++中内存管理操作-newdelet 第十六课 驱动开发中宏与断言的使用 第5章应用程序与驱动程序通信 第二十六课 irp与派遣函数 第二十七课 缓冲区读写操作 第十五课 在驱动中使用结构化异常处理 第二十八课 缓冲区读写操作 第二十九课 模拟文件 第三十课 直接方式与其它方式读写操作 第三十一课 io设备控制操作 第三十二课 io设备控制操作 第6章windows内核函数 第十七课 内核模式下的字符串操作1 第十八课 内核模式下的字符串操作 第十九课 内核模式下的字符串操作 第二十课 内核模式下的文件操作 第二十一课 内核模式下的文件操作 第二十二课 内核模式下注册表操作 第二十三课 内核模式下注册表操作 第二十四课 内核模式下注册表操作 第二十五课 内核模式下注册表操作 第7章驱动程序的同步处理 第三十三课 内核模式下的同步与异步操作 第三十四课 用户模式下的同步对象1_事件 第三十五课 用户模式下的同步对象2_线程信号量与互斥体 第三十六课 内核模式下的同步对象3_系统线程创建与普 第三十七课 内核模式下的同步对象4_信号量与互斥体 第三十八课 内核模式与用户模式间的同步操作 第三十九课 其它内核同步要素 第8章IRP的同步与异步 第四十课 应用程序的对文件同步与异步操作 第四十一课 irp异步完成 第四十二课 irp的取消与startio函数 第四十三课 自定义startio函数 第9章定时器54分钟3节 第四十四课 io定时器与dpc定时器 第四十五课 内核模式下的等待操作 第四十六课 时间函数与irp超时处理 第10驱动程序调用驱动程序1小时3节 第四十七课 通过设备句柄调用驱动程序 第四十八课 设备指针调用驱动程序 第四十九课 自定义irp与ObReferenceObject 第11章分层过滤驱动 第五十课 分层驱动:枚举设备栈上的设备对象 第五十一课 编写过滤驱动程序 第五十二课 irp完成函数 第12章驱动程序开发高级技能 第五十三课 驱动程序的兼容性 第五十五课 驱动调试之windbg与vmware 第五十六课 驱动调试vs vmware 第五十四课 驱动签名证书原理及制作 第五十七课 驱动调试神器virtualkd 第五十八课 汇编语言编写驱动之环境搭建 第五十九课 用汇编语言开发32与64位驱动程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

bcbobo21cn

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值