Freigeben über


Surprise-Removal Sequenz

Wenn der Benutzer das Gerät ohne Warnung entfernt, indem er es einfach abzieht, ohne den Geräte-Manager oder das Hilfsprogramm "Hardware sicher entfernen" zu verwenden, wird das Gerät als unerwartet 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 eine der anderen Rückrufe in der Entfernungssequenz aufgerufen wird. Nach Abschluss der Sequenz zerstört das Framework das Geräteobjekt. Treiber für alle Wechselmedien müssen sicherstellen, dass die Rückrufmethoden sowohl während des Herunterfahrens als auch beim Hochfahren 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 Zeitüberschreitungen oder einem Watchdog-Timer unterliegen.

Das folgende Diagramm zeigt die Callbacks, die an einem unerwarteten Entfernen beteiligt sind.

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

Wenn sich das Gerät nicht im Arbeitszustand befand, als es entfernt wurde, ruft das Framework den EvtDeviceReleaseHardware-Ereignisrückruf unmittelbar nach EvtDeviceSurpriseRemoval auf. Wenn das Gerät den Arbeitszustand verlassen hat, werden die dazwischenliegenden Schritte weggelassen, die bereits ausgeführt wurden.