下列主題提供 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 會嘗試直接使用 EventSetInformation,該事件不存在於 RTM 版本的 Windows Vista 或 Windows 7 中)。
- 如果您使用 TraceLoggingProvider.h 搭配 WINVER 設定為 0x0600 (Windows Vista) 或 0x0601 (Windows 7),程式將會設定為相容性,並可在指定的 Windows 版本上運作(TraceLoggingProvider.h 會透過 GetProcAddress 叫用 EventSetInformation。