EVT_WDF_DEVICE_RELATIONS_QUERY fonction de rappel (wdfdevice.h)
[S’applique uniquement à KMDF]
Le EvtDeviceRelationsQuery d’un pilote le rappel d’événements signale les modifications apportées aux 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 vers un objet d’appareil framework.
[in] RelationType
Valeur d’énumérateur DEVICE_RELATION_TYPE typée. L’énumération DEVICE_RELATION_TYPE est définie dans wdm.h.
Valeur de retour
Aucun
Remarques
Pour inscrire la fonction de rappel EvtDeviceRelationsQuery, un pilote doit appeler WdfDeviceInitSetPnpPowerEventCallbacks.
La plupart des pilotes basés sur le framework n’ont pas besoin de fournir cette fonction de rappel.
Pendant l’initialisation du système, le gestionnaire Plug-and-Play énumère tous les appareils sur le système en envoyant une demande de IRP_MN_QUERY_DEVICE_RELATIONS à la pile des pilotes. Si un pilote basé sur le framework a inscrit une EvtDeviceRelationsQuery fonction de rappel, l’infrastructure l’appelle. Le pilote de fonction pour le bus doit signaler tous les appareils enfants attachés au bus.
En outre, une fois que l’infrastructure a appelé les IoInvalidateDeviceRelations routine pour signaler une relation modifiée entre les appareils sur le bus du pilote, le gestionnaire Plug-and-Play envoie une autre requête 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. La valeur peut être l’une des suivantes :
BusRelations
-
La plupart des pilotes basés sur le framework ne signalent pas les 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 le framework ne signalent pas les 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 le framework ne signalent pas de relations de suppression dans une fonction de rappel EvtDeviceRelationsQuery. Au lieu de cela, les pilotes appellent WdfDeviceAddRemovalRelationsPhysicalDevice et WdfDeviceRemoveRemovalRelationsPhysicalDevice.
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 requête.
L’infrastructure peut appeler la fonction de rappel EvtDeviceRelationsQuery avec une valeur RelationType de EjectionRelations ou RemoveRelations même si l’appareil est supprimé.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
version minimale de KMDF | 1.0 |
d’en-tête | wdfdevice.h (include Wdf.h) |
IRQL | PASSIVE_LEVEL |