Condividi tramite


Scaricare l'ambiente della Routine

Il sistema operativo disinstalla un driver quando il driver viene sostituito o quando tutti i dispositivi che il driver gestisce sono stati rimossi. Il gestore PnP chiama la routine Unload di un driver PnP se il driver non ha più oggetti dispositivo dopo che gestisce una richiesta di IRP_MN_REMOVE_DEVICE .

All'inizio della sequenza di scaricamento, il gestore di I/O o PnP contrassegna l'oggetto driver e i relativi oggetti dispositivo come "Scarica in sospeso". Dopo che un driver è stato contrassegnato come "Scarica in sospeso", nessun driver aggiuntivo può collegarsi a tale driver, né può essere effettuato alcun riferimento aggiuntivo agli oggetti dispositivo del driver. Il driver può completare gli IRP in sospeso, ma il sistema non invierà nuovi IRP al driver.

Il gestore di I/O chiama la routine Unload di un driver quando sono soddisfatte tutte le condizioni seguenti:

  • Nessun riferimento rimane a uno degli oggetti dispositivo creati dal driver. In altre parole, nessun file associato al dispositivo sottostante può essere aperto, né ci possono essere IRP in sospeso per uno qualsiasi degli oggetti dispositivo del driver.

  • Nessun altro driver rimane collegato a questo driver.

  • Il driver ha chiamato IoUnregisterPlugPlayNotification per annullare la registrazione di tutte le notifiche PnP per le quali è stata registrata in precedenza.

Si noti che la routine Unload non viene chiamata se la routine DriverEntry di un driver restituisce uno stato di errore. In questo caso, il gestore di I/O libera semplicemente lo spazio di memoria occupato dal driver.

Né il gestore PnP né il gestore di I/O chiama Scarica routine al momento dell'arresto del sistema. Un driver che deve eseguire l'elaborazione dell'arresto deve registrare una routine DispatchShutdown .