1

我需要从 WDK 示例中调用 DbgPrint 或 KdPrint 函数src\print\monitors\localmon

请帮忙说明

我刚刚添加

#include <ntddk.h>在 localmon.c 文件中

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

我做错了什么?

谢谢

4

1 回答 1

3

这是用户模式代码。改为使用OutputDebugString,根本不包含ntddk.h。如果需要,请编写一个小函数作为适配器,OutputDebugString因为它不像对应的那样采用格式化字符串等DbgPrint


如果您绝对必须使用DbgPrint,当然也可以从ntdll.dll获得。所以你可以进入它并从那里导入它(原型可以wdm.h在 WDK 中找到)。但我更喜欢OutputDebugString用户模式代码。

于 2012-05-29T12:43:52.170 回答