如何解决HLK环境下ApiValidator报错KeGetCurrentIrql不支持的问题
解决HLK ApiValidator报错
KeGetCurrentIrql不支持的问题 问题背景
开发Windows 10系统驱动时,在VS2019搭配WDK 10.0.20348.0环境下可通过ApiValidator校验,但在HLK环境(控制器版本10.1.19041.19041,Studio版本10.0.19041.1)中失败,报错:
ApiValidation: Error: XXX.sys has unsupported API call to "ntoskrnl.exe!KeGetCurrentIrql"
问题根源是HLK使用的UniversalDDIs.xml规则文件版本比VS2019中的旧,旧版本未将KeGetCurrentIrql标记为通用DDI允许调用的API。
解决方案
方案1:升级HLK到匹配WDK的版本
WDK 10.0.20348.0对应Windows 10 21H2版本,需将HLK升级到同版本(10.0.20348.0):
- 从微软官网下载对应版本的HLK安装包
- 卸载现有HLK控制器和Studio,重新安装匹配版本
- 重新配置HLK测试环境,运行ApiValidator校验
方案2:替换HLK的规则文件(临时方案)
将VS2019中最新的UniversalDDIs.xml替换到HLK的ApiValidator目录:
- 备份HLK原文件:
C:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\amd64\ApiValidator\amd64_UniversalDDIs.xml - 复制VS2019中的文件:
C:\Program Files (x86)\Windows Kits\10\build\universalDDIs\x64\UniversalDDIs.xml - 将复制的文件重命名为
amd64_UniversalDDIs.xml,覆盖HLK目录下的原文件 - 重新运行HLK的ApiValidator测试
注意:此为临时 workaround,可能存在其他API规则不匹配的风险,长期建议使用方案1保证版本一致性。
方案3:确认驱动编译目标与HLK测试版本匹配
检查驱动项目的编译配置:
- 在VS2019中,右键驱动项目 → 属性 → 配置属性 → 常规 → 确认
Target Platform Version设置为与HLK测试的Windows版本一致(若需兼容旧版本,需确保调用的API在旧版本DDI规则中被允许) - 若驱动需兼容Windows 10 20H1/21H1(对应HLK 19041版本),需确认是否可替换
KeGetCurrentIrql为该版本允许的等价实现(但KeGetCurrentIrql属于标准内核API,此情况大概率是规则文件版本问题,优先用前两个方案)
内容的提问来源于stack exchange,提问作者Li Wei
相关产品推荐
相关产品推荐

