функция обратного вызова 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.

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

None

Remarks

Чтобы зарегистрировать функцию обратного вызова 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 со значением RelationTypeEjectionRelations или RemovalRelations , даже если устройство удаляется.

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Верхняя часть wdfdevice.h (включая Wdf.h)
IRQL PASSIVE_LEVEL