Известные проблемы с комплектом драйверов Windows (WDK)

В этой статье подробно описаны известные проблемы, касающиеся WDK.

WDK для Windows 11 версии 26H1

Тестирование драйверов с поддержкой Visual Studio

Тестирование драйверов в Visual Studio поддерживается начиная с Visual Studio 2022 версии 17.14.23 и более поздних версий.

Использование обозревателя тестов драйверов с Visual Studio 18.5 или более поздней версии

Была выявлена регрессия, из-за которой Driver Test Explorer не загружает тесты драйверов при использовании новых пакетов WDK VSIX вместе с Visual Studio 2026 версии 18.5 и более поздних версий. Проблема, как представляется, не влияет на Visual Studio 18.4.0. Внутреннее исследование указывает, что проблема связана с изменениями, введенными в более новом выпуске VSIX WDK.

Как отображается эта проблема

  • Обозреватель тестов драйверов не отображает тесты в группе тестов драйверов.
  • Проблема воспроизводится с WDK VSIX в сборках Visual Studio 18.5.0 и новее.

Workaround

  • Откат WDK VSIX до Visual Studio 18.4.0.

WDK для Windows 11 версии 25H2

Следующие версии WDF удаляются из WDK. Существующие проекты драйверов, использующие эти версии WDF, терпят неудачу при сборке.

  • KMDF версии 1.9, 1.11, 1.13
  • UMDF версии 2.0

Обновите проект до WDF версии 15 или выше или используйте старую версию WDK.

WDK для Windows 11 версии 24H2

Разработка драйверов в режиме ядра x86

Начиная с Windows 11 версии 24H2, WDK больше не поддерживает разработку драйверов в режиме ядра x86. Если у вас есть бизнес-потребности в разработке драйверов режима ядра x86, используйте WDK версии 23H2

Перезапуск после подготовки

Не удается перезапустить целевой компьютер после подготовки и развертывания.

Поддержка SxS для драйвера ARM64 WDK

Когда на компьютере ARM64 установлены комплекты Windows 11, версия 24H2 и версия 22H2, сборка драйвера Kernel Mode Driver Framework (KMDF) для ARM64 с TargetPlatformVersion установленной на Windows 11, версия 22H2 терпит неудачу с WdfDriverEntry.lib(stub.obj) : error LNK2001: unresolved external symbol.

Не удается установить расширение WDK

Если вы используете Visual Studio версии 17.11.0 или более поздней, снимите флажок установки расширения при установке WDK.

WDK для Windows 11 версии 22H2

Ошибка службы при запуске

Если вы установили исходную версию Windows 11 версии 22H2 WDK в период с мая по август 2022 г. (версия 10.0.22621.1), при запуске Visual Studio с WDK может появиться следующее сообщение об ошибке.

Пакет Microsoft.Windows.Tools.WinIDE.Debugger.DebuggerPackage, DebuggerPackage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null не загружен правильно.

Эта проблема устранена в WDK версии 10.0.22621.382. Вы можете удалить WDK, а затем переустановить последнюю версию WDK, выполнив инструкции в разделе "Скачать комплект драйверов Windows".

Отладчик в Visual Studio не работает

Невозможно отлаживать драйверы в интерфейсе Visual Studio при использовании Visual Studio 2022 версии 17.2.0 и 17.3 с Windows 11 версии 22H2 WDK (10.0.22621.382). Чтобы обойти проблему, выполните одно из следующих действий: обновите Visual Studio до 17.4.1 или более поздней версии, отладите с помощью WinDbg или используйте версию Visual Studio до 17.2.0. Следующее сообщение об ошибке связано с этой проблемой:

QueryBuildManagerBusyEx должен вызываться в пользовательском интерфейсе.

Распределяемые сопутствующие установщики Windows Driver Framework (WDF) не выполняют своих функций

Совместно распространяемые установщики WDF больше не поддерживаются. Это приводит к проблемам на компьютерах с установленной версией Windows 11 версии 22H2 WDK и более старой версией WDK. При попытке создать драйвер WDF 1.11 в такой системе msbuild завершается ошибкой. Сборка завершается ошибкой, так как msbuild не может найти совместного установщика WDF.

