EVT_WDF_DEVICE_RELATIONS_QUERY función de devolución de llamada (wdfdevice.h)

[Solo se aplica a KMDF]

La devolución de llamada de eventos EvtDeviceRelationsQuery de un controlador notifica los cambios en las relaciones entre los dispositivos admitidos por el controlador.

Sintaxis

EVT_WDF_DEVICE_RELATIONS_QUERY EvtWdfDeviceRelationsQuery;

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

Parámetros

[in] Device

Identificador de un objeto de dispositivo de marco.

[in] RelationType

Valor de enumerador con tipo DEVICE_RELATION_TYPE. La enumeración DEVICE_RELATION_TYPE se define en wdm.h.

Valor devuelto

None

Observaciones

Para registrar la función de devolución de llamada EvtDeviceRelationsQuery , un controlador debe llamar a WdfDeviceInitSetPnpPowerEventCallbacks.

La mayoría de los controladores basados en marcos no necesitan proporcionar esta función de devolución de llamada.

Durante la inicialización del sistema, el administrador de Plug and Play enumera todos los dispositivos del sistema mediante el envío de una solicitud de IRP_MN_QUERY_DEVICE_RELATIONS a la pila de controladores. Si un controlador basado en marcos ha registrado una función de devolución de llamada EvtDeviceRelationsQuery , el marco lo llama. El controlador de función del bus debe notificar todos los dispositivos secundarios que están conectados al bus.

Además, después de que el marco llame a la rutina IoInvalidateDeviceRelations para informar de una relación modificada entre los dispositivos del bus del controlador, el administrador de Plug and Play envía otra solicitud de IRP_MN_QUERY_DEVICE_RELATIONS a la pila de controladores. A continuación, el marco llama a la función de devolución de llamada EvtDeviceRelationsQuery del controlador para que el controlador pueda proporcionar detalles sobre el cambio.

El tipo de trabajo que debe realizar un controlador depende del valor recibido para el parámetro RelationType . El valor puede ser uno de los siguientes:

BusRelations

    La mayoría de los controladores basados en marcos no notifican relaciones de bus en una función de devolución de llamada EvtDeviceRelationsQuery. En su lugar, los controladores siguen las directrices que se describen en Enumerar los dispositivos en un bus.

EjectionRelations

    La mayoría de los controladores basados en marcos no notifican relaciones de ejección en una función de devolución de llamada EvtDeviceRelationsQuery. En su lugar, el controlador del bus del dispositivo llama a WdfPdoAddEjectionRelationsPhysicalDevice y WdfPdoRemoveEjectionRelationsPhysicalDevice.

RemovalRelations

    La mayoría de los controladores basados en marcos no notifican relaciones de eliminación en una función de devolución de llamada EvtDeviceRelationsQuery. En su lugar, los controladores llaman a WdfDeviceAddRemovalRelationsPhysicalDevice y WdfDeviceRemoveRemovalRelationsPhysicalDevice.

TargetDeviceRelation

    Los controladores basados en marcos no tienen que notificar la relación de destino de un dispositivo. En su lugar, el marco controla esta solicitud.

El marco puede llamar a la función de devolución de llamada EvtDeviceRelationsQuery con un valor RelationType de EjectionRelations o RemovalRelations incluso si se quita el dispositivo.

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdfdevice.h (incluya Wdf.h)
IRQL PASSIVE_LEVEL