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

我正在尝试使用CM_Get_Device_ID_ListW()CM_Get_DevNode_PropertyW()ZwDeviceIoControlFile() Windows API来查找EFI分区。 这只是一个shell应用程序。 我用stdio在terminal上打印。 以下是添加所有头文件的顺序。 我试图包括以下文件:

 #include <WINDOWS.h> #include <initguid.h> #include <devguid.h> #include <devpkey.h> #include <diskguid.h> #include <stdio.h> #include <cfgmgr32.h> #include <Wdm.h> 

我正在使用Windows 7,64位,Visual Studio 2010.在VS2010中,我设置了包含path:

 F:\Programs\WINDDK\7600.16385.1\inc;F:\Programs\WINDDK\7600.16385.1\inc\api;F:\Programs\WINDDK\7600.16385.1\inc\crt;F:\Programs\WINDDK\7600.16385.1\inc\ddk; 

Libpath:

 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'.... 

任何人都可以帮助解决这个?