séquence Surprise-Removal
Si l’utilisateur supprime l’appareil sans avertissement, en le débranchant simplement sans utiliser Gestionnaire de périphériques ou l’utilitaire Safely Remove Hardware, l’appareil est considéré comme « supprimé par surprise ». Lorsque cela se produit, l’infrastructure suit une séquence de suppression légèrement différente. Il suit également la séquence de suppression de surprises si un autre pilote appelle IoInvalidateDeviceState sur l’appareil, même si l’appareil est toujours physiquement présent. Dans la séquence de suppression de surprise, l’infrastructure appelle le rappel EvtDeviceSurpriseRemoval avant d’appeler l’un des autres rappels de la séquence de suppression. Une fois la séquence terminée, l’infrastructure détruit l’objet d’appareil. Les pilotes de tous les périphériques amovibles doivent s’assurer que les rappels dans les chemins d’arrêt et de démarrage peuvent gérer les défaillances, en particulier les défaillances provoquées par la suppression du matériel. Toute tentative d’accès au matériel ne doit pas attendre indéfiniment, mais doit être soumise à des délais d’expiration ou à un minuteur de surveillance.
Le diagramme suivant montre les rappels impliqués dans une suppression surprise :
Si l’appareil n’était pas dans l’état de fonctionnement lors de sa suppression, l’infrastructure appelle le rappel d’événement EvtDeviceReleaseHardware immédiatement après EvtDeviceSurpriseRemoval. Il omet les étapes intermédiaires, qui ont déjà été effectuées lorsque l’appareil est sorti de l’état de fonctionnement.