Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn ein Gerät entfernt werden soll, ruft der PnP-Manager zuerst die DispatchPnP-Routine des Klassentreibers mit einer PnP-Abfrage zum Entfernen (IRP_MJ_PNP mit IRP_MN_QUERY_REMOVE_DEVICE) auf. Der Speicherklassentreiber sollte die Abfrage-Entfernen-Anforderung in einem der folgenden Fälle nicht ausführen:
Das Gerät enthält die System paging-Datei oder Ruhezustandsdatei.
Der Treiber führt einen langen Vorgang aus, der nicht abgebrochen werden soll (z. B. Zurückspulen oder Formatieren eines Bandes).
Es gibt hervorragende Handles für das Gerät (CREATEs).
Der Speicherklassentreiber kann auch eine Entfernungsanforderung ablehnen, wenn das Gerät für das Absturzabbild reserviert ist, da das Entfernen eines solchen Geräts das Absturzabbild deaktivieren würde.
Wenn der Speicherklassentreiber STATUS_SUCCESS als Reaktion auf eine Abfrage entfernen-Anforderung zurückgibt, ruft der PnP-Manager die DispatchPnP-Routine des Klassentreibers mit einer PnP-Remove-Anforderung (IRP_MJ_PNP mit IRP_MN_REMOVE_DEVICE) auf. Die DispatchPnP-Routine des Speicherklassen-Treibers ruft entweder eine interne RemoveDevice-Routine auf oder implementiert dieselbe Funktionalität inline.
Die RemoveDevice-Routine einer Speicherklasse muss folgendes ausführen:
Geben Sie alle ausstehenden Ressourcen, z. B. Speicher oder Ereignisse, frei, die vom Treiber zugewiesen werden.
Löschen Sie ggf. symbolische Verknüpfungen, die vom Treiber erstellt wurden.
Löschen Des Geräteobjekts (Device Object, FDO).
Leiten Sie die Anforderung an den nächsten niedrigeren Treiber weiter.
Wenn der Speicherklassentreiber beim Start PDOs erstellt hat (z. B. um Partitionen auf einem partitionierten Mediengerät darzustellen), wurden solche PDOs bereits entfernt, wenn der PnP-Manager die Remove-Anforderung an den Speicherklassentreiber sendet.
Auch nach dem Löschen bleibt ein Geräteobjekt im System bestehen, wenn es eine nicht-nullende Referenzanzahl hat, bis seine Referenzanzahl null erreicht. Dann verschwindet es leise. Ein Speicherklassentreiber darf nicht versuchen, den Geräteobjektzeiger zu verwenden, nachdem das Geräteobjekt gelöscht wurde.
Weitere Informationen zum Behandeln einer Entfernungsanforderung finden Sie unter "Entfernen eines Geräts".