Beenden eines Geräts zum Deaktivieren (Windows 98/Me)
Unter Windows 98/Me gibt der PnP-Manager Probleme an, irPs zu beenden, wenn Geräte-Manager das Gerät deaktiviert. (Windows 2000 und höhere Versionen von Windows problem entfernen IRPs in dieser Situation).)
Der PnP-Manager sendet die Stopp-IRPs in der folgenden Sequenz:
Der PnP-Manager gibt eine IRP_MN_QUERY_STOP_DEVICE aus, um zu fragen, ob die Treiber für ein Gerät das Gerät beenden können.
Wenn alle Treiber im Gerätestapel STATUS_SUCCESS zurückgeben, haben die Treiber das Gerät in einen Zustand versetzt (Stopp ausstehend), aus dem das Gerät schnell beendet werden kann.
Der PnP-Manager fragt so viele Gerätestapel ab, wie erforderlich, um das Gerät zu deaktivieren.
Wenn die IRP_MN_QUERY_STOP_DEVICE erfolgreich ist, gibt der PnP-Manager eine IRP_MN_STOP_DEVICE aus, um das Gerät zu beenden.
Der PnP-Manager sendet den Stopp-IRP nur, wenn die vorherige Abfragestopp-IRP für das Gerät erfolgreich abgeschlossen wurde. Als Reaktion auf das Beenden des IRP geben Treiber die Hardwareressourcen des Geräts (z. B. die E/A-Ports) frei und schlagen alle IRPs fehl, die Zugriff auf das Gerät erfordern.
Wenn die IRP_MN_QUERY_STOP_DEVICE fehlschlägt, sendet der PnP-Manager eine IRP_MN_CANCEL_STOP_DEVICE , um die Abfrage abzubrechen.
Als Reaktion auf eine IRP_MN_CANCEL_STOP_DEVICE setzen die Treiber für ein Gerät das Gerät in den Startzustand zurück und setzen die Verarbeitung von E/A-Anforderungen für das Gerät fort.
Der PnP-Manager bricht den Abfragestopp für einen Gerätestapel ab, wenn ein Treiber im Stapel die Anforderung fehlgeschlagen ist. Wenn der PnP-Manager den Abfragestopp auf nur einem Gerätestapel abbricht, sendet er die IRP_MN_CANCEL_STOP_DEVICE-Anforderung , da alle Treiber, die oberhalb des Treibers angefügt sind, bei dem die Abfrage fehlgeschlagen ist, das Gerät im Status "Beenden ausstehend" aufweisen. Wenn die IRP_MN_CANCEL_STOP_DEVICE erfolgreich ist, haben Treiber das Gerät in den Startzustand zurück versetzt.
Wenn ein Gerät deaktiviert wird, können seine Treiber eingehende IRPs nicht in die Warteschlange stellen, da es keine Garantie gibt, wann das Gerät erneut aktiviert wird. Folglich können Daten verlorengehen.