Power-Down- und Entfernungssequenz für einen Bustreiber
Die folgende Abbildung zeigt die Reihenfolge, in der das Framework die Ereignisrückruffunktionen eines KMDF-Bustreibers aufruft, wenn ein Gerät, das mit dem Bus verbunden ist, heruntergefahren und entfernt wird. Die Sequenz beginnt oben in der Abbildung mit einem betriebsbereiten Gerät, das sich im Betriebsleistungszustand (D0) befindet:
Das Framework löscht das PDO erst, wenn das Gerät physisch aus dem System entfernt wurde. Wenn ein Benutzer beispielsweise das Gerät in Geräte-Manager deaktiviert oder im Hilfsprogramm Hardware sicher entfernen, das Gerät jedoch nicht physisch entfernt, behält das Framework die pDO bei. Wenn das Gerät später wieder aktiviert wird, verwendet das Framework dieselbe PDO und beginnt die Startsequenz, indem der Rückruf von EvtDevicePrepareHardware aufgerufen wird, wie unter Power-Up Sequence for a Physical Device Object gezeigt.
Hinweis: In der Regel ruft das Framework die EvtDeviceReleaseHardware-Rückruffunktion eines Bustreibers auf, nachdem es die EvtDeviceReleaseHardware-Funktion für alle untergeordneten Geräte aufgerufen hat, die der Treiber aufzählt. Im Falle eines Gerätein- oder Herunterfahrens des übergeordneten Geräts kann das Framework evtDeviceReleaseHardware des Treibers aufrufen, bevor es die EvtDeviceReleaseHardware-Funktionen für alle untergeordneten Geräte aufgerufen hat. Erwägen Sie den Aufruf von WdfDeviceInitSetReleaseHardwareOrderOnFailure , um sicherzustellen, dass das Framework den EvtDeviceReleaseHardware-Rückruf des Bustreibers erst aufruft, nachdem alle untergeordneten Geräte entfernt wurden.