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 |