Novedades de los controladores WDF en Windows 10
En este tema se resumen las nuevas características y mejoras de los controladores Windows Driver Frameworks (WDF) en Windows 10.
Windows Server 2022 incluye Kernel-Mode Driver Framework (KMDF) versión 1.33 y User-Mode Driver Framework (UMDF) versión 2.33.
Puede usar estas versiones del marco para compilar controladores para:
- Windows 10 (todas las SKU)
- Windows Server 2022
Para obtener el historial de versiones, vea Historial de versiones de KMDF e Historial de versiones de UMDF. Excepto donde se indica, las referencias UMDF de esta página describen la funcionalidad de la versión 2 que no está disponible en umdf versión 1.
Novedades de WDF para Windows Server 2022
Vea Historial de versiones de KMDF e Historial de versiones de UMDF.
Novedades de WDF para Windows 10, versión 2004
Vea Historial de versiones de KMDF e Historial de versiones de UMDF.
Novedades de WDF para Windows 10, versión 1903
No se ha agregado ni cambiado ninguna funcionalidad.
Novedades de WDF para Windows 10, versión 1809
- Se ha agregado la nueva API WdfDriverRetrieveDriverDataDirectoryString
Novedades de WDF para Windows 10, versión 1803
- Compilar un controlador WDF para varias versiones de Windows.
- WdfDeviceRetrieveDeviceDirectoryString
Novedades de WDF para Windows 10, versión 1709
Vea Historial de versiones de KMDF e Historial de versiones de UMDF.
Novedades de WDF para Windows 10, versión 1703
En Windows 10, versión 1703, WDF incluye las siguientes mejoras:
Nueva configuración de WDF Verifier para detectar la creación excesiva de objetos
En algunos casos, los objetos de marco tienen un elemento primario incorrecto y no se eliminan después de su uso. Con esta característica, puede especificar un número máximo de objetos y lo que debe ocurrir cuando se supera este umbral.
Para iniciar la supervisión, agregue los siguientes valores del Registro en:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<driver service>\Parameters\wdfAgregue un valor DWORD denominado ObjectLeakDetectionLimit con el valor de umbral. Este es el número máximo de objetos de los tipos descritos en la clave ObjectsForLeakDetection.
Agregue un nuevo valor REG_MULTI_SZ denominado ObjectsForLeakDetection que muestra cada nombre de tipo que se comprobará. Por ejemplo, podría especificar
WDFDMATRANSACTION WDFDEVICE. Para especificar todos los tipos de identificador, use*como cadena.Para controlar si superar este umbral debe provocar una interrupción de depuración o una comprobación de errores, establezca la clave DbgBreakOnError.
De forma predeterminada, si no se especifica la clave ObjectsForLeakDetection, el marco supervisa WDFREQUEST, WDFWORKITEM, WDFKEY, WDFSTRING, WDFOBJECT y WDFDEVICE.
El límite se escala con el número de dispositivos instalados, por lo que si el controlador crea tres objetos WDFDEVICE, el límite de WDF Verifier es tres veces el valor especificado en ObjectLeakDetectionLimit.
Si especifica WDFREQUEST, el comprobador solo cuenta los objetos WDFREQUEST que crea el controlador.
Esta característica no admite actualmente el seguimiento del tipo de objeto WDFMEMORY.
La herramienta SleepStudy proporciona información sobre los controladores kmdf
La herramienta de software SleepStudy informa del número de referencias de energía que tiene un controlador KMDF que impiden que el sistema entre en suspensión. Para obtener más información, vea Modern standby SleepStudy.
En el resto de esta página se describe la funcionalidad que se agregó Windows 10, versión 1507.
El código fuente de WDF está disponible públicamente
El código fuente de WDF ahora está disponible como código abierto en GitHub. Se trata del mismo código fuente a partir del cual se ha creado la biblioteca en tiempo de ejecución de WDF que Windows 10 en tiempo de ejecución. Puede depurar el controlador de forma más eficaz cuando pueda seguir las interacciones entre el controlador y WDF. Descárbalo de https://github.com/Microsoft/Windows-Driver-Frameworks .
Los archivos de símbolos privados para WDF Windows 10 ahora están disponibles a través del servidor de símbolos de Microsoft.
Los Windows Driver Kit (WDK) 10 también se publican ahora en GitHub. Descárbalos de https://github.com/Microsoft/Windows-Driver-Samples .
Depuración automática de nivel de código fuente del código de marco
Cuando usa WinDbg para depurar un controlador WDF en Windows 10, WinDbg recupera automáticamente el código fuente del marco de trabajo del repositorio de GitHub público de Microsoft. Puede usar esta característica para seguir paso a paso el código fuente de WDF durante la depuración y para obtener información sobre los internos del marco sin descargar el código fuente en un equipo local. Para obtener más información, vea Depuración con código fuente wdf y vídeo: depuración del controlador con código fuente de WDF.
Cumplimiento de controladores universales
Todos los ejemplos de controladores WDF y Visual Studio de controladores son compatibles Windows controlador universal.
Todas las funcionalidades de KMDF y UMDF 2 son compatibles Windows controlador universal.
Tenga en cuenta que los controladores UMDF 1 solo se ejecutan Windows 10 las ediciones de escritorio y versiones anteriores de las versiones de escritorio Windows. ¿Desea beneficiarse de las funcionalidades universales de UMDF 2? Para obtener información sobre cómo portabilidad del controlador UMDF 1 antiguo, vea Portabilidad de un controlador de UMDF 1 a UMDF 2.
Depuración y diagnóstico
Todos los controladores KMDF y UMDF 2 pueden usar una grabadora de seguimiento de inflight (IFR) siempre disponible y siempre disponible. Cuando un controlador proporciona un seguimiento personalizado, el registro IFR del controlador contiene los mensajes de seguimiento. Tenga en cuenta que el nuevo registro IFR del controlador es independiente del registro IFR del marco que WDF crea para cada controlador.
Es fácil activar el IFR. Vea Inflight Trace Recorder (IFR) para registrar seguimientos y Using Inflight Trace Recorder in KMDF and UMDF Drivers.
El IFR mantiene un búfer circular de seguimientos de WPP en memoria no paginable. Si un controlador se bloquea, los registros se incluyen con frecuencia en el archivo de volcado de memoria.
Si activa el IFR en el binario del controlador, el IFR estará presente y en ejecución durante la vigencia del controlador. No es necesario iniciar una sesión de recopilación de seguimiento explícita.
Los registros IFR se incluyen en los archivos de minivolfón, excepto cuando el controlador responsable no está predeterminado o si el bloqueo fue un tiempo de espera de host.
Si tiene un depurador conectado, puede acceder a los registros IFR del controlador y del marco mediante la emisión de !wdfkd.wdflogdump.
Si no tiene un depurador conectado, todavía puede acceder a ambos registros. Para obtener información sobre cómo hacerlo, vea Vídeo: Acceso a los registros IFR del controlador sin un depurador.
Al depurar un controlador UMDF, puede combinar registros de marco con registros de controladores mediante la emisión de: !wdfkd.wdflogdumpdrivername.dll-m
Los registros y volcados umdf (WudfTrace.etl) ahora se encuentran en %ProgramData%\Microsoft\WDF en lugar de %systemDrive%\LogFiles\Wudf.
Nuevo comando del depurador: !wdfkd.wdfumtriage proporciona una vista centrada en el kernel de todos los dispositivos UMDF del sistema.
Puede ejecutar !analyze para investigar los errores del comprobador UMDF o las excepciones no controladas de UMDF. Esto funciona para la depuración en vivo del kernel, así como para la depuración de archivos de volcado de memoria de usuario desde %ProgramData%\Microsoft\WDF.
En KMDF y UMDF 2, puede supervisar el uso de referencias de energía en el depurador. Para obtener información, vea Depuración de fugas de referencia de energía en WDF.
Puede usar !wdfkd.wdfcrashdump para mostrar información de error sobre los controladores UMDF 2. Para obtener más información, vea !wdfkd.wdfcrashdump.
Herramienta de seguimiento de rendimiento para controladores WDF
Puede usar el Windows performance Toolkit (WPT) para ver los datos de rendimiento de un controlador KMDF o UMDF 2 determinado. Cuando el seguimiento está habilitado, el marco de trabajo genera eventos ETW para las rutas de acceso de E/S, PnP y Devolución de llamada de Power. A continuación, puede ver gráficos en el Windows Analizador de rendimiento (WPA) que muestran las tasas de rendimiento de E/S, el uso de CPU y el rendimiento de devolución de llamada. El WPT se incluye en Windows Assessment and Deployment Kit (ADK).
Para obtener más información, vea Using the Windows Performance Toolkit (WPT) with WDF.
Compatibilidad adicional con controladores HID en UMDF
UMDF ahora es totalmente compatible con filtros HID (enumerados por HIDClass) y minidrivers. Simplemente porte el controlador KMDF existente o escriba un nuevo filtro UMDF 2; la funcionalidad se habilita automáticamente.
Los minidriveres UMDF HID enumerados por ACPI pueden realizar una suspensión selectiva. Para obtener más información, vea Creating WDF HID Minidrivers.
Ahora se pueden instalar controladores UMDF en la pila HID para dispositivos de entrada de baja latencia, como la entrada táctil y el mouse. Un controlador para un dispositivo de entrada debe especificar la directiva UmdfHostPriority INF. Para obtener información, vea Especificar directivas WDF en archivos INF.
Compatibilidad con interrupciones para dispositivos con respaldo GPIO
- UMDF 2 admite interrupciones para dispositivos con respaldo GPIO, como botones de inserción de hardware. KMDF admite estos dispositivos de forma nativa, sin la solución que se describe en Control de Active-Both interrupciones. Para obtener más información, vea Creating an Interrupt Object.
UMDF ya no requiere WinUSB
Se ha agregado nueva compatibilidad para controladores USB en UMDF. Un controlador USB UMDF 2 ya no usa WinUSB. Para usar la nueva funcionalidad, el controlador establece la directiva UmdfDispatcher en NativeUSB,en lugar de WinUSB. Vea Especificar directivas WDF en archivos INF.
Mejorar el rendimiento
Los componentes del sistema UMDF consumen menos espacio en disco.
Los controladores KMDF y UMDF usan menos memoria no paginada.
La comprobación mejorada de la versión del marco reduce las discrepancias entre encabezados y bibliotecas.
UMDF proporciona una asignación de búfer mejorada para las transferencias HID.