好久不开发Windows驱动,现在又变天了,微软的工具更新的非常快,Visual Studio和WDK都发了新版本,推荐安装新版本,但如果非想安装老版本,也可以。Visual Studio 2022不支持Windows 11, version 21H2 WDK,必须下载最新的Windows 11, version 22H2 WDK,这个版本的WDK已经不支持Win7了,
按照提示,下载安装Visual Studio 2022,选择Desktop development with C++开发,在单个组件上安装,MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)和MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest),默认下载缓存位于
C:\ProgramData\Microsoft\VisualStudio\Packages
,下一步安装SDK,按照提示下载最新版本的SDK独立安装,也可以从Visual Studio 2022上,选中安装,版本是10.0.22621.0,
然后安装WDK,只能下载独立安装,无法通过Visual Studio 2022来安装,版本10.0.22621.382,SDK和WDK版本必须匹配,否则无法工作。
在 WDK 10 以前的 WDK 版本中,驱动程序解决方案始终需要包项目。 在 WDK 10 中,仅当你在驱动程序包中加入多个驱动程序时才需要包项目。 使用以下指南:
Please review Hardware development kits for Windows 10, Version 2004 (10.19041.1), which addresses a bug with ExAllocatePoolZero.
Please review Hardware development kits for Windows 10, Version 2004 (10.19041.1), which addresses a bug with ExAllocatePoolZero.
Issue in ExAllocatePoolZero, ExAllocatePoolQuotaZero, and ExAllocatePoolPriorityZero functions FIXED!
Microsoft is aware of an issue with ExAllocatePoolZero that can lead to an allocation not getting zeroed on Windows 10, version 1909. This issue has been fixed in a security refresh of the WDK for Windows 10, version 2004 and the Enterprise WDK (EWDK) for Windows 10, version 2004 on December 16th, 2020. For information on downloading the latest WDK, see Download the Windows Driver Kit (WDK).
This routine is a wrapper for and a recommended replacement option for ExAllocatePoolWithTag.
ExAllocatePoolZero allocates pool memory of the specified type and returns a pointer to the allocated block. It is identical to ExAllocatePoolWithTag except it zero initializes the allocated memory.
每次打开vs都会弹出下面的对话框,在vs2019中,卸载WDK的vsix扩展,就不报错了,
Driver Testing
Could not load test information. Error: 未能加载文件或程序集“TaefTestParser, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。.
SDK可以有多个,但是WDK只能有一个,而且安装新版本的WDK时,旧的WDK要卸载,而且SDK至少要有一个版本和WDK版本匹配。到控制面中,将所有WDK卸载,然后重装WDK即可。
Driver Signing - Test Certificate 下拉菜单中点击Create Test Certificate。若要使用 Visual Studio 2022 开发和测试驱动程序,请下载 Windows 11 版本 22H2 WDK。Driver Settings - General,Target OS Version改成Windows 10,Target Platform改为Desktop;C/C++ - 常规,警告等级 4,将警告视为错误 否;链接器 - 常规,警告视为错误 否;
Windows SDK 安装
打开页面往下拉到步骤2的位置,点击进行最新版本的windows sdk版本下载,也可以通过后面的 VS 安装工具来安装。
这个版本号和当前 windows 的操作系统版本(winver命令查看)没关系,是编译出来需要支持的最高版本(同时也向下兼容部分系统)
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失error C2511: “void IntelFunction::Mutate(const CompileContext &,bool)”:“IntelFunction”中没有找到重载的成员函数elseend。
https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
《VS2019+WDK10驱动开发环境搭建》
并在此做下记录
1、安装VS2019,这里选择安装的是社区版
工作负载这里,选择“使用C++的桌面开发”
WDK:Windows Driver Kit(Windows驱动程序工具包)
SDK: Software Development Kit(软件开发工具包)
因为SDK需要
开发的驱动程序没有官方数字签名,只能在测试模式下加载。命令行键入以下命令,后桌面右下角出现测试模式字样,说明进入了测试模式命令行键入以下命令,后桌面右下角没有了测试模式字样,说明退出了测试模式。
如果开发的目标系统运行 Windows 10 版本 1607 或 Windows 10 版本 1703,则应安装 Visual Studio 2015,然后再下载并安装适用于目标 Windows 10 版本的 Windows SDK 版本,如下表所示。如果在已安装适用于 Windows 10 版本 1607 的 WDK 的系统上安装了适用于 Windows 10 版本 1703 的 WDK,则可能会删除 WDK 早期版本的某些文件。更高版本的 Visual Studio 包含 Windows SDK。
上文我们曾提到了多种C语言编译器,笔者心中最适合初学者的选择为 visual studio 2022。本文我们将来分享一下 visual studio 2022开发环境的搭建。
WDM 驱动作为 Windows 服务运行,在执行具体代码前,驱动 SYS 文件首先会被映射到内核地址空间,作为内核的一个驱动模块(MODULE),接着系统对这个驱动模块执行导入表初始化、修正重定位表中对应的数据偏移等操作,最后系统会调用该驱动模块的DriverEntry 入口函数,如果这个入口函数返回 STATUS_SUCCESS,系统认为这个驱动初始化成功;项目工程内生成了一个空白的 MyDriver.c 文件,我们准备在这个文件中添加驱动代码,我们先增加驱动开发的头文件 ntddk.h。
本节介绍如何在Windows10系统(2004版本,操作步骤中有如何查看版本)中安装VS2019及WDK开发包,并进行相应环境配置、修改,使我们可以在WIN10中进行驱动开发。
你如果只是单纯的想用VS2019写C++代码,选择C++的桌面开发即可,如果是需要Python / Android/等平台的开发,根据实际情况勾选即可。2、正常情况下,va-2022也是支持低版本的vs的,第一次安装可能会出现,匹配和安装都成。下一步就是选择安装位置的选择,在上面的选项中可以选择;功,扩展中已安装也能找到,并且也是在重启的状态;路径默认一般是C盘,因为有下载缓存也会临时存放在C盘,如果安装在C盘,一定要。需要注意的是在选择开发配置的时候,可以安装自己的实际开发需要时设置。