0%

VS编译汇编/VS内核开发环境搭建

驱动开发环境搭建

​ 参考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++各自编译的规则去寻找对象,当不一致时,就会产生找不到定义的情况。此时的解决方法根据项目内容一般有两种:

  1. 此时一般使用extern “C”将cpp类型按照C语言规则解析
  2. 或者将c文件后缀改成cpp即可解决。