Zustandsübergänge für PnP-Geräte
Auf einem PnP-System durchläuft ein Gerät verschiedene PnP-Zustände, während es konfiguriert, gestartet, möglicherweise beendet wird, um Ressourcen neu auszugleichen, und möglicherweise entfernt wird. Dieser Abschnitt bietet eine Übersicht über die PnP-Gerätezustände. Die Übersicht ist eine Roadmap für einen Großteil der PnP-Unterstützung, die in einem Fahrer erforderlich ist. In anderen Teilen dieser Dokumentation werden die einzelnen Zustandsübergänge ausführlich beschrieben.
Die folgende Abbildung zeigt die PnP-Zustände für ein Gerät und den Übergang eines Geräts von einem Zustand in einen anderen.
Ab oben links in der vorherigen Abbildung ist ein PnP-Gerät physisch im System vorhanden, da entweder der Benutzer das Gerät gerade eingefügt hat oder das Gerät zur Startzeit vorhanden war. Das Gerät ist der Systemsoftware noch nicht bekannt.
Um mit der Softwarekonfiguration für das Gerät zu beginnen, zählt der PnP-Manager und der übergeordnete Bustreiber das Gerät auf. Der PnP-Manager, möglicherweise mithilfe von Benutzermoduskomponenten, identifiziert die Treiber für das Gerät, einschließlich des Funktionstreibers und aller optionalen Filtertreiber. Der PnP-Manager ruft die DriverEntry-Routine jedes Treibers auf, wenn der Treiber noch nicht geladen ist. Weitere Informationen zum Melden und Auflisten eines PnP-Geräts finden Sie unter Hinzufügen eines PnP-Geräts zu einem ausgeführten System.
Sobald ein Treiber initialisiert wurde, muss er bereit sein, seine Geräte zu initialisieren. Der PnP-Manager ruft die AddDevice-Routine eines Treibers für jedes Gerät auf, das der Treiber steuert.
Wenn ein Treiber eine IRP_MN_START_DEVICE Anforderung vom PnP-Manager empfängt, startet der Treiber das Gerät und ist bereit, E/A-Anforderungen für das Gerät zu verarbeiten. Informationen zur Behandlung einer IRP_MN_START_DEVICE-Anforderung finden Sie unter Starten eines Geräts.
Wenn der PnP-Manager die Hardwareressourcen eines aktiven Geräts neu konfigurieren muss, sendet er IRP_MN_QUERY_STOP_DEVICE und IRP_MN_STOP_DEVICE Anforderungen an die Gerätetreiber. Nachdem die Hardwareressourcen neu konfiguriert wurden, weist der PnP-Manager die Treiber an, das Gerät neu zu starten, indem er eine IRP_MN_START_DEVICE Anforderung sendet. Informationen zur Behandlung von Stopp-IRPs finden Sie unter Beenden eines Geräts. (Die Treiber für ein startkonfiguriertes Gerät können IRP_MN_QUERY_STOP_DEVICE und IRP_MN_STOP_DEVICE Anforderungen empfangen, bevor das Gerät gestartet wurde, obwohl dieser Schritt in der vorherigen Abbildung nicht dargestellt ist.)
Unter Windows 98/Me sendet der PnP-Manager auch IRP_MN_QUERY_STOP_DEVICE - und IRP_MN_STOP_DEVICE Anforderungen, wenn ein Gerät deaktiviert wird. Treiber auf diesen Systemen erhalten nach einem Fehlstart auch eine IRP_MN_STOP_DEVICE Anforderung.
Wenn ein PnP-Gerät physisch aus dem System entfernt wird oder bereits entfernt wurde, sendet der PnP-Manager verschiedene Remove-IRPs an die Gerätetreiber und weist sie an, die Softwaredarstellung des Geräts (Geräteobjekte usw.) zu entfernen. Informationen zum Behandeln von IRPs finden Sie unter Entfernen eines Geräts.
Irgendwann, nachdem alle Geräte eines Treibers entfernt wurden, ruft der PnP-Manager die Unload-Routine des Treibers auf und entlädt den Treiber.