Routine di scaricamento del driver PnP
Un driver PnP deve avere una routine Unload che rimuove tutte le risorse specifiche del driver, ad esempio memoria, thread ed eventi, create dalla routine DriverEntry . Se non sono presenti risorse specifiche del driver da rimuovere, il driver deve comunque avere una routine Di scaricamento , ma può semplicemente restituire.
La routine Scarica scaricamento di un driver può essere chiamata in qualsiasi momento dopo la rimozione di tutti i dispositivi del driver. Il gestore PnP chiama la routine Unload di un driver nel contesto di un thread di sistema in IRQL = PASSIVE_LEVEL.
I driver PnP liberano risorse specifiche del dispositivo e oggetti dispositivo in risposta ai provider di integrazione di rimozione dei dispositivi PnP. Il gestore PnP invia questi irP per conto di ogni dispositivo PnP che enumera, nonché tutti i dispositivi legacy enumerati root che un driver segnala usando IoReportDetectedDevice.
Di conseguenza, le routine Di scaricamento dei driver PnP sono in genere semplici, spesso costituite solo da un'istruzione return . Tuttavia, se il driver ha allocato qualsiasi risorsa a livello di driver nella routine DriverEntry , deve deallocare tali risorse nella routine Scarica a meno che non sia già stato fatto. In generale, il processo di scaricamento di un driver PnP è un'operazione sincrona.
Il gestore di I/O libera l'oggetto driver e qualsiasi estensione dell'oggetto driver allocata dal driver usando IoAllocateDriverObjectExtension.