不能在同一文件中包含 wdm.h 和 ntifs.h

Can't include wdm.h and ntifs.h in the same file

我的编译器(vs2012)拒绝编译以下代码行。他发布了 PEPROCESS 和 PETHREAD 符号的重新定义。我该如何解决这个问题?为什么我不能同时使用 headers?

 #include <wdm.h>
 #include <Ntifs.h>

double hal_datetime_utc_now()
{
   LARGE_INTEGER gmtTime;
   KeQuerySystemTime(&gmtTime);

   ULONG utc_now;
   RtlTimeToSecondsSince1970(&gmtTime, &utc_now);
   return (double)utc_now;
}

我自己找到了解决方案。在我的场景中,我可以删除 wdm.h。因为KeQuerySystemTime也包含在ntifs.h中。所以我可以简单地删除 wdm.h.

编辑:打字错误:将 wdm.h 替换为 ntifs.h

如果仍然需要 ntifs.h,切换顺序并在 wdm.h 之前添加 ntifs.h 也可能有效。