Power-Down et séquence de suppression pour un pilote de bus
La figure suivante montre l’ordre dans lequel l’infrastructure appelle les fonctions de rappel d’événement d’un pilote de bus KMDF lors de la mise hors tension et de la suppression d’un appareil connecté au bus. La séquence commence en haut de la figure avec un appareil opérationnel à l’état d’alimentation opérationnelle (D0) :
L’infrastructure ne supprime pas l’ADO tant que l’appareil n’est pas physiquement supprimé du système. Par exemple, si un utilisateur désactive l’appareil dans Gestionnaire de périphériques ou l’arrête dans l’utilitaire Safely Remove Hardware, mais qu’il ne supprime pas physiquement l’appareil, l’infrastructure conserve l’AOP. Si l’appareil est ensuite réactivé, l’infrastructure utilise le même PDO et commence la séquence de démarrage en appelant le rappel EvtDevicePrepareHardware , comme indiqué dans La séquence de mise sous tension pour un objet d’appareil physique.
Remarque : En règle générale, le framework appelle la fonction de rappel EvtDeviceReleaseHardware d’un pilote de bus après avoir appelé la fonction EvtDeviceReleaseHardware pour tous les appareils enfants énumérés par le pilote. Si le parent rencontre une panne de mise sous tension ou de mise sous tension de l’appareil, le framework peut appeler evtDeviceReleaseHardware du pilote avant d’avoir appelé les fonctions EvtDeviceReleaseHardware pour tous les appareils enfants. Envisagez d’appeler WdfDeviceInitSetReleaseHardwareOrderOnFailure pour vous assurer que l’infrastructure appelle le rappel EvtDeviceReleaseHardware du pilote de bus uniquement après la suppression de tous les appareils enfants.