ntifs.h(85) : error C2371:PEPROCES: redefinition; different basic types

在做windows驱动时,有时由于引用头文件不当,会引起头文件中的重定义而引起编译失败。

'PEPROCESS' : redefinition; different basic types

c:winddk6000incddktifs.h(85) : error C2371: 'PEPROCESS' : redefinition; different basic types
c:winddk6000incddktifs.h(86) : error C2371: 'PETHREAD' : redefinition; different basic types

此类错误是因为ntddk.h和ntifs.h冲突,因为ntifs.h已经包含了ntddk的定义,所以包含了ntifs.h就不必包含ntddk.h。

DRIVERTYPE=FS时才能包含ntifs.h


Wdm.h、Ntddk.h 和 Ntifs.h头文件包含结构

在 Windows Vista 版本的 WDK 之前,比如DDK3600,用于驱动程序开发的主要头文件为 Wdm.h、Ntddk.h 和 Ntifs.h,但这些头文件中包含很多重复的声名。

  • wdm.h一般用于即插即用驱动。
  • ntddk.h 一般用于非即插即用驱动,如我们常说的NT架构驱动。这类驱动一般用于无硬件支持的系统内核服务。

Windows Vista 版本的 WDK 开始,Wdm.h、Ntddk.h 和 Ntifs.h 将按层次结构来组织并且不包含重复信息。上层的文件将包含下层的文件。较高级别的文件包括较低级别的文件。每个函数和结构声明只出现一次

Ntifs.h 包含 Ntddk.h,而 Ntddk.h 又包含 Wdm.h。下图显示了此结构
驱动头文件结构

取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!