Condividi tramite


Gestione della rimozione a sorpresa di una scheda di interfaccia di rete

Una rimozione a sorpresa si verifica quando un utente rimuove una scheda di interfaccia di rete (NIC) da un sistema in esecuzione senza notificare prima il sistema tramite l'interfaccia utente.

I driver Miniport per Windows Vista e versioni successive del sistema operativo dovrebbero essere in grado di gestire le rimozioni a sorpresa. In particolare, i driver miniport NDIS con un bordo inferiore di Windows Driver Model (WDM) devono essere in grado di gestire tali eventi. Se un driver miniport NDIS-WDM non gestisce una rimozione a sorpresa, eventuali IRP in sospeso inviati dal conducente del miniport al driver dell'autobus sottostante prima che la rimozione a sorpresa non possa essere completata.

Per Windows Vista e versioni successive, un driver miniport (ad esempio un driver miniport con un bordo inferiore WDM) che non controlla direttamente l'hardware deve impostare il flag di attributo NDIS_MINIPORT_ATTRIBUTES_SURPRISE_REMOVE_OK quando si chiama NdisMSetMiniportAttributes. L'impostazione di questo flag impedisce la visualizzazione di un avviso quando un utente esegue una rimozione a sorpresa di una scheda di interfaccia di rete. Un driver miniport che non può gestire una rimozione a sorpresa non deve impostare questo flag.

Un driver miniport che supporta la rimozione a sorpresa deve tentare di rilevare una rimozione a sorpresa durante le normali operazioni al di fuori del contesto di MiniportDevicePnPEventNotify. Dopo la rimozione di una scheda di interfaccia di rete, un tentativo di lettura delle porte di I/O di una scheda di interfaccia di rete genera in genere valori restituiti con tutti i bit impostati su uno. Se un driver miniport legge tale valore, deve verificare la presenza dell'hardware con un test più definitivo. Ad esempio, il driver miniport potrebbe scrivere un valore in una porta di I/O e quindi provare a leggere il valore da tale porta. Il driver miniport può anche verificare la presenza di valori validi nei registri di I/O della scheda di interfaccia di rete. Il rilevamento di una rimozione a sorpresa in questo modo impedisce al driver miniport di bloccarsi in un ciclo infinito quando tenta di leggere i registri di una scheda di interfaccia di rete rimossa in un interrupt DPC.. Un driver miniport che smette di rispondere in questo modo impedisce a NDIS di chiamare la funzione MiniportDevicePnPEventNotify del driver.