Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En PnP-drivrutin måste ha en Avlastningsrutin som tar bort alla drivrutinsspecifika resurser, till exempel minne, trådar och händelser, som skapas av driverEntry-rutinen . Om det inte finns några drivrutinsspecifika resurser att ta bort måste drivrutinen fortfarande ha en Avlastningsrutin , men den kan helt enkelt returneras.
En drivrutins avlastningsrutin kan anropas när som helst när alla drivrutinsenheter har tagits bort. PnP-hanteraren anropar en drivrutins avlastningsrutin i kontext för en systemtråd på IRQL = PASSIVE_LEVEL.
PnP-drivrutiner frigör enhetsspecifika resurser och enhetsobjekt som svar på IRP:er för borttagning av PnP-enheter. PnP-hanteraren skickar dessa IRP:er för varje PnP-enhet som den räknar upp samt eventuella rotenumererade äldre enheter som en drivrutin rapporterar med IoReportDetectedDevice.
Därför är PnP-drivrutinernas avlastningsrutiner vanligtvis enkla och består ofta bara av en retursats . Men om drivrutinen allokerade alla drivrutinsomfattande resurser i sin DriverEntry-rutin måste den frigöra dessa resurser i sin Avlastningsrutin om den inte redan har gjort det. I allmänhet är processen att ta bort en PnP-drivrutin en synkron åtgärd.
I/O-hanteraren frigör drivrutinsobjektet och eventuella tillägg till objektet som drivrutinen allokerade med IoAllocateDriverObjectExtension.