Compartir a través de


Controlar la eliminación sorpresa de una NIC

Una eliminación sorpresa se produce cuando un usuario quita una tarjeta de interfaz de red (NIC) de un sistema en ejecución sin notificar al sistema de antemano a través de la interfaz de usuario (UI).

Los controladores miniport para Windows Vista y versiones posteriores del sistema operativo deben ser capaces de controlar eliminaciones sorpresas. En concreto, los controladores de minipuerto de NDIS con un borde inferior del modelo de controladores de Windows (WDM) deben ser capaces de controlar dichos eventos. Si un controlador de miniporte NDIS-WDM no controla una eliminación sorpresa, los IRP pendientes que el controlador de miniporte envió al controlador de autobús subyacente antes de que no se pueda completar la eliminación sorpresa.

Para Windows Vista y versiones posteriores, un controlador de minipuerto (como un controlador de minipuerto con un borde inferior de WDM) que no controla el hardware directamente debe establecer la marca de atributo NDIS_MINIPORT_ATTRIBUTES_SURPRISE_REMOVE_OK al llamar a NdisMSetMiniportAttributes. Establecer esta marca impide que se muestre una advertencia cuando un usuario realiza una eliminación sorpresa de una NIC. Un controlador miniporte que no puede manejar una eliminación sorpresa no debe establecer esta marca.

Un miniportador que admite la eliminación sorpresa debe intentar detectar una eliminación sorpresa durante las operaciones normales, fuera del contexto de MiniportDevicePnPEventNotify. Después de quitar una NIC, un intento de leer los puertos de E/S de una NIC normalmente da como resultado valores devueltos que tienen todos los bits establecidos en uno. Si un controlador de minipuerto lee este valor, debe comprobar la presencia del hardware con una prueba más concluyente. Por ejemplo, el controlador de minipuerto podría escribir un valor en un puerto de E/S e intentar leer el valor de ese puerto. El controlador de minipuerto también podría comprobar si hay valores válidos en los registros de E/S de la NIC. Detectar una eliminación sorpresa de tal manera impide que el controlador de miniporte cuelga en un bucle infinito cuando intenta leer los registros de una NIC eliminada en un DPC de interrupción. Un controlador de miniporte que deja de responder de esta manera impide que NDIS llame a la función MiniportDevicePnPEventNotify del controlador.