1. 安装vs2019,安装的时候,Workloads选项卡必须选中“Desktop developmet with c++”,这个是驱动开发必须的。

“Individual components”选项卡里,必须选中“Visual Studio SDK”(注意不是Windows SDK),这样在安装WDK的时候,才会安装VS插件(即vs开始菜单中增加Driver菜单项,且VS创建工程的时候,可以选项驱动类型的工程模板)。

  1. 安装Windows 10 SDK 2004(10.0.19041.1),否则在安装Windows 10 WDK 2004(10.0.19041.1)的时候,会提示SDK不兼容。
  2. 安装Windows 10 WDK 2004(10.0.19041.1)
  3. 新建Empty WDM Driver工程

创建First.c文件并加入到工程,内容如下:

#include <ntddk.h>

void DriverUnload(PDRIVER_OBJECT pDriverObject)

{

}

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath)

{

if (NULL != pDriverObject)

{

pDriverObject->DriverUnload = DriverUnload;

}

return STATUS_SUCCESS;

}

5. 编译,出现错误:

1>------ 已启动生成: 项目: MyDriver1, 配置: Debug x64 ------

1>Building 'MyDriver1' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(458,5): error MSB8040: 此项目需要缓解了 Spectre 漏洞的库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。了解详细信息: https://aka.ms/Ofhn4c

1>已完成生成项目“MyDriver1.vcxproj”的操作 - 失败。

========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

这个错误提示要在VS2019安装程序中,定位到“单个组件”选项卡,把Spectre组件安装了,经搜索,有大量Spectre选项,先把X86/X64的全装了,大约10几GB。

重新编译,也是然并卵。

还是没有把引起编译错误的关键Spectre项安装上。从上图可以看到,这些Spectre是针对不同SDK版本的,有for ATL V141的,有For C++ V14.20的,有“带有Spectre缓解措施的C++ v14.21 ATL for V142生成工具”的,这里有从v14.21到v14.27。全装太大,该装哪个呢,突然想到可以从工程配置中找一找。在工程宏中,搜索14.2,出来的全是14.27,所以可以确认,我们需要的是14.27版本:

接着,在vs2019安装程序中,搜索14.27:

把这些都安装上,生新编译,这个错误就没有了。

也可以采用第二种方案,就是设置工程,让它不使用Spectre缓解:

如果编译出现下面的错误:

1>------ Build started: Project: FirstDriver, Configuration: Debug x64 ------

1>Building 'FirstDriver' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

1>C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.common.targets(460,5): error MSB6004: The specified task executable location "\stampinf.exe" is invalid.

1>Done building project "FirstDriver.vcxproj" -- FAILED.

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

表示SDK的版本与WDK的版本不一致,我们只需要在vs工程中,重新指定SDK版本即可:

对于WDK1709,我们指定与之匹配的SDK版本:10.0.16299.0

6. 再次编译,出现如下错误:

1>------ 已启动生成: 项目: MyDriver2, 配置: Debug x64 ------

1>Building 'MyDriver2' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

1>Stamping x64\Debug\MyDriver2.inf

1>Stamping [Version] section with DriverVer=09/24/2020,17.53.38.653

1>D:\myvc\MyDriver2\MyDriver2.inf : error 1297: Device driver does not install on any devices, use primitive driver if this is intended.

1>已完成生成项目“MyDriver2.vcxproj”的操作 - 失败。

========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

不管它,先把MyDriver2.inf从工程中移除,

7. 再次编译,出现如下错误:

1>------ 已启动生成: 项目: MyDriver2, 配置: Debug x64 ------

1>Building 'MyDriver2' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.

1>First.c

1>D:\myvc\MyDriver2\First.c(3,34): error C2220: 以下警告被视为错误

1>D:\myvc\MyDriver2\First.c(3,34): warning C4100: “pDriverObject”: 未引用的形参

1>D:\myvc\MyDriver2\First.c(8,68): warning C4100: “pRegPath”: 未引用的形参

1>已完成生成项目“MyDriver2.vcxproj”的操作 - 失败。

========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

说是两个参数没有被使用,在驱动开发中,要求比较严苛,警告默认都是当错误来对待的。最简单的方法是,在代码中引用一下这两个变量,例如增加下面两行,只引用,什么也不干:

pDriverObject;

pRegPath;

这种写法太Low了,驱动提供了一个宏,专门用来引用变量:

UNREFERENCED_PARAMETER(pDriverObject);

引用后再次编译,可编译通过,生成.sys和.pdb文件。

总结:就是WDK版本和SDK版本要一致才行,例如,都是10.0.16299.x版本(后面的x代表的小版本可以不同)。另外,有时候Clear all工程还是编译不过,但关闭vs后清空临时文件再编译就可以了,很是诡异。

