WIN10-2004+VS2019+WDK驱动开发环境安装及配置

一、定义介绍

  本节介绍如何在Windows10系统(2004版本,操作步骤中有如何查看版本)中安装VS2019及WDK开发包,并进行相应环境配置、修改,使我们可以在WIN10中进行驱动开发。

二、操作步骤

必须先安装VS2019

(一)下载并安装VS2019(包括其组件)

1.下载VS2019

如果不想麻烦(狗头),可以直接网上搜索一下下载。
如果支持正版,可以通过官网VS2019官网下载(找下载链接也得找一会,这里就直接提供了)下载(但可能需要VPN和微软账号)。

2.安装VS2019

大部分下载的VS2019只是个安装器(不然也不能那么小),如图所示

双击运行,自己一直下一步,直到如下图所示界面,勾选上红框部分。
稍微解释一下,C++桌面开发是必须的,不需要多说;Windows 10 SDK(我这里用的是10.0.18352.0)是安装WDK的前提,因为WDK用到了Windows SDK中的东西;MSVC是Microsoft的Visual C/C++编译器。
!!!注意:Windows SDK的版本必须和WDK保持版本平衡,如果用错了版本就没法成果安装WDK。!!!

(二)下载并安装WDK

1.下载WDK

进入官网链接WIN WDK下载下载WDK安装程序,如下下图所示
这里的WDK的版本必须和WIN10的版本一致!!!右击此电脑——属性即可查看到版本信息,如下图
我这里使用的是2004版本的WDK,对应我的SDK版本。

2.安装WDK

双击WDK安装程序,如下图

选择红框部分

继续,直到如下图所示,选择红框部分

点击上图Close会自动弹出VSIX(签名)安装,安装即可

到此,所有安装都已经完成,现在已经可以正常创建驱动项目了。

(三)创建驱动项目并配置

1.打开VS2019创建驱动项目

此时已经可以创建驱动项目,如果不行请仔细对照步骤检查,尤其是WDK和SDK版本对照问题。
接下来就创建新项目,按照如下图所示进行选择。这里注意一下虽然是C++项目,但因为我们建立的是空项目,可以自己建立c文件,所以你自己建立c或c++文件都不影响,但两者代码有些区别,只要后面代码写对就行。

项目名称,项目放哪个文件夹就不再赘述。

创建完成后VS2019显示如下图,只有几个文件夹,没有文件

我们保存的项目路径中多了几个文件,如下图

2.修改配置

(1)创建驱动源文件

先在VS2019右侧source目录下创建一个空的点c文件,命名为“HelloDriver.c”,如下图。其实,驱动大部分都是由c写的(因为Windows操作系统就是C写的,也可以是C++),驱动和别的程序的区别无非就在于①.多了几个库(内核库等)②.编译方式不同。这样去理解驱动你就会发现高深莫测的内核驱动其实也不过如此。

(2)打开项目属性,如图

(3)修改警告等级

在“C/C++——常规”中修改警告等级为“3”;警告视为错误设为“否”,如图

(4)关闭Spectre缓解

在“C/C++——代码生成器”中找到并关闭Spectre缓解,如图所示,设置Spectre Mitigation为“Disable”。Spectre缓解是一种硬件漏洞的软件规避方法,安装了WDK之后会导致Spectre缓解被默认打开了,如果没有安装带Spectre缓解的库,编译就会失败。

(5)设置警告模式

在“Driver Signing——General”中修改“Sign Mode”为“Off”,如图

(6)排除inf文件

在Drvier Files文件夹中找到.inf文件,右击从项目中排除

(7)修改目标版本

根据你要生成的项目用于什么环境,在“Driver Setting——General”中修改目标系统版本“Target OS Version”选项,可以选择Win7、Win8、Win10等等,此外,Debug和配置管理器(就是那个修改X86还是X64项目的下拉栏)根据不同的需求自己定制

到此,一般该配置的东西都已经配置完成了,下面就可以写代码并编译了。

(四)项目测试

1.编写源码

在“HelloDriver.c”中编写驱动程序,这里给出个小例子,初学者照抄就行。

/*
FileName:HelloDriver.c
*/#include <ntddk.h>void DriverUnload(PDRIVER_OBJECT pDriverObject);NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath)
{DbgPrint("HelloDriver DriverEntry\n");NTSTATUS status = STATUS_SUCCESS;pDriverObject->DriverUnload = DriverUnload;return status;
}void DriverUnload(PDRIVER_OBJECT pDriverObject)
{DbgPrint("HelloDriver DriverUnload\n");return STATUS_SUCCESS;
}

2.编译生成SYS

第一次生成就点击“生成解决方案”
以后修改过代码后就点击“重新生成解决方案”
最下面没报错说明就生成成功了,如图

之后,我们在Debug文件夹下的MyDriver1文件夹下就可以看到.sys文件了,如图

