Gestion des événements de modification de l’interface d’appareil
Lorsqu’un pilote ou un composant en mode utilisateur active ou désactive une interface d’appareil instance, le gestionnaire PnP appelle toutes les routines de rappel de notification inscrites pour les événements EventCategoryDeviceInterfaceChange sur la classe d’interface de l’appareil. Pour indiquer la raison de la notification, le gestionnaire PnP définit le membre Event du paramètre NotificationStructure de la routine de rappel sur GUID_DEVICE_INTERFACE_ARRIVAL ou GUID_DEVICE_INTERFACE_REMOVAL.
Lors de la gestion d’un événement GUID_DEVICE_INTERFACE_ARRIVAL, une routine de rappel de notification doit :
Effectuez des tâches définies par le pilote pour gérer la nouvelle interface.
En règle générale, une routine de rappel de notification ouvre directement l’appareil dans le contexte du rappel. Toutefois, si l’ouverture de l’appareil peut provoquer des événements PnP suivants (par exemple, l’énumération d’appareils enfants), la routine de rappel doit à la place mettre en file d’attente une routine worker pour ouvrir l’appareil ; sinon, un blocage peut se produire.
Une routine de rappel peut activer sa propre interface en réponse à la disponibilité de la nouvelle interface.
Lors de la gestion d’un événement GUID_DEVICE_INTERFACE_REMOVAL, une routine de rappel de notification doit :
- Annulez les opérations effectuées lorsque l’interface a été activée. Fermez tous les handles de fichiers qui ont été ouverts en réponse à l’événement d’arrivée de l’interface.
En plus d’EventCategoryDeviceInterfaceChange, le pilote doit également s’inscrire à EventCategoryTargetDeviceChange et fermer le handle de fichier à partir du rappel d’événement GUID_TARGET_DEVICE_QUERY_REMOVE . Le fait de garder le handle de fichier ouvert met un veto au processus de suppression et entraîne l’annulation de la suppression ordonnée.