Condividi tramite


Rilascio di oggetti dispositivo e controller

Prima che un driver elimini un dispositivo o un oggetto controller, deve rilasciare i riferimenti alle risorse esterne, ad esempio puntatori a oggetti di altri driver o a oggetti di interruzione, archiviati nel dispositivo o nell'estensione del controller corrispondente. Può quindi chiamare IoDeleteDevice per ogni oggetto dispositivo creato dal driver. Un driver non WDM che in precedenza denominato IoCreateController deve chiamare anche IoDeleteController.

Qualsiasi oggetto definito dal kernel per il quale il driver fornisce l'archiviazione in un'estensione del dispositivo viene liberato automaticamente quando la routine Scarica chiama IoDeleteDevice con l'oggetto dispositivo corrispondente. In generale, qualsiasi oggetto configurato dalla routine DriverEntry o Reinitialize chiamando KeInitializeXxx può essere liberato da una chiamata a IoDeleteDevice se il driver ha fornito l'archiviazione per tale oggetto nell'estensione del dispositivo. Ad esempio, se un driver ha una routine CustomTimerDpc e ha fornito archiviazione per gli oggetti DPC e timer necessari nell'estensione del dispositivo, la chiamata a IoDeleteDevice rilascia queste risorse di sistema.

Analogamente, qualsiasi oggetto definito dal kernel per cui il driver fornisce l'archiviazione in un'estensione del controller viene liberato automaticamente quando la routine Scarica chiama IoDeleteController con l'oggetto controller corrispondente.

Se la routine DriverEntry o Reinitialize denominata IoGetConfigurationInformation per aumentare il conteggio per un determinato tipo di dispositivo, la routine Di caricamento deve anche chiamare IoGetConfigurationInformation e decrementare il conteggio per i propri dispositivi nella struttura di informazioni di configurazione globale di I/O manager mentre elimina gli oggetti dispositivo corrispondenti.

Prima di restituire il controllo, una routine di scaricamento è responsabile anche di liberare qualsiasi altra risorsa allocata dal driver che non è ancora stata liberata da altre routine di driver.