共用方式為


TRACELOGGING_DEFINE_PROVIDER_STORAGE宏 (traceloggingprovider.h)

保留由用戶定義之 TraceLogging 提供者句柄的靜態記憶體。 偏好 TRACELOGGING_DEFINE_PROVIDER 此宏。

語法

void TRACELOGGING_DEFINE_PROVIDER_STORAGE(
  [in]            storageVariable,
  [in]            providerName,
  [in]            providerId,
  [in, optional]  __VA_ARGS__
);

參數

[in] storageVariable

要用於靜態提供者記憶體變數的名稱,例如 MyStaticProviderStorage

[in] providerName

具有 TraceLogging 提供者名稱的字串常值。 此名稱應專屬於您的組織和元件,使其不會與其他元件的提供者衝突。 這個名稱字串會包含在提供者產生的每個 ETW 事件內,因此請嘗試使用相對簡短的名稱。 例如,您可以使用 類似 "MyCompany.MyComponent""MyCompany.MyOrganization.MyComponent"的名稱。

這必須是字串常值。 請勿使用變數。

[in] providerId

提供者的 ETW 控制項 GUID,指定為括弧中 11 個整數的逗號分隔清單。 例如,GUID {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5} 會以 (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5)表示。

雖然任何唯一 GUID 都可用於提供者識別符,但 Microsoft 建議使用使用 ETW 名稱哈希演算法從提供者名稱產生的 GUID。 如需產生提供者標識碼的相關信息 ,請參閱TRACELOGGING_DEFINE_PROVIDER

[in, optional] __VA_ARGS__

提供者的選擇性參數。 大部分的提供者不需要指定任何選擇性參數。

如果您想要讓提供者與 ETW 提供者群組相關聯,請新增 TraceLoggingOptionGroup 宏來指定提供者的群組 GUID。 否則,請勿指定任何 __VA_ARGS__ 參數。

傳回值

備註

在大部分情況下,您將使用 TRACELOGGING_DEFINE_PROVIDER ,而不是此宏。 在某些情況下,您可能需要使用此宏為 TraceLogging 提供者配置靜態記憶體,而不需同時宣告句柄變數。 您的程式代碼後續會視需要宣告句柄變數。

TRACELOGGING_DEFINE_PROVIDER_STORAGE 會宣告靜態變數,其中包含提供者所需的數據。 然後,您可以藉由取得此變數的位址來建立句柄。 的叫用 TRACELOGGING_DEFINE_PROVIDER_STORAGE(storageVar, ...) 可以視為類似下列程式代碼:

static TraceLoggingProviderState storageVar = { ... };

使用方式範例:

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

const TraceLoggingHProvider g_hMyProvider = &storageVar; // Make a handle

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 traceloggingprovider.h

另請參閱

TRACELOGGING_DECLARE_PROVIDER

TRACELOGGING_DEFINE_PROVIDER

TraceLoggingWrite