EventProviderEnabled 函数 (evntprov.h)
确定事件提供程序是否应基于事件的 Level 和 Keyword 生成特定事件。
如果 ETW 可以快速确定没有会话正在侦听给定提供程序中的指定事件,则返回 FALSE 。 否则返回 TRUE。
语法
BOOLEAN EVNTAPI EventProviderEnabled(
[in] REGHANDLE RegHandle,
[in] UCHAR Level,
[in] ULONGLONG Keyword
);
参数
[in] RegHandle
提供程序的注册句柄。 句柄来自 EventRegister。
如果 RegHandle 为 NULL, EventProviderEnabled 将返回 FALSE。
[in] Level
用于描述事件的严重性或重要性的 8 位数字。 有关事件级别值的详细信息 ,请参阅EVENT_DESCRIPTOR 。
[in] Keyword
一个 64 位位掩码,用于指示事件在一组事件类别中的成员身份。 有关事件关键字 (keyword) 值的详细信息,请参阅EVENT_DESCRIPTOR。
返回值
如果 ETW 可以快速确定没有会话正在侦听给定提供程序中的指定事件,则返回 FALSE 。 否则返回 TRUE。
备注
此 API 提供了一种简单方法来确定是否 (启用事件,即任何事件使用者会话是否有兴趣根据提供程序句柄、事件级别和事件关键字 (keyword) 接收事件) 。
注意
此 API 执行保守的快速测试。 在某些情况下,如果后续的深入筛选将确定会话不需要记录事件,则此 API 可能会返回 true。
此 API 提供的功能类似于 EventEnabled 提供的功能。 当提供程序有权访问事件的完整 EVENT_DESCRIPTOR时,提供程序应使用 EventEnabled。 如果提供程序仅有权访问事件的 Level 和 Keyword,则提供程序应使用 EventProviderEnabled。
大多数事件提供程序不会直接调用 EventProviderEnabled :
- EventWrite API 包括自己的 EventProviderEnabled 测试,如果未启用事件,则立即返回 。
- 大多数 ETW 提供程序使用 ETW 框架 (例如清单或 TraceLogging) ,而不是直接调用 EventWrite 或 EventProviderEnabled。 ETW 框架通常提供其自己的已启用事件的 API,应使用该 API,而不是调用 EventProviderEnabled。
- ETW 框架实现通常检查自己的提供程序状态,而不是调用 EventProviderEnabled。
有关更多详细信息,请参阅 EventEnabled。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | evntprov.h |
Library | Advapi32.lib |
DLL | Advapi32.dll |