错误01:需要缓解了 Spectre 漏洞

使用Microsoft Visual Studio Enterprise 2019版本 16.11.15编译一个驱动程序,报错如下:

Microsoft.CppBuild.targets(486,5): error MSB8040: 此项目需要缓解了 Spectre 漏洞的库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。了解详细信息: https://aka.ms/Ofhn4c
1>已完成生成项目“TestWindowsDriver01.vcxproj”的操作 – 失败。

原因:这是因为Visual Studio默认开启了缓解Spectre攻击的机制,所以就有两种解决方案,一种是生成解决方案时禁用Spectre缓解机制,另一种就是安装Spectre缓解机制

1.禁用Spectre缓解机制

在创建的工程目录上,鼠标右键选择“属性”,然后选择C/C++,选择代码生成,找到Spectre缓解,右侧会有一个小箭头,选择禁用即可。

2.安装Spectre缓解机制

如果需要安装的话,可以从Visual Studio Installler中搜索Sepctre

错误02:警告视为错误

main.c(2,60): error C2220: 以下警告被视为错误
1>D:\DS920\Code\Visual Studio\Windows main.c(2,60): warning C4100: “reg_path”: 未引用的形参
1>D:\DS920\Code\Visual Studio\Windows \main.c(2,36): warning C4100: “drvier”: 未引用的形参

在创建的工程目录上,鼠标右键选择“属性”,然后选择C/C++,选择”常规“,将警告等级改为”等级2“,将警告视为错误改为“否”。

错误#03:无法解析的外部符号 _DriverEntry@8

1>BufferOverflowFastFailK.lib(gs_driverentry.obj) : error LNK2019: 无法解析的外部符号 _DriverEntry@8,函数 _GsDriverEntry@8 中引用了该符号
1> 已定义且可能匹配的符号上的提示:
1> _DriverEntry@172
1>\TestWindowsDriver01\Debug\TestWindowsDriver01.sys : fatal error LNK1120: 1 个无法解析的外部命令
1>已完成生成项目“TestWindowsDriver01.vcxproj”的操作 – 失败。
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

解决方案:将Debug这个地方的X86改为X64,就可以编译成功了。