vc 中#include "ntddk.h" 出错

mj20002008   2008-9-25 10:33 楼主

  1. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(81) : warning C4005: “MAX_NATURAL_ALIGNMENT” : 宏重定义
  2.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(51) : 参见“MAX_NATURAL_ALIGNMENT”的前一个定义
  3. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(108) : warning C4005: “PROBE_ALIGNMENT” : 宏重定义
  4.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(78) : 参见“PROBE_ALIGNMENT”的前一个定义
  5. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(657) : error C2011: “_FLOAT128” : “struct”类型重定义
  6.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(430) : 参见“_FLOAT128”的声明
  7. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(704) : error C2011: “_LARGE_INTEGER” : “union”类型重定义
  8.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(473) : 参见“_LARGE_INTEGER”的声明
  9. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(722) : error C2011: “_ULARGE_INTEGER” : “union”类型重定义
  10.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(491) : 参见“_ULARGE_INTEGER”的声明
  11. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(744) : error C2011: “_LUID” : “struct”类型重定义
  12.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(513) : 参见“_LUID”的声明
  13. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(861) : warning C4005: “UInt32x32To64” : 宏重定义
  14.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(617) : 参见“UInt32x32To64”的前一个定义
  15. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(895) : error C2084: 函数“ULONGLONG Int64ShllMod32(ULONGLONG,DWORD)”已有主体
  16.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(621) : 参见“Int64ShllMod32”的前一个定义
  17. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(911) : error C2084: 函数“LONGLONG Int64ShraMod32(LONGLONG,DWORD)”已有主体
  18.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(628) : 参见“Int64ShraMod32”的前一个定义
  19. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(927) : error C2084: 函数“ULONGLONG Int64ShrlMod32(ULONGLONG,DWORD)”已有主体
  20.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(635) : 参见“Int64ShrlMod32”的前一个定义
  21. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1084) : error C2011: “_UNICODE_STRING” : “struct”类型重定义
  22.         d:\zhangTest\hookapi-new-test(d3d8)\include\HookApiLib_Common.h(15) : 参见“_UNICODE_STRING”的声明
  23. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1125) : error C2011: “_LIST_ENTRY” : “struct”类型重定义
  24.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(771) : 参见“_LIST_ENTRY”的声明
  25. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1135) : error C2011: “_SINGLE_LIST_ENTRY” : “struct”类型重定义
  26.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(781) : 参见“_SINGLE_LIST_ENTRY”的声明
  27. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1146) : error C2011: “LIST_ENTRY32” : “struct”类型重定义
  28.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(789) : 参见“LIST_ENTRY32”的声明
  29. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1152) : error C2011: “LIST_ENTRY64” : “struct”类型重定义
  30.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(795) : 参见“LIST_ENTRY64”的声明
  31. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1254) : error C2011: “_OBJECT_ATTRIBUTES” : “struct”类型重定义
  32.         d:\zhangTest\hookapi-new-test(d3d8)\include\HookApiLib_Common.h(27) : 参见“_OBJECT_ATTRIBUTES”的声明
  33. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1791) : warning C4005: “MAKELANGID” : 宏重定义
  34.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1176) : 参见“MAKELANGID”的前一个定义
  35. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1792) : warning C4005: “PRIMARYLANGID” : 宏重定义
  36.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1177) : 参见“PRIMARYLANGID”的前一个定义
  37. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1793) : warning C4005: “SUBLANGID” : 宏重定义
  38.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1178) : 参见“SUBLANGID”的前一个定义
  39. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1819) : warning C4005: “MAKELCID” : 宏重定义
  40.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1204) : 参见“MAKELCID”的前一个定义
  41. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1822) : warning C4005: “MAKESORTLCID” : 宏重定义
  42.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1207) : 参见“MAKESORTLCID”的前一个定义
  43. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1823) : warning C4005: “LANGIDFROMLCID” : 宏重定义
  44.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1208) : 参见“LANGIDFROMLCID”的前一个定义
  45. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1824) : warning C4005: “SORTIDFROMLCID” : 宏重定义
  46.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1209) : 参见“SORTIDFROMLCID”的前一个定义
  47. d:\WINDDK\2600\inc\ddk\wxp\ntdef.h(1825) : warning C4005: “SORTVERSIONFROMLCID” : 宏重定义
  48.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1210) : 参见“SORTVERSIONFROMLCID”的前一个定义
  49. d:\WINDDK\2600\inc\ddk\wxp\ntstatus.h(114) : warning C4005: “STATUS_WAIT_0” : 宏重定义
  50.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1307) : 参见“STATUS_WAIT_0”的前一个定义
  51. d:\WINDDK\2600\inc\ddk\wxp\ntstatus.h(166) : warning C4005: “STATUS_ABANDONED_WAIT_0” : 宏重定义
  52.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1308) : 参见“STATUS_ABANDONED_WAIT_0”的前一个定义
  53. d:\WINDDK\2600\inc\ddk\wxp\ntstatus.h(189) : warning C4005: “STATUS_USER_APC” : 宏重定义
  54.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1309) : 参见“STATUS_USER_APC”的前一个定义
  55. d:\WINDDK\2600\inc\ddk\wxp\ntstatus.h(216) : warning C4005: “STATUS_TIMEOUT” : 宏重定义
  56.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1310) : 参见“STATUS_TIMEOUT”的前一个定义
  57. d:\WINDDK\2600\inc\ddk\wxp\ntstatus.h(225) : warning C4005: “STATUS_PENDING” : 宏重定义
  58.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1311) : 参见“STATUS_PENDING”的前一个定义
  59. d:\WINDDK\2600\inc\ddk\wxp\ntstatus.h(474) : warning C4005: “DBG_EXCEPTION_HANDLED” : 宏重定义
  60.         d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(1312) : 参见“DBG_EXCEPTION_HANDLED”的前一个定义
  61. d:\WINDDK\2600\inc\ddk\wxp\ntstatus.h(483) : warning C4005: “DBG_CONTINUE” : 宏重定义

