EventProviderEnabled 函数 (evntprov.h)

确定事件提供程序是否应基于事件的 Level 和 Keyword 生成特定事件。

如果 ETW 可以快速确定没有会话正在侦听给定提供程序中的指定事件,则返回 FALSE 。 否则返回 TRUE

语法

BOOLEAN EVNTAPI EventProviderEnabled(
  [in] REGHANDLE RegHandle,
  [in] UCHAR     Level,
  [in] ULONGLONG Keyword
);

参数

[in] RegHandle

提供程序的注册句柄。 句柄来自 EventRegister

如果 RegHandleNULLEventProviderEnabled 将返回 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) ,而不是直接调用 EventWriteEventProviderEnabled。 ETW 框架通常提供其自己的已启用事件的 API,应使用该 API,而不是调用 EventProviderEnabled
  • ETW 框架实现通常检查自己的提供程序状态,而不是调用 EventProviderEnabled

有关更多详细信息,请参阅 EventEnabled

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 evntprov.h
Library Advapi32.lib
DLL Advapi32.dll

请参阅

EventEnabled

EVENT_DESCRIPTOR