Delen via


Routine voor het ontladen van PnP-stuurprogramma's

Een PnP-stuurprogramma moet een unload-routine hebben waarmee alle stuurprogrammaspecifieke resources, zoals geheugen, threads en gebeurtenissen, worden verwijderd die door de DriverEntry-routine worden gemaakt. Als er geen stuurprogrammaspecifieke resources zijn die moeten worden verwijderd, moet het stuurprogramma nog steeds een Unload-routine hebben, maar kan het eenvoudigweg terugkeren.

De verwijderroutine van een stuurprogramma kan op elk moment worden aangeroepen nadat alle apparaten van het stuurprogramma zijn verwijderd. De PnP-manager roept de routine voor ontladen van een stuurprogramma aan in de context van een systeemthread bij IRQL = PASSIVE_LEVEL.

PnP-stuurprogramma's bevrijden apparaatspecifieke bronnen en apparaatobjecten als reactie op PnP-verwijderings-IRP's. De PnP-manager verzendt deze IRP's namens elk PnP-apparaat dat hij opsomt, evenals alle verouderde apparaten die als root zijn opgesomd en door een stuurprogramma worden gerapporteerd met IoReportDetectedDevice.

Daarom zijn de Unload-routines van PnP-stuurprogramma's meestal eenvoudig en bestaan vaak slechts uit een return-statement. Als het stuurprogramma echter resources voor het hele stuurprogramma heeft toegewezen in de DriverEntry-routine , moet het de toewijzing van deze resources ongedaan maken in de routine voor het verwijderen van resources, tenzij dit al is gebeurd. Over het algemeen is het ontladen van een PnP-stuurprogramma een synchrone bewerking.

De I/O-manager maakt het stuurprogrammaobject en eventuele stuurprogrammaobjectextensie vrij die het stuurprogramma heeft toegewezen met behulp van IoAllocateDriverObjectExtension.