一大堆都是重定义的错误.
(我安装了xp DDK,设置库文件和头文件路径,在工具->选项->工程->vc++目录中,设置包含文件选项
D:\WINDDK\2600\inc\wxp
D:\WINDDK\2600\inc\crt
D:\WINDDK\2600\inc\ddk\wxp
在库文件选项设置
D:\WINDDK\2600\lib\wxp\i386
然后我在VC程序中#include "ntddk.h"就出错了,不知道该怎么解决.

回复评论 (9)

和windows.h冲突!!

楼主别用vc编译,用ddk编译就可以了
点赞  2008-9-25 11:22
引用: 引用 1 楼 Win32Coder 的回复:
和windows.h冲突!!

楼主别用vc编译,用ddk编译就可以了

我知道用那个build可以,但是我就想在VC里用ddk的函数呀
点赞  2008-9-25 12:41
你把需要用的函数和相关定义复制出来用就可以了,不包含DDK的头文件。
点赞  2008-9-25 18:48
引用: 引用 3 楼 cnzdgs 的回复:
你把需要用的函数和相关定义复制出来用就可以了,不包含DDK的头文件。

函数的实现代码也要包含吧?
点赞  2008-9-26 09:03
你想调用什么函数?如果是Zw或Nt开头的内核API,可以自己定义函数类型,然后从ntdll.dll中获取函数地址来调用。
点赞  2008-9-26 13:46
我想使用ObReferenceObjectByHandle这样的函数,
我在网上找了个监视程序启动的例子,它是拦截NtCreateSection这个函数,然后在里面判断.
它是用驱动写了个sys文件,我想直接在VC里写,不生成sys文件,是不是不行呀.
点赞  2008-9-27 09:18
应用程序不能调这个函数。可以写一个驱动程序,应用程序通过DeviceIoControl让驱动程序来调用。
点赞  2008-9-27 13:33
看来只好写驱动程序了
点赞  2008-9-28 17:15
ding!
点赞  2009-12-17 09:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复