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