Problemas conocidos del Kit para controladores de Windows (WDK)

En este tema se detallan los problemas conocidos relacionados con el WDK.

WDK para Windows 11, versión 24H2

Reinicio después del aprovisionamiento

Después del aprovisionamiento y la implementación, la máquina de destino no se puede reiniciar después de los pasos de implementación.

Compatibilidad con SxS del controlador ARM64 WDK

Cuando el kit de Windows 11, versión 24H2, y el kit de Windows 11, versión 22H2m se instalan en un equipo ARM64, al compilar un controlador KMDF para ARM64 con TargetPlatformVersion establecido en Windows 11, se produce un error en la versión 22H2 de WdfDriverEntry.lib(stub.obj) : error LNK2001: unresolved external symbol.

No se puede instalar la extensión WDK

Si usa Visual Studio versión 17.11.0 o posterior, desactive la casilla de instalación de extensión en la instalación de WDK.

WDK para Windows 11, versión 22H2

Error de servicio al iniciarse

Si instaló Windows 11 original, versión 22H2 WDK entre mayo y agosto de 2022 (versión 10.0.22621.1), es posible que vea el siguiente mensaje de error al iniciar Visual Studio con WDK.

El paquete Microsoft.Windows.Tools.WinIDE.Debugger.DebuggerPackage, DebuggerPackage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null no se cargó correctamente.

Este problema está corregido en el WDK versión 10.0.22621.382. Puede desinstalar el WDK y, a continuación, volver a instalar el WDK más reciente mediante las instrucciones de Descarga del Kit para controladores de Windows.

El depurador de Visual Studio no funciona

No es posible depurar controladores dentro de la interfaz de Visual Studio cuando se usa Visual Studio 2022 versión 17.2.0 y 17.3 con Windows 11, versión 22H2 WDK (10.0.22621.382). Para solucionar el problema, realice una de las siguientes acciones: actualice Visual Studio a 17.4.1 o posterior, depure con WinDbg o use una versión de Visual Studio anterior a la 17.2.0. El siguiente mensaje de error está relacionado con este problema:

Se debe llamar a QueryBuildManagerBusyEx en la interfaz de usuario.

Los coinstaladores redistribuibles de WDF no funcionan

A partir de esta versión, ya no se admiten los coinstaladores redistribuibles de WDF. En concreto, en un equipo que tiene Windows 11, versión 22H2 WDK y un WDK anterior, al compilar un controlador WDF 1.11, msbuild produce un error porque no encuentra el coinstalador WDF.

Para solucionar este problema, antes de instalar Windows 11, versión 22H2 WDK, realice una copia de seguridad de la carpeta \Program files (x86)\windows kit\10\redist\wdf y restáurela después. Como alternativa, si ya ha instalado Windows 11, versión 22H2 WDK, instale el archivo MSI de los componentes redistribuibles de WDK 8 en un equipo independiente y copie la carpeta redist en la carpeta anterior. Para obtener más información, consulte Componentes de marco redistribuibles.

WDK para Windows 10, versión 2004

Problema en las funciones ExAllocatePoolZero, ExAllocatePoolQuotaZero y ExAllocatePoolPriorityZero solucionado

En mayo de 2020, OSR descubrió que la nueva compatibilidad de nivel descendente para el establecimiento en cero de las asignaciones de grupos tenía un problema que podía provocar que una asignación no se inicializase con cero en sistemas que ejecutan Windows 10, versión 1909. Esto se ha corregido ahora con una actualización de seguridad del WDK para Windows 10, versión 2004 y Enterprise WDK (EWDK) para Windows 10, versión 2004 el 16 de diciembre. Microsoft ha aprovechado la actualización de seguridad y ha actualizado el EWDK para incluir las herramientas de compilación de Visual Studio 16.7. Microsoft recomienda a todos los desarrolladores de controladores desinstalar el SDK y WDK originales (versión 2004) e instalar el SDK de actualización y WDK o EWDK.

Para garantizar que existía una solución de seguridad completa, en noviembre se publicó una corrección del sistema operativo para Windows 10, versión 1909, de modo que si se creaba un controlador con el problema de seguridad, el sistema operativo estaría protegido frente a él.

Además de descargar el WDK/EWDK actualizado, Microsoft recomienda que todos los controladores cambien todas las asignaciones de kernel para usar los nuevos DDI de agrupación cero que devuelven memoria cero de forma predeterminada. Esto aumentará la seguridad y la confiabilidad de los controladores. Para ayudar con esta transición, Microsoft ha creado una regla de comprobador de controladores estáticos que está disponible en versión preliminar de Windows 10 WDK versiones 20236 y posteriores. La regla identificará todas las instancias del código fuente de un controlador donde se usan los DDI de asignación de grupos antiguos y recomendará reemplazarlas por la DDI nueva y equivalente más segura. La regla es aplicable a los controladores basados en WDM, WDF y NDIS.

La instalación de WDK ya no habilita mitigaciones de Spectre para todos los proyectos de C++ como se ve en WDK 1903

Aunque la instalación de WDK habilitará la mitigación de Spectre de forma predeterminada para todos los controladores, ya no las habilita para todos los proyectos de C++.

Error "No se encontró un WDK correspondiente al destino '10.0.19041.0'".

Al seleccionar [Versión del SDK de Windows] en "10.0 (versión instalada más reciente)" con el WDK 10.0.19041.0, se produce el error "No se encontró un WDK correspondiente a la versión de destino '10.0.19041.0'", aunque la versión del SDK esté instalada.

