简单修改使WDK 22H2(VS2022)兼容旧版WDK10
本帖最后由 jzw00101 于 2022-8-12 21:04 编辑VS2022 更新了众多功能和特性,如64位 IDE、MSVC v143等,然而该版本只支持最新版的 WDK(22H2/10.0.22621),新版本砍掉了众多编译支持(https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk)。为了在 VS2022 中更愉快地写驱动,并让它尽可能兼容旧工程的编译,我们可以对WDK做一些patch。。
修改前请注意备份!!
1. 支持32位以及 Win7~8.1 的 target
修改 C:\Program Files (x86)\Windows Kits\10\build\10.0.22621.0\WindowsDriver.Common.targets(假定WDK安装在64位系统的默认目录中)
搜索 '$(DDKPlatform)' == 'x86' or '$(DDKPlatform)' == 'ARM')
删除选中部分:
2. 取消 ExAllocatePool、ExAllocatePoolWithTag 等函数的警告
修改 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\km\wdm.h
搜索 use ExAllocatePool2
删除 __declspec(deprecated(xxx)) 和 __drv_preferredFunction(xxx),如:
3. 解决默认编译输出在 Win7 下加载蓝屏
1. 修改 Target OS Version 为 Windows 7
2. 删除 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\km\x64\bufferoverflowfastfailk.lib,复制一份同目录下的 BufferOverflowK.lib 并重命名为 bufferoverflowfastfailk.lib
3. 关闭栈保护(不推荐):工程属性 > C/C++ > Code Generation > Security Check > Disable
根本原因:
默认生成的代码中 security_init_cookie 不负责初始化 security cookie,而Win7的加载器还不支持初始化 security cookie,从而导致蓝屏。
谢谢分享! win7 蓝屏没出现 ,但有几个 小bug 感谢,正好有需要,非常感谢~ 谢谢大佬成功解决了win7蓝屏但是win11又加载不了驱动了为啥
老哥可以发一份修改后wdm文件吗,我改完有更多错误了 有个完整版的下载地址ma?
页:
[1]