Delen via


Routineomgeving uitpakken

Het besturingssysteem verwijdert een stuurprogramma wanneer het stuurprogramma wordt vervangen of wanneer alle apparaten waarop de stuurprogrammaservices zijn verwijderd. De PnP-manager roept de routine voor het uitladen van een PnP-stuurprogramma aan als het stuurprogramma geen apparaatobjecten meer heeft nadat deze een IRP_MN_REMOVE_DEVICE aanvraag heeft verwerkt.

Aan het begin van de losvolgorde markeert de I/O-manager of PnP-manager het stuurprogrammaobject en de bijbehorende apparaatobjecten als 'Ontladen in behandeling'. Nadat een stuurprogramma is gemarkeerd als 'Laden uitgesteld', kunnen er geen extra stuurprogramma's meer aan dat stuurprogramma worden gekoppeld en kunnen er ook geen aanvullende verwijzingen naar de apparaatobjecten van het stuurprogramma worden gemaakt. De driver kan uitstaande IRP's voltooien, maar het systeem stuurt geen nieuwe IRP's naar de driver.

De I/O-manager roept de Unload routine van een stuurprogramma aan wanneer aan alle van de volgende voorwaarden is voldaan:

  • Er blijven geen verwijzingen over naar een van de apparaatobjecten die het stuurprogramma heeft gemaakt. Met andere woorden, er kunnen geen bestanden die zijn gekoppeld aan het onderliggende apparaat open zijn, noch kunnen er IRP's uitstaan voor een van de apparaatobjecten van het stuurprogramma.

  • Er zijn geen andere stuurprogramma's meer aan dit stuurprogramma gekoppeld.

  • Het stuurprogramma heeft IoUnregisterPlugPlayNotification aangeroepen om de registratie van alle PnP-meldingen waarvoor het eerder is geregistreerd, ongedaan te maken.

Houd er rekening mee dat de routine voor het uitladen niet wordt aangeroepen als de DriverEntry-routine van een stuurprogramma een foutstatus retourneert. In dit geval maakt de I/O-manager simpelweg de geheugenruimte vrij die door de bestuurder is ingenomen.

Noch de PnP-manager, noch de I/O-manager roept Unload routines aan tijdens het afsluiten van het systeem. Een stuurprogramma dat het afsluitproces moet uitvoeren, moet een DispatchShutdown-routine registreren.