Чтобы устранить эту проблему, перед установкой Windows 11 версии 22H2 WDK создайте резервную копию папки \Program files (x86)\windows kit\10\redist\wdf и восстановите ее после этого. Альтернативно, если вы установили Windows 11 версии 22H2 WDK, установите файл MSI из распространяемых компонентов WDK 8 на отдельном компьютере и скопируйте папку redist в папку \Program files (x86)\windows kit\10\redist\wdf. Дополнительные сведения см. в разделе "Компоненты распространяемой платформы".

WDK для Windows 10 версии 2004

Проблема в функциях ExAllocatePoolZero, ExAllocatePoolQuotaZero и ExAllocatePoolPriorityZero исправлена

В мае 2020 года OSR обнаружила проблему с новой поддержкой нижнего уровня для автоматического нуля выделения пула. Проблема может привести к тому, что выделение не будет инициализировано с нуля в системах под управлением Windows 10 версии 1909. Это исправлено с обновлением системы безопасности WDK для Windows 10 версии 2004 и Enterprise WDK (EWDK) для Windows 10 версии 2004 16 декабря. Корпорация Майкрософт воспользовалась обновлением системы безопасности и обновила EWDK, чтобы включить средства сборки Visual Studio 16.7. Корпорация Майкрософт рекомендует всем разработчикам драйверов удалить исходный пакет SDK и WDK (версия 2004) и установить пакет SDK обновления и WDK или EWDK.

Чтобы обеспечить комплексное решение для защиты, в ноябре для Windows 10 версии 1909 было выпущено исправление ОС, чтобы, если существует драйвер, содержащий эту уязвимость, система была защищена от неё.

Помимо загрузки обновленной версии WDK/EWDK, корпорация Майкрософт рекомендует всем разработчикам ПО переключить все выделения памяти в ядре на использование новых интерфейсов DDIs для обнуления пула, которые возвращают обнуленную память по умолчанию. Это повышает безопасность и надежность программных драйверов. Чтобы помочь в этом переходе, корпорация Майкрософт создала правило проверки статических драйверов, которое доступно в предварительной версии Windows 10 WDK версий 20236 и выше. Правило выявляет все случаи в исходном коде драйвера, где используются старые интерфейсы выделения пула, и рекомендует заменить их на новые, более безопасные эквиваленты. Правило применимо к драйверам на основе WDM, WDF и NDIS.

Установка WDK больше не включает устранение рисков Spectre для всех проектов C++, как показано в WDK 1903

Хотя установка WDK включает устранение рисков Spectre по умолчанию для всех драйверов, он больше не включает их для всех проектов C++.

Ошибка: WDK, соответствующий целевой платформе '10.0.19041.0', не найден.

Выбор версии пакета SDK для Windows до версии 10.0 (последняя установленная версия)с WDK 10.0.0.19041.0 вызывает ошибку AWDK, соответствующую целевой версии 10.0.19041.0, даже если установлена версия пакета SDK.

Обходной путь: На странице свойств проекта драйвера (Свойства конфигурации >Общие) задайте для параметра «Версия Windows SDK» значение $(LatestTargetPlatformVersion). Если этот параметр недоступен, выберите параметр , наследуется от родительского или проекта по умолчанию.

EWDK и SDV, работающие на сервере, имеют требования к .NET

Для запуска средства проверки статических драйверов из EWDK требуется .NET Framework 4.7.2. В зависимости от версии Windows на вашей системе .NET может быть: установлена, установлена но требует включения, или не установлена. Чтобы получить дополнительную информацию о том, какая версия .NET установлена либо о состоянии установки .NET, ознакомьтесь с информацией о версиях и зависимостях .NET Framework.

Сбой создания DVL с помощью System.IO.FileNotFoundException

При попытке создать журнал проверки драйвера (DVL) отображается следующая ошибка:

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

Эта проблема может возникать как в командной строке, так и в средах графического интерфейса. Эта проблема устранена в будущей версии WDK и может быть замечена в WDK предварительной версии Windows. К сожалению, для текущей версии не существует обходного решения.

