Fonction IoInvalidateDeviceRelations (wdm.h)
La routine IoInvalidateDeviceRelations informe le gestionnaire PnP que les relations pour un appareil (telles que les relations de bus, les relations d’éjection, les relations de suppression et la relation d’appareil cible) ont changé.
void IoInvalidateDeviceRelations(
[in] PDEVICE_OBJECT DeviceObject,
[in] DEVICE_RELATION_TYPE Type
);
[in] DeviceObject
Pointeur vers l’objet PDO de l’appareil.
[in] Type
Spécifie une valeur d’énumération DEVICE_RELATION_TYPE qui décrit le type de relations qui ont changé. Les valeurs possibles incluent BusRelations, EjectionRelations, RemovalRelationset TargetDeviceRelation. À compter de Windows 7, la valeur powerRelations est également prise en charge.
Aucun
Pour certains types de relation, tels que BusRelations, cette routine entraîne la collecte des informations de relations mises à jour par le gestionnaire PnP ou power Manager en envoyant une demande de IRP_MN_QUERY_DEVICE_RELATIONS aux pilotes de l’appareil. Pour d’autres types de relation, tels que EjectionRelations, le gestionnaire PnP n’a pas besoin de collecter immédiatement de nouvelles informations de relation ; le gestionnaire PnP interroge les pilotes pour les relations d’éjection uniquement lorsqu’il se prépare à éjecter un appareil.
Une fois qu’un pilote de bus appelle IoInvalidateDeviceRelations pour informer le gestionnaire PnP qu’un appareil a disparu, le pilote de bus doit continuer à gérer les irPs PnP pour cet appareil jusqu’à ce qu’il reçoive une demande de IRP_MN_REMOVE_DEVICE. En réponse à cet IRP, le pilote de bus retourne STATUS_NO_SUCH_DEVICE. Tant que le pilote de bus n’a pas terminé correctement la demande de IRP_MN_REMOVE_DEVICE, le pilote de bus peut accéder à l’extension de périphérique pour vérifier ses indicateurs pour l’appareil.