本文主要讲怎样正确编译得到驱动程序(不包括调试)。
环境:VS2019 Community + Windows10专业版
1.安装VS2019
下载Visual Studio Installer, 安装时工作负载选择 使用C++的桌面开发 。
由于WDK 默认启用了 Spectre 缓解,需要在单个组件中添加生成工具对应版本的 Spectre 缓解库 。(这里只下载了x64/x86处理器架构)
2.安装WDK
下载的 WDK 需要与 VS 2019下载时的 Windows 10 SDK 版本对应
我这里下载的WDK所要求的版本号为 Windows 10 SDK (10.0.19041.685)。
在 Windows设置-应用 中可以查看当前安装的SDK与WDK版本是否一致,不一致可以到官网下载对应的版本。
以上都可以直接在官网下载:参考链接
等待WDK下载安装完成,关闭时默认选择安装 WDK VS 扩展。
如果WDK安装完成后没有安装WDK VS 扩展,可以在WDK安装目录 Windows Kits\10\Vsix 中找到 WDK.vsix 文件双击打开。
所有安装完成后,打开VS2019,创建新项目中会出现 Driver 这一项,下面就可以进行驱动程序开发了。
3.一个简单的驱动程序
新建Empty WDM Driver项目
添加源文件
driver.c
// driver.c #include <ntddk.h> void DriverUnload(PDRIVER_OBJECT pDriverObject); NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath) { DbgPrint("[MyDriver] DriverEntry\n"); NTSTATUS status = STATUS_SUCCESS; pDriverObject->DriverUnload = DriverUnload; return status; } void DriverUnload(PDRIVER_OBJECT pDriverObject) { DbgPrint("[MyDriver] DriverUnload\n"); return; }
编译前
a.移除项目自动生成的.inf文件
b.配置属性 - C/C++ -常规
警告等级 设置为 等级3
将警告视为错误 设置为 否c.配置属性 - 链接器 -常规
将链接器警告视为错误 设置为 否
d.配置属性 - Driver Signing - General
Sign Mode 设置为 Off。
编译通过最终生成 MyDriver.sys。