You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Windows桌面/控制台应用中调用Wdm.h的ZwSetValueKey函数遇编译问题

解决Visual Studio中无法打开Wdm.h头文件的问题

我来帮你一步步排查解决这个问题,毕竟WDM头文件找不到的坑我也踩过不少:

1. 先确认WDK是否正确安装并和VS关联

Wdm.h是Windows驱动工具包(WDK)的专属头文件,Visual Studio默认是不带的,所以第一步得把基础打牢:

  • 你得先装和当前VS版本匹配的WDK——比如VS2022就得配WDK 22H2及以上版本。安装的时候一定要选对对应VS的关联组件,别装了和VS版本不兼容的WDK,那肯定白搭。
  • 装完WDK后,打开VS,去「工具」→「获取工具和功能」里,检查「Windows驱动开发」这个工作负载是不是已经勾选安装了,没装的话补装上。
  • 验证关联是否成功:直接新建一个「Kernel Mode Driver, Empty (KMDF)」项目,如果项目能正常加载,说明WDK和VS已经搭好桥了;要是加载失败,建议卸载WDK重新安装,安装过程中别跳过关联VS的步骤。

2. 检查项目的包含路径配置

要是WDK装了还是找不到Wdm.h,大概率是项目的头文件路径没配置对:

  • 右键你的驱动项目,选「属性」,进入项目配置页。
  • 展开「配置属性」→「C/C++」→「常规」,找到「附加包含目录」。
  • 这里应该自动包含WDK的内核头文件路径,比如C:\Program Files (x86)\Windows Kits\10\Include\<你的WDK版本号>\km(比如版本号是10.0.22621.0)。如果路径没在里面,手动添加上。
  • 同时别忘了检查「配置属性」→「常规」里的「平台工具集」,必须是对应的WDK工具集,比如WindowsKernelModeDriver10.0,选错了也会找不到头文件。

3. 确认你用的是内核模式驱动项目

划重点!Wdm.h是给内核模式驱动用的,如果你创建的是普通控制台应用、用户模式程序甚至用户模式驱动项目,根本找不到这个头文件。所以先确认你的项目类型是不是内核模式驱动,不是的话赶紧新建正确的项目。

4. 清理缓存重建项目

有时候VS的缓存会抽风,导致明明路径对了却找不到文件:

  • 点击「生成」→「清理解决方案」,然后再点「生成解决方案」。
  • 也可以手动删掉项目目录下的obj和bin文件夹,再重新构建,说不定就能解决。

另外提一句,ZwSetValueKey()是内核模式下的函数,必须在驱动项目里调用,配置好WDK环境后,包含#include <wdm.h>就能正常用了,不用额外定义什么宏(只要项目配置正确,WDK会自动处理相关宏定义)。

内容的提问来源于stack exchange,提问作者hecate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:52:36