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


Функция EtwWriteEx (wdm.h)

Функция EtwWriteEx — это функция трассировки для публикации событий, поддерживающих фильтрацию в коде драйвера в режиме ядра.

Синтаксис

NTSTATUS EtwWriteEx(
  [in]           REGHANDLE              RegHandle,
  [in]           PCEVENT_DESCRIPTOR     EventDescriptor,
  [in]           ULONG64                Filter,
  [in]           ULONG                  Flags,
  [in, optional] LPCGUID                ActivityId,
  [in, optional] LPCGUID                RelatedActivityId,
  [in]           ULONG                  UserDataCount,
  [in, optional] PEVENT_DATA_DESCRIPTOR UserData
);

Параметры

[in] RegHandle

Указатель на дескриптор регистрации поставщика событий, который возвращается функцией EtwRegister в случае успешной регистрации поставщика событий.

[in] EventDescriptor

Указатель на структуру EVENT_DESCRIPTOR .

[in] Filter

Идентификаторы экземпляра, определяющие сеанс, в который не будет записано событие. То есть значение представляет собой маску сеансов, которые должны быть исключены из журнала (отфильтрованы). Используйте побитовое ИЛИ, чтобы указать несколько идентификаторов. Установите значение 0, если фильтры не поддерживаются или событие записывается во все сеансы (сбой фильтров не выполнен). Сведения о получении идентификатора для сеанса см. в параметре FilterData обратного вызова EtwEnableCallback .

[in] Flags

Зарезервировано. Значение должно быть равно нулю (0).

[in, optional] ActivityId

Идентификатор, указывающий действие, связанное с событием. ActivityID предоставляет способ группировки связанных событий и используется для сквозной трассировки. Если значение РАВНО NULL, etW получает идентификатор из локального хранилища потока. Дополнительные сведения о получении этого идентификатора см. в разделе EtwActivityIdControl.

[in, optional] RelatedActivityId

Идентификатор действия от предыдущего компонента. Этот параметр используется для связи событий компонента с событиями предыдущего компонента. Чтобы получить идентификатор действия, который был задан для предыдущего компонента, см. описание параметра ControlCode функции EtwActivityIdControl .

[in] UserDataCount

Количество структур EVENT_DATA_DESCRIPTOR в UserData. Максимальное число — 128.

[in, optional] UserData

Указатель на массив EVENT_DATA_DESCRIPTOR структур. Присвойте этому параметру значение NULL, если UserDataCount равно нулю. Объекты должны быть в том порядке, который указан в манифесте.

Возвращаемое значение

Возвращает ERROR_SUCCESS в случае успешного выполнения или одно из следующих значений при ошибке.

Комментарии

Функция EtwWriteEx является эквивалентом режима ядра функции EventWriteEx в пользовательском режиме. Для данных событий, записанных с помощью этой функции, требуется манифест. Манифест внедряется в поставщик, поэтому поставщик должен быть доступен потребителю для использования данных. Чтобы убедиться, что для публикуемого события есть потребитель, можно перед вызовом EtwWrite вызвать EtwEventEnabled или EtwProviderEnabled.

Используйте параметры ActivityId и RelatedActivityId , если требуется связать события в разных компонентах в сценарии сквозной трассировки. Например, компоненты A, B и C выполняют работу над связанным действием и хотят связать свои события, чтобы потребитель смог использовать все события, связанные с этим действием.

EtwWriteEx можно вызвать в любом IRQL. Однако если значение IRQL больше APC_LEVEL, все данные, передаваемые в функции EtwWrite, EtwWriteEx, EtwWriteString, EtwWriteTransfer , не должны быть доступны для страниц. Это значит, что любая подпрограмма в режиме ядра, выполняющаяся в IRQL больше APC_LEVEL, не может получить доступ к памяти, доступной для страниц. Данные, передаваемые в функции EtwWrite, EtwWriteEx, EtwWriteString и EtwWriteTransfer , должны находиться в памяти системного пространства, независимо от того, что такое IRQL.

Требования

Требование Значение
Минимальная версия клиента Windows 7
Минимальная версия сервера Windows Server 2008 R2
Целевая платформа Универсальное
Верхняя часть wdm.h
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe

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

EtwWrite

EventWrite

EventWriteEx