首页
社区
课程
招聘
[求助]为啥KdPrint在free版仍然被编译了?
发表于: 2012-12-5 19:14 7207

[求助]为啥KdPrint在free版仍然被编译了?

2012-12-5 19:14
7207
【求助】为啥KdPrint在free版仍然被编译?
我的系统是XP的,
我在Windows XP x86 Free Build Environment编译驱动,
编译之后,KdPrint仍然起作用。

如果想要在free版去掉KdPrint要加什么编译条件?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2120
活跃值: (73)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
看看wdm.h头文件吧

#if DBG

#define KdPrint(_x_) DbgPrint _x_
#define KdPrintEx(_x_) DbgPrintEx _x_
#define vKdPrintEx(_x_) vDbgPrintEx _x_
#define vKdPrintExWithPrefix(_x_) vDbgPrintExWithPrefix _x_
#define KdBreakPoint() DbgBreakPoint()

#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)

#else

#define KdPrint(_x_)
#define KdPrintEx(_x_)
#define vKdPrintEx(_x_)
#define vKdPrintExWithPrefix(_x_)
#define KdBreakPoint()

#define KdBreakPointWithStatus(s)

#endif // DBG
2012-12-5 20:00
0
雪    币: 102
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼上!

按这个头文件,在free版,应该是执行else部分吧,#define KdPrint(_x_) 定义为空,被过滤。

但我的free版编译出来,KdPrint依然变成了DbgPrint

奇怪
2012-12-5 20:32
0
雪    币: 2120
活跃值: (73)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
看看log里有没有1> /DDBG=1这句话
2012-12-5 21:53
0
雪    币: 102
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Free环境编译的log里找不到DBG
只有1> /DNDEBUG

我用Checked环境编译,log里有1> /DDBG=1
2012-12-5 22:16
0
雪    币: 102
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
啊!!!!!!!!!!!!!!!!!!
失误了!!!

谢谢wmbol的热心帮忙!

不好意思,我发现是我自己失误了!
因为我的驱动包含了个Lib,而这个Lib是Checked编译的,
所以,我驱动里的KdPrint没显示出来,而Lib里的KdPrint显示了出来。
刚才我没注意到,失误,不好意思!
2012-12-5 22:23
0
雪    币: 2120
活跃值: (73)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
2012-12-5 22:35
0
雪    币: 102
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我看看了看例子里的sources的写法
!if defined(DDKBUILDENV)
C_DEFINES = $(C_DEFINES) -DDDKBUILD=1
!endif

!IFDEF DDKBUILDENV
C_DEFINES=$(C_DEFINES) -DDDK_BUILD
!ENDIF

!if "$(DBGSDK_INC_PATH)" != ""
INCLUDES = $(DBGSDK_INC_PATH);$(INCLUDES)
!endif
!if "$(DBGSDK_LIB_PATH)" == ""
DBGSDK_LIB_PATH = $(SDK_LIB_PATH)
!else
DBGSDK_LIB_PATH = $(DBGSDK_LIB_PATH)\$(TARGET_DIRECTORY)
!endif
////////////////////////////////

我模仿了下,然后DBG和DEBUG都不行,看来sources跟c文件里的定义不同。

无解
2012-12-5 23:08
0
雪    币: 102
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我找了好久sources文件的写法,
后来,,,,才想到WDK的帮助文档,里面直接有
sources文件里,区分编译环境的方法如下:

!IF "$(DDKBUILDENV)"=="chk"
...
!ELSE IF "$(DDKBUILDENV)"=="fre"
...
!ENDIF
2012-12-6 10:08
0
游客
登录 | 注册 方可回帖
返回
//