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