Introducción con UMDF

En esta sección se describe User-Mode Driver Framework (UMDF) y se detallan las diferencias entre las versiones 1 y 2 de UMDF. También proporciona información arquitectónica de alto nivel sobre UMDF. Use esta sección para determinar si un controlador UMDF es la opción adecuada para sus necesidades y decidir qué versión de UMDF usar.

Windows Driver Frameworks (WDF) contiene UMDF, un marco para la creación de controladores en modo de usuario. Al igual que Kernel-Mode Driver Framework (KMDF), UMDF proporciona una capa de abstracción de WDM, que controla gran parte de la Plug and Play (PnP) y la funcionalidad de administración de energía, y permite que el controlador opte por una funcionalidad específica y control de eventos.

En Windows 8.1 en adelante, hay dos versiones principales de UMDF, versiones 1 y 2. La versión 1.11 de UMDF (un punto once) es la versión más reciente de UMDF versión 1 y es la versión final antes de la llegada de UMDF 2. Para obtener una tabla que muestre la información de versión completa y la relevancia del sistema operativo, consulte Historial de versiones de UMDF.

Escribir un controlador con la versión 1 de UMDF requiere usar el modelo de programación COM para escribir código de C++. Aunque la versión 2 de UMDF se basa en el mismo modelo de programación de controladores conceptuales que KMDF, UMDF 1 implementa el modelo con distintos componentes, interfaces de controlador de dispositivo (DDIs) y estructuras de datos. 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 y Windows 11.

Por el contrario, a partir de la versión 2 de UMDF, puede escribir un controlador UMDF en el lenguaje de programación C que llama a muchos de los métodos que están disponibles para los controladores KMDF. Todas las interfaces que se comparten entre la versión 2 de UMDF y KMDF tienen los mismos nombres, parámetros y definiciones de estructura. Si el controlador solo usa la funcionalidad compartida o usa macros condicionales en torno a llamadas que solo se admiten en un marco, puede escribir un único controlador que pueda compilar con UMDF o KMDF. Para obtener más información, consulte Cómo generar un controlador UMDF a partir de un controlador KMDF.

Aunque hay una frecuencia significativa entre UMDF 2 y KMDF, todavía hay una pequeña cantidad de funcionalidad que solo está disponible en un marco u otro. Para obtener información específica, consulte Comparación de la funcionalidad de UMDF 2 con KMDF. Para obtener una lista de todas las devoluciones de llamada y métodos UMDF 2 y KMDF y a qué marcos se aplican, consulte Resumen de devoluciones de llamada y métodos de WDF. En algunos casos, un miembro de estructura o un parámetro de un método solo se aplica a un marco u otro. En la documentación se describen estas diferencias en las páginas de referencia correspondientes.