WEB开发网
开发学院操作系统Windows Vista 使用 ETW 改善调试和性能优化 阅读

使用 ETW 改善调试和性能优化

 2008-11-17 17:39:25 来源:WEB开发网   
核心提示: 在相应的事件清单中,应通过 <Template> 标记来指定事件的布局,使用 ETW 改善调试和性能优化(8),模板描述了每个事件包含的由用户指定的上下文数据,模板可以定义布局,而不必通过 TDH 搜索事件架构,使用 EventWriteString,布局内可包含单独的数据字段

在相应的事件清单中,应通过 <Template> 标记来指定事件的布局。模板描述了每个事件包含的由用户指定的上下文数据。模板可以定义布局,布局内可包含单独的数据字段,例如整数和字符串;也可包含复杂的数据结构,例如结构数组。并非所有的事件都需要模板;如果未指定模板,则认为此事件不包含用户提供的数据。在清单中,多个事件可以共享一个模板,例如 Start 和 Stop 事件就具有相同的上下文信息。当使用者应用程序遇到一个事件时,会通过 TDH API 定位一个事件模板,并相应地对可变事件数据进行解码。使用旧 API 的提供程序通过 Windows Management Instrumentation (WMI) 托管对象格式 (MOF) 提供布局信息。

图 3 中包含了使用新的事件 API 进行注册和日志记录的提供程序代码示例。这是一个用户模式提供程序,使用用户模式提供程序 API,但是也可以使用相应的一组内核模式提供程序 API。图 3 中的第一个事件写入两个用户提供的数据项。其中一个类型为 ULONG,另一个为以 NULL 结尾的 WCHAR 字符串。通过调用 EventDataDescCreate 来构造合适的数据描述符数组。除了此处显示的 EventWrite API ,另外还有两个日志记录 API:EventWriteString 和 EventWriteTransfer。EventWriteString 允许对未列入清单的字符串进行简单的日志记录。在调用 EventWriteString 时,ETW 会对标头进行标记,表明事件数据是以 NULL 结尾的单一 WCHAR 字符串。如果使用者在标头内发现此标记,则将用户数据作为字符串进行处理,而不必通过 TDH 搜索事件架构。使用 EventWriteString,不必修改清单即可快速记录字符串。

使用 ETW 改善调试和性能优化Figure3ETW 提供程序

上一页  3 4 5 6 7 8 9 10  下一页

Tags:使用 ETW 改善

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接