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


функция обратного вызова EVT_WDF_DEVICE_RELATIONS_QUERY (wdfdevice.h)

[Применимо только к KMDF]

Драйвер EvtDeviceRelationsQuery сообщает об изменениях связей между устройствами, поддерживаемыми драйвером.

Синтаксис

EVT_WDF_DEVICE_RELATIONS_QUERY EvtWdfDeviceRelationsQuery;

VOID EvtWdfDeviceRelationsQuery(
  [in] WDFDEVICE Device,
  [in] DEVICE_RELATION_TYPE RelationType
)
{...}

Параметры

[in] Device

Дескриптор объекта устройства платформы.

[in] RelationType

Значение перечислителя DEVICE_RELATION_TYPE типа. Перечисление DEVICE_RELATION_TYPE определяется в wdm.h.

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

Никакой

Замечания

Чтобы зарегистрировать функцию обратного вызова EvtDeviceRelationsQuery, драйвер должен вызвать WdfDeviceInitSetPnpPowerEventCallbacks.

Большинство драйверов на основе платформы не должны предоставлять эту функцию обратного вызова.

Во время инициализации системы диспетчер Plug and Play перечисляет все устройства в системе, отправив IRP_MN_QUERY_DEVICE_RELATIONS запрос в стек драйверов. Если драйвер на основе платформы зарегистрировал функцию обратного вызова EvtDeviceRelationsQuery, платформа вызывает ее. Драйвер-функция для шины должен сообщать обо всех дочерних устройствах, подключенных к шине.

Кроме того, после вызова платформы IoInvalidateDeviceRelations, чтобы сообщить об изменении связи между устройствами на шине водителя, диспетчер Plug and Play отправляет еще один IRP_MN_QUERY_DEVICE_RELATIONS запрос в стек драйверов. Затем платформа вызывает функцию обратного вызова драйвера EvtDeviceRelationsQuery, чтобы драйвер смог предоставить сведения об изменении.

Тип работы, которую должен выполнять драйвер, зависит от значения, полученного для параметра RelationType. Значение может быть одним из следующих значений:

BusRelations

    Большинство драйверов на основе платформы не сообщают о связях шины в функции обратного вызова EvtDeviceRelationsQuery. Вместо этого водители следуют рекомендациям, описанным в разделе "Перечисление устройств на шине".

EjectionRelations

    Большинство драйверов на основе платформы не сообщают о отношениях извлечения в функции обратного вызова EvtDeviceRelationsQuery. Вместо этого драйвер шины устройства вызывает WdfPdoAddEjectionRelationsPhysIcalDevice и WdfPdoRemoveEjectionRelationsPhysicalDevice.

удаления

    Большинство драйверов на основе платформы не сообщают об удалении в функции обратного вызова EvtDeviceRelationsQuery. Вместо этого драйверы вызывают WdfDeviceAddRemovalRelationsPhysicalDevice и WdfDeviceRemoveRemovalRelationsPhysicalDevice.

TargetDeviceRelation

    Драйверы на основе платформы не должны сообщать о целевом отношении устройства. Вместо этого платформа обрабатывает этот запрос.

Платформа может вызывать функцию обратного вызова EvtDeviceRelationsQuery со значением RelationType значения EjectionRelations или RemovalRelations даже при удалении устройства.

Требования

Требование Ценность
целевая платформа Всеобщий
минимальная версия KMDF 1.0
заголовка wdfdevice.h (include Wdf.h)
IRQL PASSIVE_LEVEL