Un usuario desconecta un dispositivo (UMDF 1)
Advertencia
UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2.
Los ejemplos de UMDF 1 archivados se pueden encontrar en la actualización de ejemplos de controladores de Windows 11, versión 22H2 - mayo de 2022.
Para obtener más información, consulta Introducción con UMDF.
Mientras se ejecuta un sistema, un usuario puede quitar un dispositivo de una de las dos maneras siguientes: mediante la eliminación ordenada, lo que significa que el usuario informa al sistema de que el dispositivo está a punto de quitarse (por ejemplo, mediante el programa Unplug o Eject Hardware); o por eliminación sorpresa, lo que significa que el usuario desconecta el dispositivo sin informar al sistema. Si el bus admite la eliminación sorpresa (por ejemplo, USB), los controladores del dispositivo deben ser capaces de controlar la desaparición repentina del dispositivo.
Eliminación ordenada
El usuario solicita la eliminación mediante el programa Unplug o Eject Hardware del sistema, deshabilitando el dispositivo mediante Administrador de dispositivos, o insertando un botón de expulsión del dispositivo expulsable. El marco permite quitar o deshabilitar el dispositivo, a menos que el controlador haya proporcionado una función de devolución de llamada IPnpCallback::OnQueryRemove y la función de devolución de llamada haya vetado la eliminación.
En la ilustración siguiente se muestra la secuencia de devoluciones de llamada UMDF en apagado y eliminación. La secuencia comienza en la parte superior de la figura con un dispositivo que se encuentra en estado de alimentación de trabajo (D0).
Eliminación sorpresa
En este escenario, un usuario desconecta un dispositivo de forma inesperada. En la secuencia de eliminación sorpresa, UMDF llama a la devolución de llamada IPnpCallback::OnSurpriseRemoval para notificar al controlador que el dispositivo se ha quitado inesperadamente. Esta devolución de llamada no se garantiza que se produzca en ningún orden determinado con las demás devoluciones de llamada de la secuencia de eliminación.
Por lo general, el controlador debe evitar el acceso al hardware en la ruta de acceso de eliminación. El reflector agota el tiempo de espera si un intento de acceder al hardware espera indefinidamente. En la ilustración siguiente se muestra la secuencia de eliminación sorpresa de un controlador UMDF.