Win1909+vs2019+Windows 10 WDK 2004(10.0.19041.1) + Windows 10 SDK 2004(10.0.19041.1)环境搭建相关推荐

  1. 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建...

    作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...

  2. .NET6入门:1.Windows开发环境搭建

    作为.NET的最新版本.NET6长期支持版已经发布,.NET6宣称是迄今为止最快的.NET.那当然不能落下时代的潮流,就让我们跟着文章进入.NET6的世界吧. 1. .NET6SDK下载 Downlo ...

  3. VS2019中出现【Windows SDK】找不到 Windows SDK 版本10.0.18362.0的解决办法

    VS2019中出现[Windows SDK]找不到 Windows SDK 版本10.0.18362.0的解决办法 方法一:在项目上右击选择重定目标解决方案,将windosSdk的版本号选择10.0. ...

  4. VS2019遇见的常见错误之一及其解决办法( MSB803 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决

    VS 2019 遇见的常见错误之一及其解决办法( MSB803 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解 ...

  5. MSB8036 The Windows SDK version 10.0 was not found. Install the required version of Windows SDK o

    MSB8036    The Windows SDK version 10.0 was not found. Install the required version of Windows SDK o ...

  6. Veritas NetBackup 10.0 (Unix, Linux, Windows)

    请访问原文链接:https://sysin.org/blog/veritas-netbackup-10/,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 一流的企业备份和 ...

  7. VS SDK更新问题(error MSB8036: 找不到 Windows SDK 版本10.0.14393.0)

    问题:error MSB8036: 找不到 Windows SDK 版本10.0.14393.0,此时会造成项目编译失败 解决办法:下载相应版本的SDK安装,然后修改VS关于SDK版本的配置 WIN1 ...

  8. 找不到 Windows SDK 版本10.0.17134.0的解决办法

    找不到 Windows SDK 版本10.0.17134.0 在VS2017项目中重新生成解决方案时候,报错如下: 百度一下找到解决方案如下:去微软官网找到对应的SDK包,安装即可 win10 SDK ...

  9. VisualStudio 2017:connot open source file XXX.h 以及The Windows SDK version 10.0.17134.0 was not found

    换了新的笔记本电脑,然后把移动硬盘上以前的项目都给配置一下,解过发现莫名其妙的抽风了-- 系统库函数打不开了,第一反应是VS装的有问题,遂用Visual Studio Installer点击修复,无果 ...

  10. Visual Studio找不到 Windows SDK 版本10.0.17134.0的解决办法

    在网上搜索答案,很多都是右键解决方案-> 重定解决方案.但是我的Visual Studio2017没有这个选项. 最后解决方案是打开Visual Studio Installer,下载单个组件 ...

最新文章

  1. hadoop2.2.0 集群安装配置
  2. 计算机项目管理报告,《软件项目管理》报告.doc
  3. 8 Redis 持久化RDB
  4. 1.3.3 错题整理(组成原理)
  5. html中加入js,html嵌入js
  6. Java BufferedReader skip()方法与示例
  7. [html] 你知道什么是反向链接吗?它有什么应用场景呢?
  8. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第32篇]基于博弈的证明和基于模拟的证明
  9. webdriver.chrome()禁止加载图片
  10. 电脑控制手机屏幕软件_手机屏幕如何投屏到电脑
  11. 使用IBM WID 建立SOA 之WID简介
  12. linux下监控磁盘空间脚本
  13. underscore源码学习笔记(一)
  14. HDOJ2003求绝对值
  15. vue 微信支付的坑_微信支付踩坑
  16. Spring Boot 8:Spring Boot整合Redis
  17. 在线运行html代码网站汇总(HTML代码在线运行实用网站收集)
  18. 1156:求π的值(C C++)
  19. RSF 异步访问性能分析报告 - 百兆网卡下的彪悍性能
  20. 爬虫系列之爬取1688

热门文章

  1. python代码扫描工具_Python脚本实现Web漏洞扫描工具
  2. C语言程序段的定义、实际应用分析
  3. 一文读懂软考高项(高级-信息系统项目管理师)+无套路学习资料
  4. 格拉布斯法—异常值判断(异常值)
  5. 平稳时间序列以及MATLAB相关工具箱学习笔记
  6. 人工智能:状态空间图(超详细经典例题讲解,通过例题教会你如何解决状态空间图问题)
  7. 有幸为鲍勃大叔的封山之作《匠艺整洁之道》写了推荐序,顺手赠书!
  8. 证件照制作(一寸二寸照片制作)微信小程序源码
  9. 原声php 读取excel乱码_如何解决php读取excel乱码问题
  10. 李江涛:使用Sakai构建开放式教学平台