1、起因
一般在驱动中输出日志使用宏KdPrint,格式如下:
KdPrint(("******", ...));
这个只是在check版本下才输出日志,另外,这里不是手误,确实是需要两层括号。因为该宏如下:
#if DBG
#define KdPrint(_x_) DbgPrint _x_
#else
#define KdPrint(_x_)
#endif
大多数时候,驱动开发时,在开发人员本地虚拟机或者实体机上才会连接内核调试。测试人员那边有问题,比如蓝屏了,拿回dump文件分析,或者编译一个check版本的驱动,使用DebugView查看输出日志(经常也需要查看ring3层程序日志定位流程问题)。这个时候经常会有一个头疼的问题,那就是日志太多了。
在ring3层,所有进程的输出,都会在DebugView里显示,特别是全局钩子,com组件一堆的时候,还有其他厂家的,也都在这里显示。(比如暴风影音,还有曾经遇到过一个网页代理软件,注入到浏览器进