Solución alternativa: en la página de propiedades del proyecto de controlador (Propiedades de configuración >General) establezca la versión del SDK de Windows en $(LatestTargetPlatformVersion). Si esta opción no está disponible para seleccionar, seleccione la opción heredar del valor predeterminado primario o del proyecto.

EWDK y SDV que se ejecutan en el servidor tienen requisitos de .NET

La ejecución del comprobador de controladores estáticos desde EWDK requiere .Net Framework 4.7.2. Dependiendo de la versión de Windows en el sistema, es posible que .NET esté instalado, pero debe estar habilitado o no estar instalado. Para obtener más información sobre la versión de .NET instalada o el estado de la instalación de .NET, consulte Versiones y dependencias de .NET Framework.

Se produce un error en la generación de DVL con System.IO.FileNotFoundException

Al intentar crear un registro de comprobación del controlador (DVL), se mostrará el siguiente error:

Unhandled Exception: System.IO.FileNotFoundException: 
Could not load file or assembly 
'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 
or one of its dependencies. 
The system cannot find the file specified.

Esto puede ocurrir en los entornos de línea de comandos y GUI. Este problema se resuelve en una versión futura del WDK y se puede ver en el WDK de Windows Insider Preview. Desafortunadamente, no existe ninguna solución alternativa para la versión actual.

Error de SDV en el EWDK si VS no está instalado

SDV tiene una dependencia de VCRUNTIME140D.dll como parte de Visual Studio. Por lo tanto, se producirá un error al ejecutar el EWDK en una máquina sin VS instalado. Instale Visual Studio en el equipo para solucionar este problema.

El comprobador de controladores no se habilita o deshabilita al usar el Explorador de pruebas de WDK

El comprobador de controladores no se habilita o deshabilita cuando se ejecutan las pruebas fundamentales del dispositivo mediante el Explorador de pruebas de WDK.

Solución alternativa: en la máquina cliente, habilite o deshabilite manualmente el comprobador de controladores según estas instrucciones.

Instalación en paralelo del WDK de Windows 10, versión 2004 y WDK Windows 10, versión 1903 o versión 1803

Con ambas versiones de kits instalados en el mismo equipo, la característica "Implementar controlador" no funcionará para la versión anterior.

Solución alternativa: use 1803 en una máquina independiente si se necesita implementar la característica del controlador.

Las pruebas de Windows Device Testing Framework (WDTF) ahora solo se ejecutan en sistemas con versiones de Windows 10 coincidentes como WDK

En el WDK para Windows 10, versión 1809, se realizaron cambios en WDTF para admitir esta versión de Windows 10, versión 1809. La consecuencia es que WDTF ya no se ejecutará en el sistema operativo de nivel descendente. El cambio continúa con el WDK para Windows 10, versión 2004.

Alternativa para las pruebas de nivel descendente

Las pruebas WDTF del WDK para Windows 10, versión 1803, se pueden ejecutar en versiones anteriores de Windows.

APIValidator

En una máquina de arquitectura x86 no se puede ejecutar APIValidator en archivos binarios x64. Si se compilan controladores x64 en una máquina x86, APIValidator debe estar desactivado.

Solución alternativa:

  1. Vaya a la página de propiedades de la solución de controlador.

  2. Seleccione APIValidator, después General y, a continuación, cambie Ejecutar ApiValidator de a No.

WDK que se ejecuta en sistemas Windows 7 requiere KB 3033929

Debe instalar microsoft Security Advisory 3033929 (KB3033929) antes de instalar WDK en sistemas que ejecutan Windows 7. KB3033929 se puede descargar desde el Centro de descarga de Microsoft.

La instalación del WDK genera un error de Visual Studio que indica que el componente del complemento ya está instalado

Este mensaje de error se puede ver si el WDK se desinstaló, pero no se desinstaló la extensión de controladores WDK para Visual Studio.

Solución: en Visual Studio, vaya al menú desplegable Extensión, elija Administrar extensiones, seleccione el Kit para controladores de Windows y, a continuación, haga clic en Desinstalar.

Preguntas más frecuentes

¿Cómo puedo saber si las versiones WDK o EWDK que tengo contienen la corrección para la puesta a cero de las asignaciones de pool?

En Configuración del sistema vaya a Agregar o quitar programas, busque Kit para controladores de Windows y anote la versión. El WDK original para Windows 10, versión 2004, tiene una versión de 10.0.19041.1, la versión actualizada de WDK es 10.0.19041.685 Para el EWDK, una vez que se inicia el entorno EWDK, consulte el título de la ventana de comandos. La versión actualizada contendrá vb_release_svc_prod1.19041.685. Además, al examinar las variables de entorno, la variable BuildLab debe mostrar vb_release_svc_prod1.19041.685.

El Kit de desarrollo de software (SDK) de Windows también se ha actualizado, ¿esto también es necesario?

Sin embargo, el Kit de desarrollo de software (SDK) de Windows actualizado contiene una corrección para onecore.lib que puede ser útil. Además, generalmente es una buena idea mantener el SDK y WDK alineados.

Si ya tengo instalado el WDK para Windows 10, versión 2004, ¿necesito desinstalarlo antes de instalar la versión actualizada?

Se recomienda encarecidamente desinstalar el SDK y el WDK originales de 2004 e instalar el SDK y el WDK de actualización de seguridad. Dicho esto, si el WDK actualizado se instala sobre el WDK original, la versión actualizada sobrescribirá a la original. Nota: en este escenario, en "Agregar o quitar programas", se mostrarán ambas versiones.