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(如果可用) )。