驱动开发环境搭建
参考msdn官方文档,注意VS版本(Windows版本是否会影响不清楚,没试过)和SDK,WDK匹配的问题,SDK,WDK版本号一致,但是不匹配对应的VS版本都不行。
VS版本 | Versions of Windows | SDK版本 | WDK版本 |
---|---|---|---|
VS2019-Community | Windows 10,version 1903 | 10.0.18362.0 | 10.0.18362.1 |
VS2019-Community | Windows 10,version 2004 | 10.0.19041.0 | 10.0.19041.1 |
配置好后,还需要安装spectre缓解的单个组件,在VS修复里面找到单个组件项,搜索spectre安装(MSVC开头的)。将警告视为错误关闭,然后就可以愉快的开发了。
VS2019+汇编asm
编写单独的asm文件,而不是使用内嵌汇编的方式,记录一下编写方法:
- 新建cpp文件,修改文件后缀为asm
- 工程右键->生成依赖项->生成自定义,勾选masm,点确定
- 右键asm文件->属性->常规,项内容修改为Microsoft Macro Assembler
此时asm文件便可编译了,asm文件中函数的声明可以放到头文件中。
asm编译生成的函数一般是按照C语言的规范去解析的,这一点需要注意。如果在链接时出现找不到定义,一般就是这种情况,同一个项目中存在按cpp解析生成的obj,以及按C解析生成的obj,二者在寻找函数名或者对象名这些时,会受C/C++各自编译的规则去寻找对象,当不一致时,就会产生找不到定义的情况。此时的解决方法根据项目内容一般有两种:
- 此时一般使用extern “C”将cpp类型按照C语言规则解析
- 或者将c文件后缀改成cpp即可解决。