Etw系列:
ETW的基础信息:
在 Windows 2000 之前,Windows 中仅提供基于文本的基本跟踪机制:DbgPrint() 和 DebugPrint() API。 它们需要调试器,并且通常无法动态记录数据。 随着时间的推移,Windows 跟踪机制不断发展;现今,有四种不同的跟踪机制可用。 ETW 和事件日志 API 集已合并到 Windows Vista 中的统一事件日志记录 API 集,这为用户和开发人员提供了一个统一的机制来引发事件。
什么是ETW?ETW,全称Event Tracing for Windows 。它提供了一种对用户层应用程序和内核层驱动创建的事件对象的跟踪记录机制。为开发者提供了一套快速、可靠、通用的一系列事件跟踪特性。
ETW具有以下优点:
强有效的:它提供了高效的缓冲和日志记录机制。 跟踪缓冲区是由内核管理的。 通过 ETW 进行跟踪不受应用崩溃和挂起的影响。 如果系统发生故障,可以在内存转储文件中访问未保存的事件。
动态化:无需重新启动系统或重启应用即可动态启动、停止、重新配置和暂停跟踪会话。 ETW 提供了多种模式,可以满足各种需求。
内置在 Windows 中:直接使用WIN32API即可控制使用。
轻量化:由于历史跟踪和保存的日志文件的开销经过高度优化,它们不会影响应用或系统性能。
缓存记录:日志记录机制使用内核模式缓冲区,这些缓冲区由一个单独的编写器线程写入磁盘,因此跟踪的开销是有限的。
ETW具有以下特性:
开发人员可以根据预期用途选择合适的实现集。
ETW可记录基础结构管理常用信息,如时间戳、函数名称和源文件行号。
相同的实现用于用户模式应用和内核模式组件。
ETW 可在故障转储和实时调试中进行访问。
ETW 可以被重定向到内核调试器以进行实时查看。
ETW 具有实时视图。
日志文件保存在二进制日志文件(ETL 文件)中。
ETW 支持多进程日志记录。
ETW 具有高吞吐量。
可以在另一台计算机上查看日志文件。
ETW 支持循环缓冲,以实现持续日志记录和监视。
ETW 可以根据目标受众分组到一个通道中。
ETW有三种类型的事件:
1.Windows 软件跟踪预处理器 (WPP) 和经典 ETW。
2.托管对象格式 (MOF):MOF 是一种描述 WMI 对象以及启用和解码事件的方法。
3.基于清单:在 Windows Vista 中引入了一个基于 XML 的统一跟踪定义。 XML 文件包含提供程序写入的事件的元素。
ETW的体系结构
如何使用ETW:
PS:
在“如何使用ETW”中我并没有说明MOF等经典事件和清单事件监听的区别,不过具体可以看之前的ETW系列来了解,更加细节的东西需要具体研究。
系统的ETW的提供者可以在注 册表中查询到(不仅仅可以查询到GUID信息,还可以查询到Provider,例如Microsoft-Windows-Winsock-AFD可是实打实的afd.sys提供的,对Microsoft-Windows-Winsock-AFD的监听是实打实的内核监听): ,位置:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\”
系统当前的Comsumer可以在“计算机管理”中查询到:
希望本贴可对屏幕前的你有一点帮助,希望你可以利用ETW写出强大的监听程序。
参考文献:
评分
查看全部评分
本帖被以下淘专辑推荐:
· 鱼木 | 主题: 1560, 订阅: 152
· ETW | 主题: 2, 订阅: 0
· 技术分析 | 主题: 12, 订阅: 0