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.MyOrganization.MyComponent"
等"MyCompany.MyComponent"
名称。
这必须是字符串文本。 请勿使用变量。
[in] providerId
提供程序的 ETW 控件 GUID,指定为逗号分隔列表(括号中包含 11 个整数)。 例如,GUID {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
将表示为 (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5)
。
尽管任何唯一 GUID 都可用于提供程序 ID,但 Microsoft 建议使用使用 ETW 名称哈希算法从提供程序名称生成的 GUID。 有关生成提供程序 ID 的信息,请参阅 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 |