不能在同一文件中包含 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 也可能有效。
我的编译器(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 也可能有效。