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.
Ein PnP-Treiber muss über eine Unload-Routine verfügen, die treiberspezifische Ressourcen wie Arbeitsspeicher, Threads und Ereignisse entfernt, die von der DriverEntry-Routine erstellt werden. Wenn keine treiberspezifischen Ressourcen zum Entfernen vorhanden sind, muss der Treiber trotzdem über eine Unload-Routine verfügen, kann aber einfach zurückgegeben werden.
Die Unload-Routine eines Treibers kann jederzeit aufgerufen werden, nachdem alle Geräte des Treibers entfernt wurden. Der PnP-Manager ruft die Unload-Routine eines Treibers im Kontext eines Systemthreads bei IRQL = PASSIVE_LEVEL auf.
Als Reaktion auf PnP-Geräteentfernungs-IRPs geben PnP-Treiber gerätespezifische Ressourcen und Geräteobjekte frei. Der PnP-Manager sendet diese IRPs im Namen jedes PnP-Geräts, das er auflistet, sowie jedes von der Wurzel aufgelistete Legacygerät, das ein Treiber mit IoReportDetectedDevice meldet.
Folglich sind die Unload-Routinen von PnP-Treibern in der Regel einfach, häufig nur aus einer Rückgabe-Anweisung bestehen. Wenn der Treiber jedoch treiberweite Ressourcen in seiner DriverEntry-Routine zugeordnet hat, muss er diese Ressourcen in seiner Unload-Routine freigeben, es sei denn, er hat dies bereits getan. Im Allgemeinen ist der Vorgang zum Entladen eines PnP-Treibers ein synchroner Vorgang.
Der E/A-Manager gibt das Treiberobjekt und alle Treiberobjekterweiterungen frei, die der Treiber mit IoAllocateDriverObjectExtension zugewiesen hat.