SDV не работает в EWDK, если VS не установлен

SDV зависит от VCRUNTIME140D.dll в составе Visual Studio. Таким образом, запуск EWDK на компьютере без установки VS завершается сбоем. Установите Visual Studio на компьютере, чтобы обойти эту проблему.

Средство проверки драйверов не включается и не отключается при использовании тестового обозревателя WDK.

Проверка драйверов не включается/отключается при выполнении базовых тестов устройств с помощью WDK Test Explorer.

Обходное решение: На клиентском компьютере вручную включите или отключите средство проверки драйверов в этих инструкциях.

Параллельная установка WDK для Windows 10 версии 2004 и WDK для Windows 10 версии 1903 или 1803

При использовании обоих версий комплектов, установленных на одном компьютере, функция развертывания драйвера не работает для более старой версии.

Обходное решение: Используйте 1803 на отдельном компьютере, если требуется функция развертывания драйвера .

Тесты Windows Device Testing Framework (WDTF) теперь выполняются только в системах с соответствующими версиями Windows 10 в качестве WDK

В WDK для Windows 10 версии 1809 изменения были внесены в WDTF для поддержки этой версии Windows 10 версии 1809. В результате этого WDTF больше не будет работать на более ранних версиях ОС. Это изменение продолжается с WDK для Windows 10 версии 2004.

Альтернатива для тестирования нижнего уровня

Тесты WDTF в WDK для Windows 10 версии 1803 можно запускать в предыдущих версиях Windows.

APIValidator

На компьютере с архитектурой x86 APIValidator не может работать с бинарными файлами x64. При создании драйверов x64 на компьютере x86 необходимо отключить APIValidator.

Решение:

  1. Перейдите на страницу свойств решения драйвера.

  2. Выберите APIValidator, затем Общие, а затем измените Run ApiValidator с Да на Нет.

Для работы WDK в системах Windows 7 требуется KB 3033929

Перед установкой WDK на системах под управлением Windows 7 необходимо установить рекомендации по безопасности Microsoft 3033929 (KB3033929). KB3033929 можно скачать из Центра загрузки Майкрософт.

При установке WDK в Visual Studio появляется сообщение об ошибке о том, что компонент надстройки уже установлен.

Это сообщение об ошибке появляется, если WDK был удалён, но расширение драйверов WDK для Visual Studio осталось установленным.

Резолюция: В Visual Studio перейдите в раскрывающееся меню расширения , выберите пункт "Управление расширениями", выберите комплект драйверов Windows и выберите "Удалить".

Вопросы и ответы

Как определить, содержат ли имеющиеся у меня версии WDK или EWDK исправление для обнуления выделений из пула?

В разделе "Параметры системы" перейдите к разделу "Добавление или удаление программ", найдите комплект драйверов Windows и обратите внимание на версию. Исходная версия WDK для Windows 10 версии 2004 имеет версию 10.0.19041.1. Обновленная версия WDK — 10.0.19041.685 Для EWDK, после запуска среды EWDK просмотрите название командного окна. Обновленная версия содержит vb_release_svc_prod1.19041.685. Кроме того, при просмотре переменных среды у переменной BuildLab должно быть указано значение vb_release_svc_prod1.19041.685.

Пакет средств разработки программного обеспечения Windows (SDK) также был обновлен, это необходимо?

Нет, однако обновленный пакет средств разработки программного обеспечения Windows (SDK) содержит исправление для onecore.lib, которое может быть приятно иметь. Кроме того, обычно рекомендуется поддерживать согласование пакетов SDK и WDK.

Если у меня уже установлена версия WDK для Windows 10 версии 2004, необходимо удалить ее перед установкой обновленной версии?

Мы рекомендуем, если у вас есть исходный пакет SDK 2004 и WDK, удалить их и установить обновленный комплект SDK и WDK с улучшенной безопасностью. Если обновлённая версия WDK установлена поверх оригинальной версии WDK, обновлённая версия перезаписывает оригинальную. Примечание. В этом сценарии "Добавление или удаление программ" перечислены обе версии.