我需要从WDK示例src\print\monitors\localmon
调用DbgPrint或KdPrint函数
请帮助说明
我刚刚添加了
localmon.c文件中的#include <ntddk.h>
和
同一文件中的DbgPrint("Some message");
并在编译时出现下一个错误:
1>errors in directory c:\winddk\7600.16385.1\src\print\new2\monitors\localmon
1>c:\winddk\7600.16385.1\inc\api\ntdef.h(149) : error C2220: warning treated as
error - no 'object' file generated
1>c:\winddk\7600.16385.1\inc\api\ntdef.h(614) : error C2011: '_PROCESSOR_NUMBER'
: 'struct' type redefinition
1>c:\winddk\7600.16385.1\inc\api\ntdef.h(625) : error C2011: '_GROUP_AFFINITY' :
'struct' type redefinition
1>c:\winddk\7600.16385.1\inc\api\ntdef.h(882) : error C2011: '_FLOAT128' : 'stru
ct' type redefinition
1>c:\winddk\7600.16385.1\inc\api\ntdef.h(933) : error C2011: '_LARGE_INTEGER' :
'union' type redefinition
1>c:\winddk\7600.16385.1\inc\api\ntdef.h(951) : error C2011: '_ULARGE_INTEGER' :
'union' type redefinition
1>c:\winddk\7600.16385.1\inc\api\ntdef.h(973) : error C2011: '_LUID' : 'struct'
type redefinition
我做错了什么?
谢谢
最佳答案
这是用户模式代码。请改用OutputDebugString
,并且完全不要包含ntddk.h
。如果需要,可以编写一些函数作为OutputDebugString
的适配器,因为它不需要格式字符串等,就像它的对应DbgPrint
一样。
如果您绝对必须使用DbgPrint
,当然也可以从ntdll.dll
获得。因此,您可以深入并从那里导入它(原型(prototype)可以在WDK中的wdm.h
中找到)。但我希望在用户模式代码中使用OutputDebugString
。