Partager via


Gestion d’un événement GUID_TARGET_DEVICE_QUERY_REMOVE

Avant que le gestionnaire PnP envoie une IRP_MN_QUERY_REMOVE_DEVICE IRP aux pilotes d’un appareil, il appelle toutes les routines de rappel de notification inscrites pour EventCategoryTargetDeviceChange sur l’appareil. Le gestionnaire PnP spécifie une NotificationStructure. Événement de GUID_TARGET_DEVICE_QUERY_REMOVE.

En réponse à une telle notification, la routine de rappel détermine si l’appareil peut être supprimé sans perturber le système.

Si l’appareil ne doit pas être supprimé, la routine de rappel retourne STATUS_UNSUCCESSFUL. En réponse à cette status, le gestionnaire PnP abandonne le traitement de la suppression des requêtes et l’appareil ne sera pas supprimé.

Si l’appareil peut être supprimé, la routine de rappel doit effectuer toutes les opérations appropriées pour préparer la suppression de l’appareil, telles que la fermeture des poignées ouvertes sur l’appareil (si possible). Si les handles restent ouverts sur l’appareil, le gestionnaire PnP ne peut pas supprimer l’appareil et le gestionnaire PnP abandonne le traitement de la suppression des requêtes.

Lors de la gestion d’un événement GUID_TARGET_DEVICE_QUERY_REMOVE, une routine de rappel de notification doit :

  • Fermez les poignées ouvertes de l’appareil.

  • Si le pilote a une référence en suspens sur l’objet file, déréférencement de l’objet file.

  • Restez inscrit pour les futures notifications EventCategoryTargetDeviceChange . Cela est important, car l’opération de suppression imminente peut être annulée.

La fermeture d’un handle à un appareil n’annule pas l’inscription d’un pilote pour la notification de changement d’appareil cible PnP. Le gestionnaire PnP peut toujours appeler la routine de rappel de notification du pilote, mais dans ces appels, l’objet de fichier dans NotificationStructure n’est pas valide.