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

    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





你可能感兴趣的:(win内核,win内核)