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

编译Windows驱动报C2146错误:PDRIVER_OBJECT前缺少')'如何解决

问题根因

你遇到的编译错误是由不兼容的SAL注解版本导致的:你的编译环境是Win7 WDK 7600,自带的是VS2008配套的SAL 1.0注解规范,仅支持大写开头的_In_/_Out_注解,你代码里用的小写_in_是SAL 2.0的语法,编译器无法识别,把_in_判定为未知标识符打乱了参数列表的语法解析逻辑,因此抛出缺少)的错误。

解决方案

任选以下一种即可:

  • 把driver.c中DriverEntry函数参数前的小写_in_替换为大写的_In_,修改后代码如下:
NTSTATUS
DriverEntry (
    _In_ PDRIVER_OBJECT  DriverObject,
    _In_ PUNICODE_STRING RegistryPath
    )
  • 直接删除两个_in_注解,WDK自带的DRIVER_INITIALIZE函数类型声明已经携带了标准注解,自定义实现时可以省略参数注解
  • 如果你需要兼容SAL 2.0语法,可以在lectouch.h最开头加入以下宏定义做向下兼容:
#if (NTDDI_VERSION < NTDDI_WIN8)
#define _In_ __in
#define _Out_ __out
#define _In_opt_ __in_opt
#define _Out_opt_ __out_opt
#endif

额外排查点(若修改注解后仍有错误)

检查你的项目Sources文件是否已经正确配置KMDF版本,Win7 WDK 7600编译KMDF驱动必须加入以下配置,避免WDF相关宏未定义导致后续类型解析错误:

KMDF_VERSION_MAJOR = 1
KMDF_VERSION_MINOR = 9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:36:03