驱动程序中使用event view记录日志

本文介绍EventDrv——一个展示如何在Windows驱动中使用ETW(Event Tracing for Windows)进行日志记录的示例。该驱动不控制实际硬件,而是生成用于演示目的的日志事件。文章详细介绍了如何构建、安装、测试EventDrv,并提供了跟踪和分析这些事件的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Eventdrv是MS ddk中的一个demo,演示如何在驱动中使用event view日志。本文译自src/general/tracing/evntdrv/evntdrv.htm

概述

Event是内核态驱动运行日志样例.该驱动并不控制任何物理硬件,仅生成日志事件.它用于演示如何在驱动中使用ETW日志.Eventdrv通过调用EtwRegister API来注册事件产生者.如果驱动加载成功,它将记录一个包含设备名,设备名长度,状态码的StartEvent事件.每当驱动接收到上层调用的DeviceIoControl,它都将记录一个SampleEventA事件.如果驱动被卸载,它会记录包含设备对象的UnloadEvent事件.注意:WPP跟踪工具,如TraceView.exe并不能启停和观察日志.

使用样例

按照以下步骤测试Eventdrv:

1.用-cgZ参数编译Eventdrv

2.通过以下命令安装位于evntdrv\Eventdrv目录下的manifest文件

wevtutil im evntdrv.xml

安装manifest文件后将会在注册表中创建一个键(创建的键通常位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\System\下译者注),这个键包含了事件产生者的相关信息,这使得一些工具能够找到相关的资源和消息文件(消息文件是指:manifest定义的事件通过wenvutil生成供C语言使用的事件头文件,译者注)

3.用-cZg参数编译evntctrl程序(位于evntdrv\evntctrl).Evntctrl向Eventdrv发送IOCTL,当Eventdrv收到IOCTL后将产生日志

4.在系统根目录下创建ETWDriverSample目录,并将Eventdrv.sys/evntctrl.exe拷贝到此.同时从(wdk目录)tools\tracing目录拷贝tracelog.exe到此.因为manifest文件evntdrv.xml指定了资源文件的路径为%systemroot%\ETWDriverSample.如果没有创建这个目录或者没有将Evntdrv.sys等文件拷贝于此,解码工具由于找不到事件信息而不能解码日志文件

5.用Tracelog开启名为"TestEventdrv"的日志跟踪会话.以下命令会开始日志跟踪会话并在ETWDriverSample目录中创建日志文件:Eventdrv.etl

Tracelog -start TestEventdrv -guid #b5a0bda9-50fe-4d0e-a83d-bae3f58c94d6 -f Eventdrv.etl
6.运行Eventctrl.exe产生跟踪消息.这是在步骤3中生成的可执行程序.每次你按下除Q或q以外的键,Eventctrl都会向驱动发送IOCTL,这会促使驱动产生跟踪消息.按Q或q键来停止Eventctrl

7.以下命令会停止日志跟踪会话:

tracelog -stop TestEventdrv
8.用tracerpt显示tracedrv.etl中的日志:

tracerpt Eventdrv.etl
这个命令会生成2个文件:summary.txt和dumpfile.xml.dumpfile.xml会以xml格式显示事件信息

9.卸载manifest:

wevtutil um evntdrv.xml





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值