好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 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,从而导致蓝屏。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|