Freigeben über


Unload-Routine des Nicht-PnP-Treibers

Frühere Treiber und Treiber auf hoher Ebene, die keine PnP-Geräteentfernungsanforderungen verarbeiten, müssen in ihren Unload-Routinen Ressourcen freigeben, Geräteobjekte löschen und sich aus dem Gerätestapel trennen.

Wenn dies noch nicht geschehen ist, sollte ein älteren Gerätetreiber in seiner Unload-Routine die Unterbrechungen vom Gerät deaktivieren. Andernfalls wird der ISR möglicherweise aufgerufen, um einen Geräteunterbruch zu behandeln, während die Unload-Routine Ressourcen in der Geräteerweiterung freigibt, die der ISR für die Behandlung des Interrupts benötigt. Auch wenn die ISR unter diesen Umständen erfolgreich ausgeführt wird, wird die DpcForIsr- oder CustomDpc-Routine, die die ISR-Warteschlange stellt, und möglicherweise andere Treiberroutinen, die bei IRQL >= DISPATCH_LEVEL ausgeführt werden, vor der Unload-Routine, die wieder die Kontrolle erhält, ausgeführt. Dadurch erhöht sich die Wahrscheinlichkeit, dass die Unload-Routine eine Ressource gelöscht hat, auf die eine andere Treiberroutine verweist. Weitere Informationen finden Sie unter Verwalten von Hardwareprioritäten .

Nach dem Deaktivieren von Unterbrechungen müssen Dateisystem- und Legacytreiber Ressourcen und Objekte freigeben. Ausführliche Informationen finden Sie in den folgenden beiden Abschnitten:

Freigeben von Driver-Allocated Ressourcen

Freigeben von Geräte- und Controllerobjekten