TraceLogging 参考
以下主题提供有关 C/C++ TraceLogging API 的信息。
注意
如果要从 C/C++ 代码生成事件,并在编译时定义事件,请使用本节中所述的 API。 否则,如果要从 .NET 代码生成事件,请使用 .NET EventSource 类。 否则,如果使用 Windows 运行时(WinRT),请使用 LoggingChannel。 否则,可以使用社区支持的选项,例如 TraceLoggingDynamic。
TraceLogging 基于 Windows 事件跟踪(ETW)构建,比基于清单的 ETW 或 WPP 更容易使用。 TraceLogging 允许生成包含结构化数据的事件、支持使用 ETW 活动的事件关联,并且不需要单独的检测清单 XML 文件进行解码。
TraceLoggingProvider.h 是针对用户或内核模式下的 C/C++ 开发人员推荐的 API。 以下链接介绍了 C/C++ API。
请注意,WINVER(用户模式)的值会影响 TraceLoggingProvider.h 的行为方式:
- 如果未在包括
<windows.h>
之前设置 WINVER,则<windows.h>
会将 WINVER 设置为与 SDK 版本相对应的默认值。 - 如果将 TraceLoggingProvider.h 与 WINVER 设置为0x0602(Windows 8)或更高版本,则程序可能无法在 Windows Vista 或 Windows 7 上运行(TraceLoggingProvider.h 将尝试直接使用 RtM 版本的 Windows Vista 或 Windows 7 中不存在的 EventSetInformation)。
- 如果将 TraceLoggingProvider.h 与 WINVER 设置为0x0600(Windows Vista)或0x0601(Windows 7),则程序将配置为兼容性,并且将处理指定的 Windows 版本(TraceLoggingProvider.h 将通过 GetProcAddress 调用 EventSetInformation(如果可用)。