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

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

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

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

Чтобы устранить эту проблему, перед установкой 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++.

Ошибка "Не найден WDK, соответствующий целевому объекту "10.0.19041.0".

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

Решение: На странице свойств для проекта драйвера (свойства >конфигурации Общие) задайте для windows SDK Version значение $(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 и может быть замечена в Windows Insider Preview WDK. К сожалению, обходного решения для текущей версии не существует.

Сбой SDV в EWDK, если vs не установлен

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

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

Средство проверки драйверов не включается или отключается, если тесты Device Fundamental выполняются с помощью Обозреватель тестирования WDK.

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

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

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

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

Тесты Платформы тестирования устройств Windows (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, затем Общие, а затем измените значение Запустить 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 просмотрите заголовок командного окна. Обновленная версия будет содержать vb_release_svc_prod1.19041.685. Кроме того, при просмотре переменных среды переменная BuildLab должна отображать vb_release_svc_prod1.19041.685.

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

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

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

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