除了调试driver之外,诊断driver问题还有很重要的一种方式就是查看driver的log,当然也可以像应用层程序一样,输出log到文件中,但是输出log到文件中,会影响系统性能,因为log信息一般都是实时输出的,而且一般只希望在debug版本的时候才会输出log,release版本是不会输出的,这样可以使系统运行得更加顺畅。
可以使用
DbgPrint
来输出log信息,在我们用Visual studio 2013创建出来的工程中,已经定义了一个宏,名叫
PT_DBG_PRINT
这也是输出log用的,但是默认没有启用,需要把下面这一句
ULONG gTraceFlags = 0;
改成
ULONG gTraceFlags = 1;
这样在代码中调用PT_DBG_PRINT就可以输出log信息了。
要查看driver输出的log信息,可以使用工具DebugView来进行查看。
重新编译driver,然后拷贝到目标机器上,再次使用sc start ssmf命令启动driver,同时打开DebugView查看输出的log。如下图所示。
到此我们看到我们的第一个driver程序已经在系统中正常运行起来了,并且还看到了我们的输出信息,是不是有点小激动呢?不管你激不激动,反正我有点:)