Partager via


EVT_WDF_DEVICE_RELATIONS_QUERY fonction de rappel (wdfdevice.h)

[S’applique uniquement à KMDF]

Le rappel de l’événement EvtDeviceRelationsQuery d’un pilote signale des modifications dans les relations entre les appareils pris en charge par le pilote.

Syntaxe

EVT_WDF_DEVICE_RELATIONS_QUERY EvtWdfDeviceRelationsQuery;

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

Paramètres

[in] Device

Handle d’un objet d’appareil framework.

[in] RelationType

Valeur d’énumérateur de type DEVICE_RELATION_TYPE. L’énumération DEVICE_RELATION_TYPE est définie dans wdm.h.

Valeur de retour

None

Remarques

Pour inscrire la fonction de rappel EvtDeviceRelationsQuery , un pilote doit appeler WdfDeviceInitSetPnpPowerEventCallbacks.

La plupart des pilotes basés sur l’infrastructure n’ont pas besoin de fournir cette fonction de rappel.

Pendant l’initialisation du système, le gestionnaire de Plug-and-Play énumère tous les appareils sur le système en envoyant une requête IRP_MN_QUERY_DEVICE_RELATIONS à la pile des pilotes. Si un pilote basé sur l’infrastructure a inscrit une fonction de rappel EvtDeviceRelationsQuery , l’infrastructure l’appelle. Le pilote de fonction pour le bus doit signaler tous les périphériques enfants qui sont attachés au bus.

En outre, une fois que l’infrastructure a appelé la routine IoInvalidateDeviceRelations pour signaler une relation modifiée entre les appareils sur le bus du pilote, le gestionnaire de Plug-and-Play envoie une autre demande IRP_MN_QUERY_DEVICE_RELATIONS à la pile des pilotes. L’infrastructure appelle ensuite la fonction de rappel EvtDeviceRelationsQuery du pilote afin que le pilote puisse fournir des détails sur la modification.

Le type de travail qu’un pilote doit effectuer dépend de la valeur reçue pour le paramètre RelationType . Il peut s'agir de l'une des valeurs suivantes :

BusRelations

    La plupart des pilotes basés sur l’infrastructure ne signalent pas de relations de bus dans une fonction de rappel EvtDeviceRelationsQuery. Au lieu de cela, les pilotes suivent les instructions décrites dans Énumération des appareils sur un bus.

EjectionRelations

    La plupart des pilotes basés sur l’infrastructure ne signalent pas de relations d’éjection dans une fonction de rappel EvtDeviceRelationsQuery. Au lieu de cela, le pilote du bus de l’appareil appelle WdfPdoAddEjectionRelationsPhysicalDevice et WdfPdoRemoveEjectionRelationsPhysicalDevice.

RemovalRelations

    La plupart des pilotes basés sur l’infrastructure ne signalent pas de relations de suppression dans une fonction de rappel EvtDeviceRelationsQuery. Au lieu de cela, les pilotes appellent WdfDeviceAddRemovalRelationsPhysicalDevice et WdfDeviceRemovalRelationsPhysicalDevice.

TargetDeviceRelation

    Les pilotes basés sur l’infrastructure n’ont pas besoin de signaler la relation cible d’un appareil. Au lieu de cela, l’infrastructure gère cette demande.

L’infrastructure peut appeler la fonction de rappel EvtDeviceRelationsQuery avec une valeur RelationTypeEjectionRelations ou RemovalRelations , même si l’appareil est en cours de suppression.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdfdevice.h (include Wdf.h)
IRQL PASSIVE_LEVEL