Escribir un controlador universal de Windows (UMDF 2) basado en una plantilla
En este tema se describe cómo escribir un controlador universal de Windows mediante el marco de controladores del modo de usuario (UMDF) 2. Empezará con una plantilla de Microsoft Visual Studio y, a continuación, implementará e instalará el controlador en un equipo independiente.
Para empezar, asegúrese de que tiene la versión más reciente de Microsoft Visual Studio y el Kit de controladores de Windows (WDK). Para obtener vínculos de descarga, consulta Descargar el Kit de controladores de Windows (WDK).
Las herramientas de depuración para Windows se incluyen al instalar WDK.
Creación y compilación de un controlador
Nota:
Al crear un nuevo controlador KMDF o UMDF, debe seleccionar un nombre de controlador que tenga 32 caracteres o menos. Este límite de longitud se define en wdfglobals.h.
Abra Visual Studio. En el menú Archivo , elija Nuevo > proyecto.
En el cuadro de diálogo Crear un nuevo proyecto , seleccione C++ en la lista desplegable de la izquierda, elija Windows en la lista desplegable central y elija Controlador en la lista desplegable derecha.
Seleccione Controlador de modo de usuario (UMDF V2) en la lista de tipos de proyecto. Seleccione Siguiente.
En el cuadro de diálogo Configurar el nuevo proyecto, escriba "UmdfDriver" en el campo Nombre del proyecto.
Nota:
Al crear un nuevo controlador KMDF o UMDF, debe seleccionar un nombre de controlador que tenga 32 caracteres o menos. Este límite de longitud se define en wdfglobals.h.
En el campo Ubicación , escriba el directorio donde desea crear el nuevo proyecto.
Active Colocar solución y proyecto en el mismo directorio y seleccione Crear.
Visual Studio crea un proyecto y una solución. Puede verlos en la ventana Explorador de soluciones. (Si es Explorador de soluciones ventana no está visible, elija Explorador de soluciones en el menú Ver). La solución tiene un proyecto de controlador denominado UmdfDriver. Para ver el código fuente del controlador, abra cualquiera de los archivos en Archivos de código fuente. Driver.c y Device.c son buenos lugares para empezar.
En la ventana Explorador de soluciones, seleccione y mantenga presionada (o haga clic con el botón derecho) solución "UmdfDriver" (1 de 1 proyecto) y elija Configuration Manager. Elija una configuración y una plataforma para el proyecto de controlador. Por ejemplo, elija Depurar y x64.
En la ventana Explorador de soluciones, seleccione y mantenga presionado (o haga clic con el botón derecho) UmdfDriver y elija Propiedades. Vaya a Configuración general del controlador de > propiedades > de configuración y tenga en cuenta que el valor predeterminado de la plataforma de destino es Universal.
Para compilar el controlador, elija Compilar solución en el menú Compilar . Microsoft Visual Studio muestra el progreso de la compilación en la ventana Salida . (Si es La ventana de salida no está visible, elija Salida en el menú Ver ).
Compruebe que la salida de compilación incluye:
> Driver is 'Universal'.
Cuando haya comprobado que la solución se ha compilado correctamente, puede cerrar Visual Studio.
Para ver el controlador integrado, en Explorador de archivos, vaya a la carpeta UmdfDriver y, a continuación, a x64\Debug\UmdfDriver. El directorio incluye los siguientes archivos:
- UmdfDriver.dll: el archivo de controlador en modo de usuario
- UmdfDriver.inf: un archivo de información que Windows usa al instalar el controlador
Implementar e instalar el controlador universal de Windows
Normalmente, al probar y depurar un controlador, el depurador y el controlador se ejecutan en equipos independientes. El equipo que ejecuta el depurador se denomina equipo host y el equipo que ejecuta el controlador se denomina equipo de destino. El equipo de destino también se denomina equipo de prueba.
Hasta ahora, ha usado Visual Studio para compilar un controlador en el equipo host. Ahora debe configurar un equipo de destino. Siga las instrucciones de Aprovisionamiento de un equipo para la implementación y pruebas de controladores (WDK 10). A continuación, estará listo para implementar, instalar, cargar y depurar el controlador:
En el equipo host, abra la solución en Visual Studio. Puede hacer doble clic en el archivo de solución, UmdfDriver.sln, en la carpeta UmdfDriver.
En la ventana Explorador de soluciones, seleccione y mantenga presionado (o haga clic con el botón derecho) UmdfDriver y elija Propiedades.
En la ventana Páginas de propiedades de UmdfDriver, vaya a Propiedades de configuración Driver Install > Deployment (Implementación de instalación del controlador de propiedades>), como se muestra aquí.
Active Quitar versiones anteriores del controlador antes de la implementación.
En Nombre de dispositivo de destino, seleccione el nombre del equipo que configuró para probar y depurar.
Seleccione Hardware ID Driver Update (Actualización del controlador de id. de hardware) y escriba el identificador de hardware del controlador. En este ejercicio, el identificador de hardware es Root\UmdfDriver. Seleccione Aceptar.
Nota En este ejercicio, el identificador de hardware no identifica una parte real del hardware. Identifica un dispositivo imaginario que se asignará un lugar en el árbol de dispositivos como elemento secundario del nodo raíz. En el caso del hardware real, no seleccione Hardware ID Driver Update (Actualización del controlador de id. de hardware); en su lugar, seleccione Instalar y comprobar. Puede ver el identificador de hardware en el archivo de información del controlador (INF). En la ventana Explorador de soluciones, vaya a Archivos de controlador umdfDriver > y haga doble clic en UmdfDriver.inf. El identificador de hardware está en [Standard.NT$ARCH$].
[Standard.NT$ARCH$] %DeviceName%=MyDevice_Install,Root\UmdfDriver
En el menú Depurar , elija Iniciar depuración o presione F5 en el teclado.
Espere hasta que el controlador se haya implementado, instalado y cargado en el equipo de destino. Esto puede llevar varios minutos.
Uso de Driver Module Framework (DMF)
Driver Module Framework (DMF) es una extensión de WDF que permite una funcionalidad adicional para un desarrollador de controladores WDF. Ayuda a los desarrolladores a escribir cualquier tipo de controlador WDF mejor y más rápido.
DMF como marco permite la creación de objetos WDF denominados módulos DMF. El código de estos módulos DMF se puede compartir entre distintos controladores. Además, DMF agrupa una biblioteca de módulos DMF que hemos desarrollado para nuestros controladores y sentir que proporcionaría valor a otros desarrolladores de controladores.
DMF no reemplaza WDF. DMF es un segundo marco que se usa con WDF. El desarrollador que aprovecha DMF sigue usando WDF y todos sus primitivos para escribir controladores de dispositivo.
Para obtener más información, consulta Driver Module Framework (DMF).
Temas relacionados
Desarrollo, pruebas e implementación de controladores