win7驱动开发环境搭建

资源下载

微软只有最新版本的visual stutio社区版可供下载,现在(2025.12.23)是vs2026,如果下载老版本社区版,则需要找第三方资源。 我们需要的VS版本是2017,WDK 17763.1,SDK 17763.1,必须这三个配合才能编译windows 7的驱动,当然也可以有其他配合,我并没有使用。

VS2017社区版下载链接

运行VS2017安装程序后,需要"使用C++的桌面开发"选中 安装详细信息如下图所示:

SDK只能选中10.0.19041.0版本的,没有其它可选。

记住缓存位置,以后可以直接把这个文件夹打包,后续在其他位置安装就不需要再下载了:

安装按钮边上选择"全部下载后再安装",开始安装。

安装VS2017完毕后运行一下程序,注意社区版必须要登录才能使用,我得验证登录好几次才能最终进入,不知道是不是都这样。进入IDE起始页界面,说明安装没问题,则继续安装WDK和SDK。 最新版本的SDK是下面的网址: https://learn.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk

这个不支持VS2017,从这个界面可以跳转到其它WDK下载:
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/other-wdk-downloads

这个页面可以看到使用VS2019可以支持windows7驱动开发,这仍然不是我们要找的,我们得在不支持的WDK版本寻找:
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/legacy-wdk-downloads

可以看到VS2017能支持的最新版本WDK是这个:

SDK和WDK都要选择17763.1这一行的。其它版本虽然下载的文件也叫winsdksetup和wdksetup,但是他们都是对应不同版本的sdk和wdk,只有同一个版本的sdk和wdk才能配合工作。先安装sdk,建议选中Download后进入目录安装,这样就不需要每次下载都安装一遍。

WDK也一样建议先下载再安装,即使安装过VS2017,安装过程中也会有这个提示,不用管,继续装。

装完后会提示:是否安装扩展,选择安装扩展,最后完成如下图所示:

无法解析外部符号

一切安装完成后,就可以打开VS2017,新建驱动工程了:

选择"Kernel Mode Driver(KMDF)"就可以生成一个有基本框架代码的工程。此时编译可能会报下面的错误:

复制代码
1>BufferOverflowFastFailK.lib(loadcfg.obj) : error LNK2001: 无法解析的外部符号 ___guard_eh_cont_table
1>BufferOverflowFastFailK.lib(loadcfg.obj) : error LNK2001: 无法解析的外部符号 ___guard_eh_cont_count

这是由于SDK不匹配造成的,在项目上面右键-属性,将SDK版本改成10.0.17763.0

再编译就可以生成sys文件了。

默认情况下生成win10驱动,需要按照下面设置才能生成win7支持的:

主要是将驱动设置中的目标系统版本设置为Windows 7

编译时报告inf2cat错误

22.9.7: DriverVer set to a date in the future (postdated DriverVer not allowed) 这是由于系统时间和UTC时间不一致造成的,应该设置使用本地时间,设置方法:

打开项目属性->配置属性->InfCat->General->Use Local Time->选择【是】。

相关推荐
小此方17 小时前
Re:Linux系统篇(二十四)进程篇·九:进程从创建到退出的底层机制与写时拷贝全解
linux·运维·驱动开发
都在酒里17 小时前
Linux字符设备驱动开发(九):内核定时器——实现LED周期性闪烁与轮询驱动原理
linux·运维·驱动开发·交互
都在酒里18 小时前
Linux字符设备驱动开发(十):综合实例——I2C传感器 + LED智能控制与进阶指南
linux·运维·服务器·驱动开发·交互
hai3152475431 天前
RISC-V核E203核前向旁路的架构性顽疾
驱动开发·架构·硬件架构·硬件工程·risc-v
hai3152475431 天前
RISC-V CVA6 AXI适配器+DMA桥蜂鸟E203处理器的总线接口单元(BIU)仲裁器
驱动开发·fpga开发·硬件架构·硬件工程·精益工程
都在酒里1 天前
Linux字符设备驱动开发(七):输入子系统——驱动GPIO按键并上报事件
linux·驱动开发·交互
nLif1 天前
基于FUSE的文件系统过滤驱动开发方法
驱动开发
都在酒里2 天前
Linux字符设备驱动开发(八):中断底半部——tasklet与工作队列实现按键消抖
linux·运维·驱动开发·交互
枳实-叶2 天前
【Linux驱动开发】第17天:I2C子系统整体架构
linux·驱动开发·架构
智者知已应修善业2 天前
【proteus仿真CD4511抢答器4路】2024-5-13
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程