Compartir a través de


secuencia de Surprise-Removal

Si el usuario quita el dispositivo sin previo aviso, simplemente desenchufarlo sin usar Administrador de dispositivos o la utilidad Quitar hardware de forma segura, el dispositivo se considera "sorpresa-quitado". Cuando esto ocurre, el marco sigue una secuencia de eliminación ligeramente diferente. También sigue la secuencia de eliminación sorpresa si otro controlador llama a IoInvalidateDeviceState en el dispositivo, incluso si el dispositivo sigue estando físicamente presente. En la secuencia de eliminación sorpresa, el marco llama a la devolución de llamada EvtDeviceSurpriseRemoval antes de llamar a cualquiera de las otras devoluciones de llamada en la secuencia de eliminación. Una vez completada la secuencia, el marco destruye el objeto de dispositivo. Los controladores de todos los dispositivos extraíbles deben asegurarse de que las devoluciones de llamada en las rutas de acceso de apagado y de inicio pueden controlar errores, especialmente los errores causados por la eliminación del hardware. Los intentos de acceder al hardware no deben esperar indefinidamente, pero deben estar sujetos a tiempos de espera o a un temporizador de guardián.

En el diagrama siguiente se muestran las devoluciones de llamada implicadas en una eliminación sorpresa:

Diagrama de flujo que ilustra la secuencia de eliminación sorpresa en los controladores de dispositivos.

Si el dispositivo no estaba en estado de trabajo cuando se quitó, el marco llama a la devolución de llamada de evento EvtDeviceReleaseHardware inmediatamente después de EvtDeviceSurpriseRemoval. Omite los pasos intermedios, que ya se realizaron cuando el dispositivo salió del estado de trabajo.