如何处理 WDK 中的 winnt.h 和 ntstatus.h?

Aab*_*bee 5 wdk

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

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

和这个:

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

这是我的包括:

#include <windows.h>
#include <winbase.h> 
#include <winnt.h>
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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'
Run Code Online (Sandbox Code Playgroud)

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

Aab*_*bee 4

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