Поделиться через


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

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

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

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

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

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

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

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 должен вызываться в пользовательском интерфейсе.

Совместно распространяемые установщики WDF не работают

Начиная с этого выпуска распространяемые совместно установщики WDF больше не поддерживаются. В частности, на компьютере с windows 11 версии 22H2 WDK и более старым WDK, при создании драйвера WDF 1.11 msbuild завершается сбоем, так как он не может найти WDF cointaller.

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

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 и выше. Правило определяет все экземпляры в исходном коде драйвера, где используются старые идентификаторы DDI выделения пула, и рекомендует заменить их новым, безопасным эквивалентным DDI. Правило применимо к драйверам на основе WDM, WDF и NDIS.

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

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

Ошибка AWDK, соответствующая целевому объекту 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 assembly 
'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.

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

Установка 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 на компьютере APIValidator x86 должна быть отключена.

Решение:

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

  2. Выберите APIValidator, а затем "Общие", а затем измените значение "Запустить ApiValidator" с "Да" на "Нет".

Для WDK, работающего в системах Windows 7, требуется 3033929 базы знаний

Перед установкой WDK в системах под управлением Windows 7 необходимо установить 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, обновленная версия перезаписывает исходный. Примечание. В этом сценарии "Добавление или удаление программ" обе версии будут перечислены.