WMIDPREQUEST 回呼函式 (evntrace.h)

RegisterTraceGuids 型 (「傳統」) 事件提供者會實作此函式,以接收控制器的啟用或停用通知要求。

WMIDPREQUEST 類型會定義這個回呼函式的指標。 ControlCallback 是應用程式定義函數名稱的佔位元。

語法

WMIDPREQUEST Wmidprequest;

ULONG Wmidprequest(
  [in] WMIDPREQUESTCODE RequestCode,
       PVOID RequestContext,
       ULONG *BufferSize,
  [in] PVOID Buffer
)
{...}

參數

[in] RequestCode

要求程序代碼。 這會是下列其中一個值。

意義
WMI_ENABLE_EVENTS 啟用提供者或變更提供者組態。
WMI_DISABLE_EVENTS 停用此提供者。

RequestContext

提供者定義的內容。 提供者使用 的 RequestContext 參數
RegisterTraceGuids 以指定內容。

BufferSize

保留供內部使用。

[in] Buffer

WNODE_HEADER 結構的指標,其中包含啟用或停用提供者的事件追蹤會話相關信息。

傳回值

如果回呼成功,您應該傳回ERROR_SUCCESS。 請注意,ETW 會忽略此函式的傳回值,除非控制器呼叫 EnableTrace 來啟用提供者,而且提供者尚未呼叫 RegisterTraceGuids。 發生這種情況時,如果註冊成功, RegisterTraceGuids 會傳回此回呼的傳回值。

備註

此函式是使用 RegisterTraceGuids 函式來指定。 當控制器呼叫 EnableTrace 函式以啟用、停用或變更啟用旗標或層級時,ETW 會呼叫此回呼。 提供者會根據 RequestCode 值啟用或停用本身。 一般而言,提供者會使用此值來設定全域旗標,以指出其啟用狀態。

提供者會定義其啟用或停用的解譯。 一般而言,如果啟用提供者,它會產生事件,但停用時則不會。

ETW 不會傳遞啟用旗標,也不會將控制器傳遞給 EnableTrace 函式的啟用層級傳遞至此回呼。 若要擷取此資訊,請分別呼叫 GetTraceEnableFlagsGetTraceEnableLevel 函式。

您也需要在此回呼中擷取會話句柄,以供日後呼叫使用。 若要擷取會話句柄,請呼叫 GetTraceLoggerHandle 函式

您的回呼函式不得呼叫可能更具體地產生 LoadLibra (ry 的任何專案,任何需要載入器鎖定) 的專案。

範例

如需 ControlCallback 函式的範例實作,請參閱 撰寫傳統事件

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 evntrace.h

另請參閱

EnableTrace

GetTraceEnableFlags

GetTraceEnableLevel

GetTraceLoggerHandle

RegisterTraceGuids

WNODE_HEADER