Windows驱动开发之日志打印 - TraceEvents

        《Windows驱动开发技术详解》一书中,介绍了一种“Windows驱动程序日志打印和查看的方法”,具体就是:在需要打印日志的地方,调用“KdPrint”函数,该函数类似标准C的printf(print file)函数。然后用“DebugView.exe”软件查看日志。

一、引入

        事实上,微软也提供了一个日志打印和日志查看机制,它可以查看指定的驱动文件的日志,并根据“Level”和“Flag”进行日志过滤,也可以保存成文件。这套机制就是“WPP”和“TraceView.exe”。

        随便打开一份微软提供的驱动示例代码,如:PLX9x5x,都会看到它里面有WPP。

        在WDF框架中,有一个“trace.h”头文件,在驱动的入口函数中,会用到

    // Initialize WDF WPP tracing.
    WPP_INIT_TRACING( DriverObject, RegistryPath );
 
    //
    // TraceEvents function is mapped to DoTraceMessage provided by
    // WPP by using a directive in the sources file.
    //
    TraceEvents(TRACE_LEVEL_INFORMATION, DBG_INIT, "Pci9656 Sample - Driver Framework Edition.");

        此外在驱动中大量用到“TraceEvents”,取代之前的“KdPrint”,用于打印日志信息。

 二、使用

       WPP的使用比较简单,WDF的框架代码已将将它初始化好了,我们只需在用到的地方,调用“TraceEvent”  即可。其中,“TraceEvent”的前两个参数分别指定“Level”和“Flag”。

       然后,在安装了VS2015的PC上,“开始”->“Windows Kits”->“Windows Software Development Kits”,打开一个文件夹,再在其中的“Tools->X64”目录下找到“TraceView.exe”。

        安装它的说明书操作,先“创建一个新的会话”。

        然后“Add Provider”,并选择你驱动文件的“.pdb”文件即可。

 

        创建好后,使用应用程序调驱动进行测试,有时会发现traceview中没有反应。这是因为,默认的“Level”设置的是“Error”级别,你需要重新设置,比如设为“Infomation”级别。这个设置的“Level”表示的是最低过滤级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值