Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Wdk:当我尝试添加Windows.h和Wdm.h时,ntdef.h和winnt.h之间出现重新定义错误_Windows - Fatal编程技术网

Windows Wdk:当我尝试添加Windows.h和Wdm.h时,ntdef.h和winnt.h之间出现重新定义错误

Windows Wdk:当我尝试添加Windows.h和Wdm.h时,ntdef.h和winnt.h之间出现重新定义错误,windows,Windows,我正在尝试使用CM\u Get\u Device\u ID\u ListW()、CM\u Get\u DevNode\u PropertyW()和zwdeviceocontrolfile()Windows API查找EFI分区。这只是一个shell应用程序。我用stdio在终端上打印。下面是添加所有头文件的顺序。我试图包括以下文件: #include <WINDOWS.h> #include <initguid.h> #include <devguid.h>

我正在尝试使用
CM\u Get\u Device\u ID\u ListW()
CM\u Get\u DevNode\u PropertyW()
zwdeviceocontrolfile()
Windows API查找EFI分区。这只是一个shell应用程序。我用
stdio
在终端上打印。下面是添加所有头文件的顺序。我试图包括以下文件:

#include <WINDOWS.h>
#include <initguid.h>
#include <devguid.h>
#include <devpkey.h>
#include <diskguid.h>
#include <stdio.h>
#include <cfgmgr32.h>
#include <Wdm.h>
库路径:

F:\Programs\WINDDK\7600.16385.1\lib\win7\i386\
我会遇到如下编译错误:

f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(128): warning C4005: 'MAX_NATURAL_ALIGNMENT' : macro redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(109) : see previous definition of 'MAX_NATURAL_ALIGNMENT'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(161): warning C4005: 'PROBE_ALIGNMENT' : macro redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(142) : see previous definition of 'PROBE_ALIGNMENT'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(614): error C2011: '_PROCESSOR_NUMBER' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(493) : see declaration of '_PROCESSOR_NUMBER'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(625): error C2011: '_GROUP_AFFINITY' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(504) : see declaration of '_GROUP_AFFINITY'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(882): error C2011: '_FLOAT128' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(630) : see declaration of '_FLOAT128'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(933): error C2011: '_LARGE_INTEGER' : 'union' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(677) : see declaration of '_LARGE_INTEGER'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(951): error C2011: '_ULARGE_INTEGER' : 'union' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(695) : see declaration of '_ULARGE_INTEGER'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(973): error C2011: '_LUID' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(717) : see declaration of '_LUID'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1070): error C2084: function 'ULONGLONG Int64ShllMod32(ULONGLONG,DWORD)' already has a body
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(771) : see previous definition of 'Int64ShllMod32'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1086): error C2084: function 'LONGLONG Int64ShraMod32(LONGLONG,DWORD)' already has a body
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(778) : see previous definition of 'Int64ShraMod32'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1102): error C2084: function 'ULONGLONG Int64ShrlMod32(ULONGLONG,DWORD)' already has a body
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(785) : see previous definition of 'Int64ShrlMod32'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1318): warning C4005: 'UNICODE_STRING_MAX_BYTES' : macro redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(957) : see previous definition of 'UNICODE_STRING_MAX_BYTES'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1358): error C2011: '_LIST_ENTRY' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(966) : see declaration of '_LIST_ENTRY'....

有人能帮助解决这个问题吗?

改进命令和错误消息的格式。改进语法。对于
CM.*
api enouth,包括
Cfgmgr32.h
。相反,
ZwDeviceIoControlFile
您可以使用
DeviceIoControl
——这样正式就不能包含
ntifs.h
wdm.h
。但是,如果您想这样做,可以在名称空间中包含这个头,比如
namespace NT{#include}这可以解决几乎所有的错误,但是3-4个编译器错误在这之后仍然存在。但是,如果没有智能编辑wdk头,则可以解决此问题。如果您在名称空间中包含
ntifs.h
,那么也可以在同一名称空间中包含您的代码,这样您就不会对所有wdk函数、结构、,enums..对于get EFI分区,您可以使用
CM\u get\u Device\u Interface\u ListW
GUID\u DeviceInterface\u HIDDEN\u VOLUME
windows.h
用于用户模式应用程序,
wdm.h
用于内核模式设备驱动程序。它们是相互排斥的。你可以解决这个问题,正如RbMm已经解释过的,但它不能开箱即用的原因是你不应该做你想做的事。嗨,RbMm。。。我只使用您提供的示例代码。。。输入。
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(128): warning C4005: 'MAX_NATURAL_ALIGNMENT' : macro redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(109) : see previous definition of 'MAX_NATURAL_ALIGNMENT'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(161): warning C4005: 'PROBE_ALIGNMENT' : macro redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(142) : see previous definition of 'PROBE_ALIGNMENT'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(614): error C2011: '_PROCESSOR_NUMBER' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(493) : see declaration of '_PROCESSOR_NUMBER'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(625): error C2011: '_GROUP_AFFINITY' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(504) : see declaration of '_GROUP_AFFINITY'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(882): error C2011: '_FLOAT128' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(630) : see declaration of '_FLOAT128'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(933): error C2011: '_LARGE_INTEGER' : 'union' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(677) : see declaration of '_LARGE_INTEGER'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(951): error C2011: '_ULARGE_INTEGER' : 'union' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(695) : see declaration of '_ULARGE_INTEGER'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(973): error C2011: '_LUID' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(717) : see declaration of '_LUID'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1070): error C2084: function 'ULONGLONG Int64ShllMod32(ULONGLONG,DWORD)' already has a body
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(771) : see previous definition of 'Int64ShllMod32'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1086): error C2084: function 'LONGLONG Int64ShraMod32(LONGLONG,DWORD)' already has a body
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(778) : see previous definition of 'Int64ShraMod32'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1102): error C2084: function 'ULONGLONG Int64ShrlMod32(ULONGLONG,DWORD)' already has a body
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(785) : see previous definition of 'Int64ShrlMod32'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1318): warning C4005: 'UNICODE_STRING_MAX_BYTES' : macro redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(957) : see previous definition of 'UNICODE_STRING_MAX_BYTES'
f:\programs\winddk\7600.16385.1\inc\api\ntdef.h(1358): error C2011: '_LIST_ENTRY' : 'struct' type redefinition
f:\programs\winddk\7600.16385.1\inc\api\winnt.h(966) : see declaration of '_LIST_ENTRY'....