Windows驱动开发之日志打印 - TraceEvents_windows驱动开发 日志-程序员宅基地

技术标签: Windows驱动  

        《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”表示的是最低过滤级。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013218636/article/details/100020874

智能推荐

目标检测系列5——Faster R-CNN2(代码实现)_from detection.datasets-程序员宅基地

文章浏览阅读672次。参考黑马程序员教程(1) train.py# trainimport osimport tensorflow as tffrom tensorflow import kerasimport numpy as npimport matplotlib.pyplot as pltfrom detection.datasets import coco, data_generatorfrom detection.models.detectors import faster_rcnnimport_from detection.datasets

idea lanyu方式激活_idea.lanyus-程序员宅基地

文章浏览阅读2.2w次。访问http://idea.lanyus.com/这个地址。根据提示将0.0.0.0 account.jetbrains.com添加到hosts文件中,hosts文件在C:\Windows\System32\drivers\etc目录下。点击获得注册码即可。..._idea.lanyus

GPS经纬度坐标转换_$bdgsv,1,1,03,03,44,189,40,07,50,191,43,02,33,224,-程序员宅基地

文章浏览阅读777次,点赞6次,收藏6次。GNGGA,142940.000,3036.74671,N,10408.54235,E,1,07,1.2,573.5,M,0.0,M,*75 22:29:38.958:GNGGA表示全球定位系统定位信息,142940.000表示定位时间,3036.74671表示纬度,N表示北纬,10408.54235表示经度,E表示东经,1表示定位质量指示,07表示使用的卫星数量,1.2表示水平精度因子,573.5表示海拔高度,M表示单位为米,0.0表示大地水准面的高度,M表示单位为米。2.将串口的数据转成WGS84。_$bdgsv,1,1,03,03,44,189,40,07,50,191,43,02,33,224,36,,,,*53

知乎神回复:计算机应届生月薪大多是多少?10K仅仅才是起薪!_计算机两年经验10k-程序员宅基地

文章浏览阅读826次。能做到以下四点,本科在北上广深拿到10K以上,硕士15K以上,非常容易:第一,学校内的课程,计算机基础知识,如C语言,数据结构,计算机组成原理,计算机网络,计算机操作系统等这些基础专业知识一定要理解掌握,在校招中,这些内容必考。第二,提升自己写代码的能力。不会配置环境,不会框架,就去找资料自学,B站,慕课很多免费视频课程。第三,做项目。这里不是指学校做的项目,而是真正可以部署上线的项目。你可以去GitHub上找,也可以从学长学姐或者老师看是否有合适的项目,或者找一些大厂实习岗位。第四,疯_计算机两年经验10k

自动化运维工具saltstack(二)---grains、pillar、job cache、jinja模板详解与nginx、keepalived服务的配置_saltstack 变量赋值-程序员宅基地

文章浏览阅读342次。1.配置管理(续)现在,在上一篇博文的基础上,继续讲一下配置管理。补充一下sls文件的知识: Salt 状态系统的核心是SLS,或者叫SaLt State 文件。 SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。 sls文件命名: sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。 使用子目录来做组织是个很好的选择。  init..._saltstack 变量赋值

MySQL ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint错误解决-程序员宅基地

文章浏览阅读1k次。MySQL ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint错误解决方法_cannot truncate a table referenced in a foreign key constraint

随便推点

flask_script_from flask_script import manager, shell-程序员宅基地

文章浏览阅读297次。flask_scriptflask_script是一个生成shell命令的模块,为在Flask里面编写额外的脚本提供了支持。包括运行一个开发的服务器,一个自定义的命令行,用于初始化数据库,定时任务和其他属于web引用之外的命令行脚本。flask_script 对数据库的简单操作from flask_script import Shell,Managerfrom models import ..._from flask_script import manager, shell

bugku PEN_AND_APPLE (狗师傅平日里比较害羞,但是又想追女神,于是他隐藏了一段信息在这段自拍中,这句话是他最想对女神说的话:) 你能找到信息,并帮助狗师傅表白成功么:) 视屏在这儿)-程序员宅基地

文章浏览阅读3k次。提示是Windows下的type命令,Windows下的type命令可以显示文件内容。利用NTFS流文件隐藏首先用记事本新建两个文本文档,分别名为“1.txt”“2.txt”,其内容为“正常文件、数据流文件”,打开CMD命令行窗口, 进入两个文件所在文件夹,输入 type 2.txt>1.txt: shujuliu.txt,回车.即可将文件2.txt的内容加入1.txt, 内容..._bugku pen_and_apple

SQL获取每个分类中,最新的10条数据_sqlsevere 按每天取十条数据-程序员宅基地

文章浏览阅读5.5k次。Oracel和MSsql可以用自带函数如row_number()可以解决,比较方便,如下:select * from (select *,row_number() over(PARTITION by c_prov order by c_publish_date) as rowid from spiderdata_virus_prov_status) a where rowid<=10_sqlsevere 按每天取十条数据

三大框架SSM基础知识点_ssm框架-程序员宅基地

文章浏览阅读6.5k次,点赞2次,收藏52次。本文是对于SSM三大框架的简单总结,涉及三大框架的主要功能和相关的一些工具,也希望此文是对于个人知识点的一个总结。_ssm框架

curl 获取 https 请求方法-程序员宅基地

文章浏览阅读6.1k次。使用curl如果想发起的https请求正常的话有2种做法: 方法一、设定为不验证证书和host。 代码如下:$url = 'https://www.jb51.net';$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HEADER, 1);curl_setop...

vue3+ts+vue-grid-layout 实现组件拖拽效果以及解决Vue3使用 vue-grid-layout的问题_vue-grid-layout vue3 +ts-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。【代码】vue3+ts+vue-grid-layout 实现组件拖拽效果。_vue-grid-layout vue3 +ts

推荐文章

热门文章

相关标签