首页 > 解决方案 > 如何在 WDK 中同时处理 winnt.h 和 ntstatus.h?

问题描述

我正在编译一个出错的程序,因为 winnt.h 和 ntstatus.h 都包含在 WDK 中。我用预处理编译到一个文件中,发现了这个:

#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\um\\winnt.h"

和这个:

#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\shared\\ntstatus.h"

这是我的包括:

#include <windows.h>
#include <winbase.h> 
#include <winnt.h>

这是我得到的错误:

1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ntstatus.h(66,14): warning C4005: 'STATUS_WAIT_0': macro redefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winnt.h(2496): message : see previous definition of 'STATUS_WAIT_0'

我需要使用一个定义来告诉 VS 不要同时打开两者吗?

标签: wdk

解决方案


我正在使用 dokan 库。我发现 dokan.h 包含 ntstatus.h 并且有一个名为 WIN32_NO_STATUS 的定义来处理它。


推荐阅读