Surprise-Removal Sequenz

Wenn der Benutzer das Gerät ohne Warnung entfernt, indem es einfach entfernt wird, ohne Geräte-Manager oder das Hilfsprogramm "Hardware sicher entfernen", wird das Gerät als "überraschend entfernt" betrachtet. In diesem Fall folgt das Framework einer etwas anderen Entfernungssequenz. Es folgt auch der Überraschungsentfernungssequenz, wenn ein anderer Treiber IoInvalidateDeviceState auf dem Gerät aufruft, auch wenn das Gerät noch physisch vorhanden ist. In der Überraschungsentfernungssequenz ruft das Framework den EvtDeviceSurpriseRemoval-Rückruf auf, bevor es einen der anderen Rückrufe in der Entfernungssequenz aufruft. Wenn die Sequenz abgeschlossen ist, zerstört das Framework das Geräteobjekt. Treiber für alle Wechselmedien müssen sicherstellen, dass die Rückrufe in den Herunterfahr- und Startpfaden Fehler behandeln können, insbesondere Fehler, die durch das Entfernen der Hardware verursacht werden. Alle Versuche, auf die Hardware zuzugreifen, sollten nicht unbegrenzt warten, sondern einem Timeout oder einem Watchdog-Timer unterliegen.

Das folgende Diagramm zeigt die Rückrufe, die an einer überraschenden Entfernung beteiligt sind:

Flussdiagramm, das die Überraschungsentfernungssequenz in Gerätetreibern veranschaulicht.

Wenn sich das Gerät beim Entfernen nicht im Arbeitszustand befand, ruft das Framework den EvtDeviceReleaseHardware-Ereignisrückruf unmittelbar nach EvtDeviceSurpriseRemoval auf. Es werden die dazwischen liegenden Schritte weggelassen, die bereits ausgeführt wurden, als das Gerät aus dem Arbeitszustand ausstieg.