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 函式的啟用層級傳遞至此回呼。 若要擷取此資訊,請分別呼叫 GetTraceEnableFlags 和 GetTraceEnableLevel 函式。

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

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

範例

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

規格需求

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

另請參閱

EnableTrace

GetTraceEnableFlags

GetTraceEnableLevel

GetTraceLoggerHandle

RegisterTraceGuids

WNODE_HEADER