【问题标题】:Can't include wdm.h and ntifs.h in the same file不能在同一个文件中包含 wdm.h 和 ntifs.h
【发布时间】:2017-04-24 05:03:07
【问题描述】:

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

 #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;
}

【问题讨论】:

    标签: c++ wdk


    【解决方案1】:

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

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

    【讨论】:

    • 你说了两次'wdm.h'。您的意思是“删除 Ntifs.h”还是“也包含在 Ntifs 中”?
    【解决方案2】:

    如果仍然需要 ntifs.h,也可以切换顺序并在 wdm.h 之前包含 ntifs.h。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 2019-06-07
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 2022-11-27
      相关资源
      最近更新 更多