共用方式為


traceloggingprovider.h 標頭

TraceLogging 是記錄自我描述事件的系統,可在沒有資訊清單的情況下解碼。 在 Windows 上,TraceLogging 可用來產生 Windows 事件追蹤 (ETW) 事件。

Windows SDK 中的 TraceLoggingProvider.h 標頭具有宏和內嵌函式,可使用 C 或 C++ 為核心和使用者模式程式碼產生 TraceLogging 編碼的 ETW 事件。

注意

TraceLoggingProvider.h 需要事件屬性的編譯時間常數值,例如提供者名稱、事件名稱和功能變數名稱。 為了將執行時間額外負荷降到最低, TraceLoggingProvider.h 會在編譯時期建置其資料結構,並將資訊儲存在唯讀記憶體中。 如果您需要產生執行時間動態事件,則必須使用不同的 TraceLogging 實作,例如 TraceLoggingDynamic

快速入門

範例

#include <windows.h> // or <wdm.h> for kernel-mode.
#include <winmeta.h> // For event level definitions.
#include <TraceLoggingProvider.h>

TRACELOGGING_DEFINE_PROVIDER( // defines g_hProvider
    g_hProvider, // Name of the provider handle
    "MyCompany.MyComponent", // Human-readable name for the provider
    // {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
    (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));

int main(int argc, char* argv[]) // or DriverEntry for kernel-mode.
{
    TraceLoggingRegister(g_hProvider);

    TraceLoggingWrite(
        g_hProvider,
        "MyEvent1",
        TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
        TraceLoggingKeyword(MyEventCategories), // Provider-defined categories
        TraceLoggingString(argv[0], "arg0"), // field name is "arg0"
        TraceLoggingInt32(argc)); // field name is implicitly "argc"

    TraceLoggingUnregister(g_hProvider);
    return 0;
}

如需詳細資訊,請參閱:

traceloggingprovider.h 包含下列程式設計介面:

函式

 
TRACELOGGING_DECLARE_PROVIDER

向前宣告 TraceLogging 提供者的控制碼。
TRACELOGGING_DEFINE_PROVIDER

定義 TraceLogging 提供者的控制碼。
TRACELOGGING_DEFINE_PROVIDER_STORAGE

保留由使用者定義之 TraceLogging 提供者控制碼的靜態儲存體。 偏好TRACELOGGING_DEFINE_PROVIDER此宏。
TraceLoggingBinary

TraceLogging 包裝函式宏,會將具有二進位資料的欄位新增至 事件。
TraceLoggingChannel

TraceLogging 包裝函式宏,可設定事件的通道。
TraceLoggingCustom

TraceLogging 包裝函式宏,會將使用自訂序列化程式封裝的欄位新增至 事件。
TraceLoggingCustomAttribute

TraceLogging 包裝函式宏,可將事件的相關自訂資訊新增至 PDB。
TraceLoggingDescription

TraceLogging 包裝函式宏,可設定事件的描述。
TraceLoggingEventTag

TraceLogging 包裝函式宏,可設定事件的事件標記。
TraceLoggingKeyword

TraceLogging 包裝函式宏,可設定事件的 關鍵字。
TraceLoggingLevel

TraceLogging 包裝函式宏,可設定事件的層級
TraceLoggingOpcode

TraceLogging 包裝函式宏,可設定事件的 opcode
TraceLoggingOptionGroup

TraceLogging 宏,用於TRACELOGGING_DEFINE_PROVIDER指定提供者群組。
TraceLoggingProviderEnabled

TraceLogging 宏,以判斷任何追蹤取用者是否正在接聽此提供者的事件。
TraceLoggingProviderId

取得 TraceLogging 提供者的提供者識別碼。
TraceLoggingRegister

註冊 TraceLogging 提供者,以便用來記錄事件。
TraceLoggingRegisterEx

註冊 TraceLogging 提供者,以便用來記錄事件,並指定 ETW 啟用回呼。
TraceLoggingSetInformation

呼叫 EventSetInformation 來設定 TraceLogging 提供者。
TraceLoggingSocketAddress

TraceLogging 包裝函式宏,會將具有通訊端位址的欄位新增至事件。
TraceLoggingStruct

TraceLogging 包裝函式宏,會將包含其他欄位的欄位新增至事件。
TraceLoggingUnregister

取消註冊 TraceLogging 提供者。
TraceLoggingValue

C++ 的 TraceLogging 包裝函式宏,會將具有自動推論類型的欄位新增至事件。
TraceLoggingWrite

發出 TraceLogging 事件。
TraceLoggingWriteActivity

發出具有指定活動識別碼的 TraceLogging 事件。