EventEnabled 函式 (evntprov.h)

判斷事件提供者是否應該根據事件的EVENT_DESCRIPTOR產生特定事件。

如果 ETW 可以快速判斷沒有會話正在接聽來自指定提供者的指定事件,則會傳回 FALSE 。 否則會傳回 TRUE

語法

BOOLEAN EVNTAPI EventEnabled(
  [in] REGHANDLE          RegHandle,
  [in] PCEVENT_DESCRIPTOR EventDescriptor
);

參數

[in] RegHandle

提供者的註冊控制碼。 控制碼來自 EventRegister

如果 RegHandleNullEventEnabled 會傳回 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) ,而不是直接呼叫 EventWriteEventEnabled。 ETW 架構通常會提供自己的已啟用事件功能的 API,應該使用,而不是呼叫 EventEnabled
  • ETW 架構實作通常會檢查自己的提供者狀態,而不是呼叫 EventEnabled

需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 evntprov.h
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

EventProviderEnabled

EVENT_DESCRIPTOR