至此,整个环境已经配置完毕,测试案例也已经通过编译并成功生成sys驱动文件。

来自:九七的Windows内核驱动开发
作者原创文章,文章版权归本文作者所有,未经作者同意请勿以任何方式进行复制、转载等盗版操作,请勿用于商业、违法用途!违者自行承担法律责任!

九七的Windows内核驱动开发 WIN10-2004+VS2019+WDK驱动开发环境安装及配置相关推荐

  1. Win10系统下mysql-5.7.23的安装和配置方法

    ****Win10系统下mysql-5.7.23的安装和配置方法**** 1. 到MySQL官网下载MySQL 5.7.23的版本,下载地址:https://dev.mysql.com/downloa ...

  2. Java开发环境安装与配置(快速配置)

    知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文 ...

  3. 【前端开发环境安装、配置、项目搭建全教程】

    前端开发环境安装.配置.项目搭建全教程 1.Node环境安装 简单的说 Node.js 就是运行在服务端的 JavaScrip,基于 Chrome JavaScript 运行时建立的一个平台,Node ...

  4. java实验环境,实验一(Java开发环境安装与配置

    <实验一(Java开发环境安装与配置>由会员分享,可在线阅读,更多相关<实验一(Java开发环境安装与配置(6页珍藏版)>请在人人文库网上搜索. 1.实验报告实验报告序号:实验 ...

  5. nvidia dch 驱动 与windows 不兼容_NVIDIA不再提供DCH驱动下载 Win10装不了驱动看这里...

    新装机或者换了电脑,第一件事是什么?肯定是升级硬件驱动了,特别是显卡驱动,会直接影响电脑的游戏性能,没有驱动是不可行的.不过大家遇到过驱动装不上的情况吗?如下所示: 出现这种情况,通常是因为用户安装的 ...

  6. win10 android驱动问题,WIN10 64位 android驱动无法安装

    何如安装小米驱动1首先先下载小米驱动,肯定要去官方网站去下载.登录小米官网,选择服务--下载页面--手机驱动. 2驱动有两种驱动:1.MIUI V4或者V5 2.MIUI 2.3版本 3点击后选择下载 ...

  7. win10双击运行.jar(JAVA环境安装)超详细过程

    .jar文件的类型为Executable Jar File (.jar),可以直接双击执行,但是运行.jar需要安装相应的java环境. 其实.jar文件可以直接解压缩,里面都是.class文件,但是 ...

  8. Qt On Android开发环境安装、配置

    本文记录在Windows 8.1下,Qt on Android 5.5开发环境的安装和配置. 1.安装JDK 到甲骨文网站下载JDK:http://www.oracle.com 下载安装成功后,设置环 ...

  9. qt android安装在哪,Qt On Android开发环境安装、配置

    本文记录在Windows 8.1下,Qt on Android 5.5开发环境的安装和配置. 1.安装JDK 到甲骨文网站下载JDK:http://www.oracle.com 下载安装成功后,设置环 ...

最新文章

  1. jdbc mysql select_java连接mysql数据库并使用jdbc进行查询详解
  2. python运行非常慢的解决-为什么python运行的慢
  3. 《微机原理及接口技术》第03章在线测试
  4. Python函数传参方式超级大汇总
  5. java inputreader_Java之InputStreamReader类的实现
  6. ARM(IMX6U)裸机官方SDK包使用
  7. 高级SQL注入拿shell,一般黑客不知道。哈客
  8. Python(八) 函数、模块
  9. jtoken判断是否包含键_Redis源码解析十三--有序集合类型键实现(t_zset)
  10. Android开发笔记(七十八)异常容错处理
  11. 力扣算法题—071简化路径
  12. word打开很慢解决办法
  13. SpringBoot应用接入Prometheus+Grafana
  14. 30道面试常见的数据结构算法题
  15. 最近的错误整理(LMY)
  16. 【一神】10.15系统 oc引导 amd黑苹果 cpu识别错误/未知
  17. 面向交通预测的动态图卷积循环神经网络:基准和方法(重磅推荐)
  18. 有关绩效考核系统的一些想法
  19. 从魅族的成功总结的几条经验?
  20. Dell服务器出错代码和含义

热门文章

  1. 第04课:生活中的单例模式——你是我生命的唯一
  2. Github多个账号设置SSH 逐个问题击破 新手友好(Windows) (史上最全)
  3. Java实现Excel转pdf
  4. 【H3C V7路由器实战视频课程系列-9】BGP路由配置与管理-王达-专题视频课程
  5. html+手机自适应源码,手机端页面自适应解决方案—rem布局(进阶版,附源码示例)...
  6. ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网
  7. 研一Python基础课程第四周课后习题分享(含源代码)
  8. 2022年支付宝集五福活动链接大全
  9. Linux初入19 Apache服务
  10. Vue 菜单路由(router)只替换对应主页面中内容,而不是整个home页面的router index.js的两种设置方法