Поделиться через


Функция обратного вызова 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 . Как правило, поставщик использует это значение для установки глобального флага для указания его включенного состояния.

Поставщик определяет свою интерпретацию включения или отключения. Как правило, если поставщик включен, он создает события, но, хотя он отключен, он не делает этого.

Трассировка событий Windows не передает флаги включения и уровень включения, который контроллер передает функции EnableTrace для этого обратного вызова. Чтобы получить эти сведения, вызовите функции GetTraceEnableFlags и GetTraceEnableLevel соответственно.

Вам также необходимо получить дескриптор сеанса в этом обратном вызове для будущих вызовов. Чтобы получить дескриптор сеанса, вызовите функцию GetTraceLoggerHandle .

Функция обратного вызова не должна вызывать ничего, что может вызвать LoadLibrary (в частности, все, что требует блокировки загрузчика).

Примеры

Пример реализации функции ControlCallback см. в разделе Запись классических событий.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header evntrace.h

См. также раздел

EnableTrace

GetTraceEnableFlags

GetTraceEnableLevel

GetTraceLoggerHandle

RegisterTraceGuids

WNODE_HEADER