Windows ddk что это

(Redirected from Windows DDK)

«WDK» redirects here. For the ISO 639 code wdk, see Yarli language.

The Windows Driver Kit (WDK) is a software toolset from Microsoft that enables the development of device drivers for the Microsoft Windows platform.[2] It includes documentation, samples, build environments, and tools for driver developers.[3] A complete toolset for driver development also need the following: a compiler Visual Studio, Windows SDK, and Windows HLK.

Windows Driver Kit

Developer(s) Microsoft
Initial release 1992; 33 years ago
Stable release

10.1.26100.2454
/ November 27, 2024; 5 months ago[1]

Operating system Microsoft Windows
Available in English
License Proprietary commercial software
Website docs.microsoft.com/en-us/windows-hardware/drivers/index

Previously, the WDK was known as Device Development Kit (DDK)[4] for Windows 3.x and Windows 9x. It supported the development of VxD drivers. Later versions for Windows NT and Windows 98SE and ME were called Driver Development Kit (DDK)[5] and supported Windows Driver Model (WDM) development. It got its current name when Microsoft released Windows Vista and added the following previously separated tools to the kit: Installable File System Kit (IFS Kit), Driver Test Manager (DTM), though DTM was later renamed and removed from WDK again.

The DDK for Windows 2000 and earlier versions did not include a compiler; instead one had to install Visual C++ separately to compile drivers. From the version for Windows XP the DDK and later the WDK include a command-line compiler to compile drivers. One of the reasons Microsoft gave for including a compiler was that the quality of drivers would improve if they were compiled with the same version of the compiler that was used to compile Windows itself while Visual C++ is targeted to application development and has a different product cycle with more frequent changes. The WDK 8.x and later series goes back to require installing a matched version of Visual Studio separately, but this time the integration is more complete in that you can edit, build and debug the driver from within Visual Studio directly.

Version Build number Release date Supported Driver Model
Windows 3.0 DDK 1990 VxD
Windows 3.1 DDK 1992 VxD
Windows NT 3.1 DDK 1993 NTDM
Windows NT 3.5 DDK 1994 NTDM
Windows NT 3.51 DDK 1025.1 July 1995 NTDM
Windows 95 DDK October 1995 VxD
Windows 95 DDK a June 1996 VxD
Windows 95 DDK b VxD
Windows 95 DDK c (MSDN July 1998) June 1998 VxD
Windows NT DDK (for Windows NT Workstation 3.51) July 1996 NTDM
Windows NT DDK (for Windows NT Workstation 4.0) 1381.1 August 1996 NTDM
Windows 98 DDK July 1998 VxD, WDM?
Windows 98 SE DDK May 1999 VxD, WDM?
Windows 2000 DDK 2195.1 February 2000 WDM
Windows Me DDK August 7, 2000 VxD only
Windows XP Driver Development Kit (DDK) 2600 September 21, 2001 WDM
Windows XP SP1 Driver Development Kit (DDK) 2600.1106 November 14, 2002 WDM
Windows Server 2003 DDK 3790 April 9, 2003 WDM
Windows Server 2003 with Service Pack 1 DDK 3790.1830 April 6, 2005 WDM

Note: Windows NT DDK, Windows 98 DDK and Windows 2000 DDK are no longer made available by Microsoft because of Java-related settlements made by Microsoft with Sun Microsystems.[6]

Version Build number Release date Develops drivers for Visual Studio integration Notes
Windows Driver Kit for Windows Vista 6000 November 29, 2006 Windows Vista
Windows Driver Kit – Server 2008 (x86, x64, ia64) 6001.18000 January 1, 2008 Windows XP SP1 – Vista SP1, Windows Server 2000 SP4 – 2008
Windows Driver Kit – Server 2008 (x86, x64, ia64) 6001.18001 April 1, 2008
Windows Driver Kit – Server 2008 Release SP1 (x86, x64, i64) 6001.18002 December 8, 2008 Windows XP SP1 – Vista SP1, Windows Server 2000 SP4 – 2008 SP1
Windows Driver Kit 7.0.0 7600.16385.0 August 6, 2009 Windows 7, Windows Server 2008 R2
Windows Driver Kit 7.1.0 7600.16385.1 February 26, 2010 Windows XP SP3 – 7, Windows Server 2003 SP1 – 2008 R2 [7]
Windows Driver Kit 8.0 8.59.25584 August 15, 2012 Windows 7 – 8, Windows Server 2008 R2 – 2012 Visual Studio 2012 Downloads before 8/17/2012 had a bug in WDF co-installer[8]
Windows Driver Kit 8.1 8.100.26638 September 16, 2013 Windows 7 – 8.1, Windows Server 2008 R2 – 2012 R2 Visual Studio 2013[9]
Windows Driver Kit 8.1 Update 8.100.26846 August 20, 2014 Windows 7 – 8.1 Update, Windows Server 2008 R2 – 2012 R2 Visual Studio 2013
Windows Driver Kit 10, Version 1507 10.0.26639 July 2015 Windows 7 SP1 – 10 Visual Studio 2015 RTM – Update 3
Windows Driver Kit 10, Version 1511 10.0.10586 November 2015 Windows 7 SP1 – 10 Version 1511 Visual Studio 2015 Update 1 – 3 Windows 10 November Update
Windows Driver Kit 10, Version 1607 10.0.14393 August 2016 Windows 7 SP1 – 10 Version 1607 (Excludes Win10 Version 1507 & 1511) Visual Studio 2015 Update 3 Windows 10 Anniversary Update
Windows Driver Kit 10, Version 1703 10.0.15063 April 2017 Windows 7 SP1 – 10 (Version 1607 & 1703 only), Windows Server 2008 R2 – 2016 Visual Studio 2017 Ver.15.1 Windows 10 Creators Update
Windows Driver Kit 10, Version 1709 10.0.16299 October 2017 Visual Studio 2017 Ver.15.4 Windows 10 Fall Creators Update
Windows Driver Kit 10, Version 1803 10.0.17134 April 2018 Windows 10 April 2018 Update
Windows Driver Kit 10, Version 1809[10] 10.0.17763 October 2018 Windows 10 October 2018 Update
Windows Driver Kit 10, Version 1903 10.0.18362.1 April 2019 Windows 7 SP1 – 10 (Version 1607 to 1903), Windows Server 2008 R2 SP1 – 2019 Visual Studio 2019 Ver.16 Windows 10 May 2019 Update
  • Windows Driver Frameworks
  • Windows Driver Model
  • Windows Logo Kit
  1. ^ «Other WDK downloads». Microsoft Learn. Retrieved 2024-12-03.
  2. ^ Enrico Perla; Massimiliano Oldani (2010). A Guide to Kernel Exploitation; Attacking the Core. Elsevier Science. p. 277. ISBN 9781597494878.
  3. ^ BHATT, PRAMOD CHANDRA P. (2019). AN INTRODUCTION TO OPERATING SYSTEMS : CONCEPTS AND PRACTICE (GNU/LINUX AND WINDOWS), FIFTH EDITION. PHI Learning Pvt. Ltd. p. 529. ISBN 9789387472884.
  4. ^ README.TXT from Windows 3.1 Device Development Kit (DDK)
  5. ^ Bill Blunden (2009). The Rootkit Arsenal; Escape and Evasion. Jones & Bartlett Learning. p. 142. ISBN 9781449661229.
  6. ^ MSDN: Products Unavailable due to Java-related Settlement
  7. ^ [1] Windows Driver Kit Version 7.1.0
  8. ^ WDF co-installer issue
  9. ^ Kraig Brockschmidt (2014). Programming Windows Store Apps with HTML, CSS, and JavaScript. Pearson Education. p. 1002. ISBN 9780735695702.
  10. ^ Liu, Zhifeng; Zheng, Desheng; Wu, Xinlong; Chen, Jixin; Tang, Xiaolan; Ran, Ziyong (2021). VABox: A Virtualization-Based Analysis Framework of Virtualization-Obfuscated Packed Executables. International Conference on Artificial Intelligence and Security. Springer International Publishing. pp. 73–84. ISBN 9783030786212. We use Visual Studio 2017 and WDK for Windows 10, version 1809 for development.

Комплект драйверов Windows — Windows Driver Kit

Комплект драйверов Windows

Разработчики) Microsoft
изначальный выпуск 1992; 28 лет назад
Стабильный выпуск

10.1 / 1 ноября 2015 г.; 5 лет назад

Операционная система Майкрософт Виндоус
Доступно в английский
Лицензия Проприетарный коммерческое программное обеспечение
Интернет сайт документы.microsoft.com/ en-us/ Windows-оборудование/ драйверы/индекс

В Комплект драйверов Windows (WDK) — это программный набор инструментов от Microsoft что позволяет развивать драйверы устройств для Майкрософт Виндоус Платформа. Он включает документацию, образцы, среды сборки и инструменты для разработчиков драйверов. Для полного набора инструментов для разработки драйверов также потребуется следующее: компилятор. Visual Studio, Windows SDK, и Windows HLK.

История WDK

Ранее WDK назывался Windows Driver Development Kit (DDK) и поддерживался Модель драйвера Windows (WDM) разработка. Свое нынешнее название он получил, когда Microsoft выпустила Виндоус виста и добавил в набор следующие ранее разделенные инструменты: Устанавливаемая файловая система Комплект (комплект IFS), Диспетчер тестирования драйверов (DTM), хотя позже DTM был переименован и снова удален из WDK.

DDK для Windows 2000 и более ранних версий не включает компилятор; вместо этого вам нужно установить Visual C ++ отдельно для компиляции драйверов. Начиная с версии для Windows XP, DDK и более поздние версии WDK включают компилятор командной строки для компиляции драйверов. Одна из причин, по которой Microsoft указала для включения компилятора, было то, что качество драйверов улучшилось бы, если бы они были скомпилированы с той же версией компилятора, которая использовалась для компиляции самой Windows, в то время как Visual C ++ нацелен на разработку приложений и имеет другой цикл продукта. с более частыми изменениями. WDK 8.x и более поздние серии возвращаются к требованию установки согласованной версии Visual Studio отдельно, но на этот раз интеграция более полная: вы можете редактировать / строить / отлаживать драйвер напрямую из Visual Studio.

Версии DDK

Версия Номер сборки Дата выхода
Windows 3.0 DDK 1990
Windows 3.1 DDK 1992
Windows NT 3.1 DDK 1993
Windows NT 3.5 DDK 1994
Windows NT 3.51 DDK 1025.1 Июль 1995 г.
Windows 95 DDK Октябрь 1995 г.
Windows 95 DDK a Июнь 1996 г.
Windows 95 DDK b
Windows 95 DDK c (MSDN, июль 1998 г.) Июнь 1998 г.
Windows NT DDK (для Windows NT Workstation 3.51) Июль 1996 г.
Windows NT DDK (для Windows NT Workstation 4.0) 1381.1 Август 1996 г.
Windows 98 DDK Июль 1998 г.
Windows 98 SE DDK Май 1999 г.
Windows 2000 DDK 2195.1 Февраль 2000 г.
Комплект разработчика драйверов для Windows XP (DDK) 2600 21 сентября 2001 г.
Комплект разработчика драйверов Windows XP SP1 (DDK) 2600.1106 14 ноября 2002 г.
Windows Server 2003 DDK 3790 9 апреля 2003 г.
Windows Server 2003 с пакетом обновления 1 DDK 3790.1830 6 апреля 2005 г.

Примечание. Windows NT DDK, Windows 98 DDK и Windows 2000 DDK больше не доступны для загрузки Microsoft из-за соглашений, связанных с Java, сделанных Microsoft с Sun Microsystems.[1]

Версии WDK

Версия Номер сборки Дата выхода Разрабатывает драйверы для Интеграция с Visual Studio Примечания
Комплект драйверов Windows для Windows Vista 6000 29 ноября 2006 г. Виндоус виста
Комплект драйверов Windows — Server 2008 (x86, x64, ia64) 6001.18000 Январь 2008 г. Windows XP SP1 — Vista SP1, Windows Server 2000 SP4 — 2008
Комплект драйверов Windows — Server 2008 (x86, x64, ia64) 6001.18001 1 апреля 2008 г.
Комплект драйверов Windows — Server 2008 Release SP1 (x86, x64, i64) 6001.18002 8 декабря 2008 г. Windows XP SP1 — Vista SP1, Windows Server 2000 SP4 — 2008 SP1
Комплект драйверов Windows 7.0.0 7600.16385.0 6 августа 2009 г. Windows 7, Windows Server 2008 R2
Комплект драйверов для Windows 7.1.0 7600.16385.1 26 февраля 2010 г. Windows XP SP3 — 7, Windows Server 2003 SP1 — 2008 R2 [2]
Комплект драйверов Windows 8.0 8.59.25584 15 августа 2012 г. Windows 7 — 8, Windows Server 2008 R2 — 2012 Visual Studio 2012 Загрузки до 17.08.2012 содержали ошибку в совместной установке WDF[3]
Комплект драйверов Windows 8.1 8.100.26638 16 сентября 2013 г. Windows 7 — 8.1, Windows Server 2008 R2 — 2012 R2 Visual Studio 2013
Обновление комплекта драйверов Windows 8.1 8.100.26846 20 августа 2014 г. Windows 7 — обновление 8.1, Windows Server 2008 R2 — 2012 R2 Visual Studio 2013
Комплект драйверов Windows 10, версия 1507 10.0.26639 Июль 2015 г. Windows 7 SP1 — 10 Visual Studio 2015 RTM — Обновление 3
Комплект драйверов для Windows 10, версия 1511 10.0.10586 Ноябрь 2015 Windows 7 SP1 — 10 версии 1511 Visual Studio 2015 Обновление 1-3 Ноябрьское обновление Windows 10
Комплект драйверов Windows 10, версия 1607 10.0.14393 Август 2016 г. Windows 7 SP1 — 10 версии 1607 (кроме Win10 версии 1507 и 1511) Visual Studio 2015 Обновление 3 Юбилейное обновление Windows 10
Комплект драйверов Windows 10, версия 1703 10.0.15063 Апрель 2017 г. Windows 7 SP1 — 10 (только версии 1607 и 1703), Windows Server 2008 R2 — 2016 Visual Studio 2017 Версия 15.1 Обновление Windows 10 Creators Update
Комплект драйверов Windows 10, версия 1709 10.0.16299 Октябрь 2017 г. Visual Studio 2017 Версия 15.4 Обновление Windows 10 Fall Creators Update
Комплект драйверов Windows 10, версия 1803 10.0.17134 Апрель 2018 г. Обновление Windows 10 за апрель 2018 г.
Комплект драйверов Windows 10, версия 1809 10.0.17763 Октябрь 2018 г. Обновление Windows 10 за октябрь 2018 г.
Комплект драйверов Windows 10, версия 1903 10.0.18362.1 Апрель 2019 Windows 7 SP1 — 10 (версии от 1607 до 1903), Windows Server 2008 R2 SP1 — 2019 Visual Studio 2019 Версия 16 Обновление Windows 10 за май 2019 г.

Смотрите также

  • Модель драйвера Windows
  • Платформы драйверов Windows
  • Комплект логотипа Windows

Рекомендации

  1. ^ MSDN: продукты недоступны из-за мирового соглашения, связанного с Java
  2. ^ [1] Комплект драйверов Windows версии 7.1.0
  3. ^ Проблема со установщиком WDF

Время на прочтение16 мин

Количество просмотров22K

Системные программисты, в частности под ОС Windows практически лишены того объема информации, который доступен разработчикам высокоуровневых программ. Можно выделить три основных источника, позволяющих заполнить пробелы при разработке драйверов для Windows:

  1. Печатные издания.

  2. Официальная документация DDK от Microsoft.

  3. Open-source проекты.

Сложно поспорить с тем, что порог вхождения в область разработки драйверов достаточно высокий, однако желание погрузиться в это направление пропадает еще на этапе написания HelloWorld. Начинающему программисту сложно найти ответы на казалось бы банальные вопросы:

  1. Как запустить драйвер?

  2. Как понять, что драйвер работает?

  3. Как отлаживать драйвер?

В этой статье я постараюсь максимально подробно описать несколько (вообще их гораздо больше) способов установки и отладки драйвера, удобные по моему субъективному мнению, на примере реализации простого драйвера, выполняющего единственное действие — вывод при запуске отладочного сообщения «Hello from Windows kernel mode!!».

Предварительные условия

Разрабатывать драйвер я буду в Microsoft Visual Studio 2019 (на момент публикации Microsoft предлагает WDK для Visual Studio 2022, совместимый только с Windows 11, переходить на которую пока не планирую). Для разработки драйвера необходимо скачать установить пакет DDK с официального сайта Microsoft.

Microsoft предлагает несколько версий (соответствуют сборкам самой операционной системы), однако пакеты WDK для Windows 10 имеют обратную совместимость, то есть самая свежая версия WDK позволяет реализовать драйвер для младших сборок Windows. Однако, как обычно, есть один нюанс, касающийся настройки тестовой системы (об этом будет написано ниже), поэтому также стоит скачать пакет WDK для вашей тестовой системы. Посмотреть номер сборки можно утилитой winver, (Win+R -> winver -> Enter).

В моем случае самая свежая версия WDK — это WDK для Windows 10 версии 1903 (статья написана сильно раньше как пособие для студентов, на момент публикации доступна версия 2004) на виртуальную машину будет установлена Windows 10 build 1709, поэтому я также скачиваю (но не устанавливаю) WDK для Windows 10 версии 1709.

Для запуска и отладки драйвера будет использована виртуальная машина с ОС Windows 10 x64 на VMWare Workstation.

Для просмотра отладочных сообщений от драйвера используется утилита DbgView из пакета Sysinternals.

Создание проекта

Сначала предлагается реализовать сам драйвер. Так как по плану он должен обладать минимальным функционалом, то этот процесс займет небольшое количество времени.

Шаг 1. Запустить Microsoft Visual Studio.

Шаг 2. Приступить к созданию нового проекта KMDF Driver.

Нажать на кнопку создания нового проекта (Create a new project), в списке типов проекта выбрать KMDF Driver, Empty, нажать Next.

Окно создания нового проекта

Окно создания нового проекта

Шаг 3. Назначить имя проекта и его расположение.

Я назову проект HelloWorldDriver.

Настройки при создании проекта

Настройки при создании проекта

Шаг 4. Добавить файл исходного кода драйвера.

Добавить файл исходного кода Project->Add new Item->C++ File (.cpp). Дать название файлу, например, HelloWorldDriver.c

При вводе имени файла укажите расширение *.c. Visual Studio определяет целевой язык по расширению файла, таким образом исходный код, расположенный в файлах с расширением *.c воспринимается как код на языке Си.

Добавление файла в проект

Добавление файла в проект

Шаг 5. Написать исходный код драйвера.

Далее приведен исходный код нашего учебного драйвера с короткими комментариями.

Вообще говоря, исходный код несколько избыточен. Функция выгрузки драйвера не является обязательной, однако без нее драйвер будет считаться невыгружаемым, что существенно усложняет установку новой версии. Так, при возможности выгрузки драйвера для его обновления достаточно остановки, замены бинарного файла и запуска, тогда как для невыгружаемого драйвера придется перезагружать систему.

Также не является обязательным примение макроса UNREFERENCED_PARAMETER. По умолчанию (и это правильно) проекты типа Windows Driver компилируются с флагом /WX — Treat Warnings As Errors, что не позволяет скомпилировать драйвер даже с предупреждениями, одним из которых является C4100: unreferenced formal parameter —
неиспользуемый параметр
. Можно либо отключить этот флаг в настройках проекта Project->Properties->C/C++->General, параметр Threat Warnings As Errors, однако применение макроса более предпочтительно, так как заставляет разработчика в большей степени отдавать отчет своим действиям.

// Основной файл WDK
#include <ntddk.h>

// Объявление функции выгрузки драйвера
VOID DriverUnload(PDRIVER_OBJECT driverObject);

// Точка входа в драйвер (аналог функции main)
NTSTATUS DriverEntry(IN PDRIVER_OBJECT driverObject, IN PUNICODE_STRING registryPath)
{
  // Отметка параметра неиспользуемым
  UNREFERENCED_PARAMETER(registryPath);

  // Печать отладочного сообщения
  DbgPrint("Hello from Windows kernel mode!!");

  // Регистрация функции выгрузки драйвера
  driverObject->DriverUnload = DriverUnload;

  return STATUS_SUCCESS;
}

// Функция выгрузки драйвера
VOID DriverUnload(IN PDRIVER_OBJECT driverObject)
{
  // Отметка параметра неиспользуемым
  UNREFERENCED_PARAMETER(driverObject);
  // Вывод отладочного сообщения
  DbgPrint("Goodbye!");
}

Шаг 6. Собрать драйвер.

Теперь можно скомпилировать драйвер Build->Build Solution и посмотреть, какие файлы сгенерированы. Необходимо учитывать платформу тестовой системы и осуществлять сборку правильно. У меня в качестве тестовой системы будет 64-разрядная версия Windows, поэтому мне нужно изменить конфигурацию на x64.

Выбор платформы

Выбор платформы

В выходной директории (по умолчанию это $SolutionDir\x64\Debug) появились файлы. Краткое описание каждого из них:

  1. HelloWorldDriver.cer — сертификат.

    Каждый драйвер должен иметь цифровую подпись (начиная с 2017 года все драйверы должны быть подписаны самой Microsoft, обязательное условие — прохождение тестов WHQL), хотя в сегодняшнем примере сертификат не нужен совсем. Вопросы сертификации выходят за рамки данной статьи.

  2. HelloWorldDriver.inf — вспомогательный файл для установки драйвера с
    использованием Мастера установки Windows.

  3. HelloWorldDriver.pdb — отладочные символы.

  4. HelloWorldDriver.sys — сам драйвер.

Драйвер написан, собран и готов к установке на целевую систему.

Установка драйвера

Можно предложить два основных способа установки драйвера: с помощью мастера установки и вручную, с использованием утилиты SC (вообще говоря можно даже реализовать программу, которая используя функции OpenSCManager, CreateService, OpenService и другие из Windows API позволит управлять драйверами и службами). Однако мастер установки предполагает установку драйверов для устройств, а написанный драйвер таковым не являтеся, поэтому установка будет произведена с помощью утилиты SC.

Перед установкой драйвера (точнее перед первым запуском) необходимо включить тестовый режим, позволяющий устанавливать неподписанные драйверы. Сделать это можно выполнив в командной строке от имени администратора bcdedit /set testsigning ON, после чего необходимо перезагрузить систему. Хотя при сборке проекта был создан самоподписанный сертификат, ОС Windows 10 не позволит запустить драйвер, подписанный таким сертификатом (как было сказано выше, в новых версиях ОС драйвер должны иметь подпись от Microsoft).

Далее необходимо выполнить следующие действия:

Шаг 1. Скопировать файл HelloWorldDriver.sys на целевую систему.

Скопированный на целевую систему драйвер

Скопированный на целевую систему драйвер

Шаг 2. Открыть командную строку от имени администратора.

Командная строка

Командная строка

Шаг 3. Выполнить команду установки драйвера.

Для установки драйвера при помощи системной утилиты SC нужно исполнить команду SC CREATE <название_драйвера> binPath= <путь_до_sys_файла> type=kernel

Установка драйвера

Установка драйвера

Драйвер установлен, но не запущен. Информацию о текущем состоянии драйвера можно получить командой SC QUERY <название_драйвера>

Драйвер установлен и остановлен

Драйвер установлен и остановлен

Перед первым запуском предлагается запустить утилиту DbgView и убедиться, что драйвер действительно выводит отладочное сообщение. Утилиту необходимо запустить от имени администратора, а после запуска включить захват сообщения из ядра нажатием Capture->Capture Kernel и включить подробный режим вывода нажатием Capture->Enable Verbose Kernel Output. WDK предлагает расширенную версию функции отладочной печати — DbgPrintEx, которая позволяет задать уровень важности сообщения, это позволяет фильтровать сообщения с уровнем важности меньше заданной.

Утилита DbgView

Утилита DbgView

Запустить драйвер можно командой SC START <название_драйвера>, в окне DbgView должно появиться заданное в исходном коде сообщение.

Полученное от драйвера сообщение

Полученное от драйвера сообщение

Может случиться, что после запуска драйвера сообщение в DbgView не появится. В таком случае нужно попробовать перезагрузить систему. Скорее всего, настройки DbgView, касающиеся включения подробного режима, применяются не сразу.

Остановить драйвер можно командой SC STOP <название_драйвера>, а в DbgView снова появится отладочная строка.

Остановка драйвера

Остановка драйвера

Остановить драйвер позволила зарегистрированная «ненужная» функция DriverUnload. В качестве эксперимента можете удалить ее из исходного кода и попробовать повторить действия по запуску и остановке драйвера. Он запустится, но остановить его не получится.

Отладка драйвера

Очень сложно писать программы без ошибок, если это не «Hello world», конечно. Процесс разработки включает внесение ошибок в код, обнаружение наличия ошибок, поиск источников ошибок (конкретных мест в исходном коде) и их устранение. Сложно поспорить с тем, что самым трудоемким процессом из вышеперечисленных является именно поиск, потому как вносятся ошибки чаще всего прозрачно для программиста (то есть случайно), проявляют они себя тоже сами (или их обнаруживают тестировщики, а еще хуже — пользователи).

Отладка программы может осуществляться различными способами. Например, часть моих студентов в курсе, посвященному языку PHP, отлаживают программы путем вставки в определенные участки кода конструкций типа echo ("I'm here42") или print("Var1 = $var1"). Почему так? Ответ на этот вопрос во многом подтолкнул меня к созданию этой статьи. Всё дело в том, что для PHP подключение привычного отладчика (а студенты сначала изучали язык C++ в IDE, где вполне успешно использовали «коробочные» возможности установки точек остановки, пошагового исполнения, окон watch и memory) подразумевает выполнение некоторого обряда: загрузка дополнительной библиотеки для php (xdebug, например), редактирование php.ini, установка расширения в браузере. И это при том, что в сети достаточно источников, описывающих этот процесс. Материалов по отладке драйверов гораздо меньше.

Я выделяю два основных способа отладки драйвера для ОС Windows: нормальный, с помощью утилиты WinDbg, и удобный — средствами Visual Studio.

Подготовка виртуальной машины

Пошаговая отладка драйвера подразумевает остановку его выполнения. Однако в архитектуре на уровне ядра ОС Windows, грубо говоря, деление на различные драйверы достаточно условно, можно представить все ядро как одну программу, где различные компоненты (драйверы) — это библиотеки. Остановка в исполнении любого драйвера подразумевает остановку всей системы. Поэтому отладка должна производиться на удаленном компьютере (хотя методом вставки строк кода с конструкцией DbgPrint(«…») можно отлаживать и локально). Удобно заменить удаленный компьютер виртуальной машиной, как это и делается в подавляющем большинстве случаев.

Так как драйвер исполняется на удаленном компьютере, то связь с отладчиком осуществляется по физическому интерфейсу: COM, Ethernet, USB, FireWire. Наибольшую популярность получила отладка по COM-интерфейсу. Признаюсь, вообще не видел примеров с иными.

На виртуальную машину необходимо добавить последовательный интерфейс, выполнив следующую последовательность действий:

Шаг 1. Открыть настройки виртуальной машины.

Запустить VMWare, открыть настройки виртуальной машины (нажатием Edit virtual machine settings).

Главное окно VMWare

Главное окно VMWare

Шаг 2. Добавить последовательный интерфейс.

В окне настроек виртуальной машины нажать кнопку Add.

Окно настроек

Окно настроек

В появившемся окне выбрать Serial Port, нажать Finish.

Окно редактирования устройств

Окно редактирования устройств

Шаг 3. Настроить последовательный порт

Для добавленного последовательного порта задать следующие настройки: Connection: Use named pipe, в поле для ввода ввести имя канала: \\.\pipe\<pipename>, а в выпадающих списка выбрать соответственно This end is the server и The other end is an application.

Настройки последовательного порта

Настройки последовательного порта

Отладка с использованием WinDbg

Необходимо перевести тестовую систему в отладочный режим. Для этого нужно запустить ее и от имени администратора исполнить команду bcdedit /debug on, а также настроить тип отладки. В примере используется отладка по COM-порту, поэтому в командной строке необходимо выполнить команду bcdedit /dbgsettings serial debugport:2 (значение параметра debugport должно совпадать с номером последовательного порта в настроках виртуальной машины. Скорее всего это будет Serial Port 2). После перезагрузки системы активируется отладочный режим.

После активации режима отладки система может «зависать» при включении и выключении. Я так и не смог разобраться, в каких случаях это проиcходит, а в каких нет. Если при включении или выключении системы она «зависла», то достаточно просто запустить отладчик (об этом ниже) и загрузка продолжится.

WinDbg внешне выглядит не очень современно. Особенно это заметно на фоне привычной разработчикам программ для Windows среды Visual Studio. На момент написания статьи вышла в свет новая версия утилиты отладки — WinDbg Preview, однако она доступна только в Microsoft Store, а у меня Disable Windows Spying отключил возможность установки приложений из магазина. Хотя скриншоты на портале Microsoft выглядят многообещающе.

Скриншот новой версии отладчика WinDbg Preview

Скриншот новой версии отладчика WinDbg Preview
Стартовое окно классического WinDbg

Стартовое окно классического WinDbg

Теперь необходимо настроить WinDbg. Наиболее подробное описание WinDbg представлено на сайте Microsoft, мы же рассмотрим лишь основы. К основным настройкам WinDbg можно отнести следующие:

  1. Тип подключения к отлаживаемой системе, её адрес.

  2. Расположение исходных кодов отлаживаемых драйверов.

  3. Расположение символьной информации.

WinDbg позволяет задать все эти опции в виде аргументов командной строки, поэтому удобно (я делаю так) создать необходимое количество ярлыков исполняемого файла (сам исполняемый файл WinDbg имеет путь Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe), в свойствах ярлыка задать необходимые параметры:

  1. -k. Обозначает режим отладки ядра.

  2. com:port=\\.\pipe\Win10,pipe. Обозначает порт отладки (именование канала должно совпадать с тем, которое было указано в настройках виртуальной машины).

  3. -y srv*C:\ProgramData\Microsoft\Symbols*http://msdl.microsoft.com/download/symbols. Определяет расположение символьной информации. Если отладочные символы не найдены в локальном хранилище, то они будут загружены из указанного репозитория.

  4. -srcpath C:\dev. Определяет расположение файлов исходного кода (можно указывать не директорию конкретного проекта, а директории выше в иерархии).

  5. -WF Dark.WEW. Определяет файл с сохраненным рабочим пространством (WorkSpace). В рабочее пространство входит набор и расположение окно, шрифты, цвета шрифтов и фона. Мне показалось очень удобным однажды настроить WinDbg, а далее использовать эти настройки. За основу своего WorkSpace я взял найденную давно темную тему, далее удобно расположил окна, перенастроил некоторые шрифты.

Свойства ярлыка

Мне показались удобными такие расцветка и расположение окон:

Возможная настройка рабочего пространства

Возможная настройка рабочего пространства

Теперь давайте отладим драйвер. Для того, чтобы выполнение остановилось, необходимо добавить инструкцию int 3, в исходном коде драйвера это можно сделать, вставив макрос DbgBreakPoint();. Предлагается установить точку останова в первой строке функции DriverEntry и попытаться запустить драйвер. Нет большой разницы, когда запускать WinDbg. В определенные моменты выполнение инструкций прекращается, визуально система «зависает» в ожидании подключения отладчика. То есть можно сначала запустить драйвер, а только потом WinDbg, а можно и наоборот.

Я запустил WinDbg, после чего запустил драйвер. Отладчик подключился к тестовой системе, WinDbg автоматически загрузил исходный код драйвера.

Установленный breakpoint

Установленный breakpoint

WinDbg позволяет производить привычные действия отладки: шаг с заходом, шаг без захода, исполнение до курсора, а также предоставляет возможность наблюдать за участком памяти, значениями регистров.

Отладка средствами Visual Studio

В новых версиях Visual Studio (начиная с 2013) также появилась возможность отладки драйверов. Кроме непосредственно отладчика Visual Studio предлагает широкие возможности по установке драйвера на удаленную систему, что позволяет производить отладку драйвера практически идентично отладке обычной программы (Сборка->расстановка точек останова->запуск отладки).

Для использования функций Visual Studio также необходимо обеспечить отладочное соединение с тестовой системой, в нашем случае это COM-порт, остальные действия не требуются (включать тестовый и отладочный режимы не нужно). Visual Studio позволяет автоматически настроить удаленную систему. Для этого на тестовую систему нужно установить пакет WDK Test Target Setup, который находится в директории %Program Files (x86)%\Windows Kits\10\Remote\%Платформа%. Этот .msi файл нужно скопировать на тестовую систему и установить.

Теперь пошагово сконфигурируем тестовую систему.

Шаг 1. Запустить Visual Studio.

Окно Visual Studio

Окно Visual Studio

Шаг 2. Открыть конфигуратор тестовых устройств.

Открыть конфигуратор тестовых устройств можно нажатием кнопки меню Extensions->Driver->Test->Configure Devices.

Запуск конфигуратора устройств

Запуск конфигуратора устройств

Шаг 3. Добавить и сконфигурировать тестовое устройство.

В первую очередь необходимо открыть окно конфигуратора нажатием кнопки Add New Device.

Окно конфигуратора устройств

Окно конфигуратора устройств

В окне ввести отображаемое имя тестовой системы, сетевое имя (можно ввести просто IP-адрес, либо включить сетевое обнаружение на тестовой системе), в Provisioning Options выбрать пункт Provision device and choose debugger settings, нажать Next.

Окно конфигуратора устройств

Окно конфигуратора устройств

В следующем окне раскрыть вкладку Windows Debugger — Kernel Mode и настроить опции:

  1. Connection Type: Serial

  2. Baud Rate: 115200

  3. Pipe: Checked (отметить)

  4. Reconnect: Checked (отметить)

  5. Pipe name: \\.\pipe\Win10

  6. Target Port: com2 (или иной, должен совпадать с номером в настройках
    виртуальной машины)

Нажать Next.

Настройка отладчика

Настройка отладчика

Подождать выполнения настройки системы. В виртуальной машине вы можете наблюдать процессы создания нового пользователя, установку пакетов, выполнение скриптов. Это нормально. По окончании настройки виртуальная машина будет перегружена, а в Visual Studio появится сообщение об окончании настройки. В моем случае возникла одна ошибка при создании точки восстановления системы. Это можно проигнорировать. Нажать Finish.

Процесс настройки тестовой системы

Процесс настройки тестовой системы

Настройка тестовой системы почти закончена. На нее установлены средства TAEF — Test Authoring and Execution Framework и WDTF — Windows Driver Test Framework, позволяющие Visual Studio автоматически удалять старую версию драйвера, устанавливать новую, а также проводить автоматическое тестирование (вопрос автоматических тестов выходит за рамки данного материала).

ВНИМАНИЕ!!! В самом начале статьи я рекомендовал выяснить версию Windows на тестовой машине. Если она совпадает с версией установленного пакета WDK, то данный абзац можно не читать. WDK имеет обратную совместимость, то есть установленная WDK 1903 позволяет разрабатывать драйверы для предыдущих сборок (можно найти этот параметр в свойствах проекта, хотя я не сталкивался с ситуацией, когда драйвер не работает на некоторой сборке), однако пакет WDK — это не только набор заголовочных файлов, расширение для Visual Studio, но еще и набор вспомогательных утилит для отладки (тот же WinDbg) и тестирования. В том числе в пакет WDK входит и названный выше WDTF. И он обратной совместимости не имеет (или, возможно, не имеет для некоторых сборок). Для проверки наличия WDTF необходимо проверить на тестовой системе содержимое директории C:\Program Files (x86)\Windows Kits\10\Testing\Runtimes. Если там содержатся поддиректории TAEF и WDTF, то все в порядке, а если только TAEF, как в моем случае, то нужно отдельно установить WDTF из пакета WDK версии, совпадающей с версией тестовой системы (напомню, у меня это Windows 10 1709). На тестовую систему из директории WDK\Installers необходимо скопировать файл Windows Driver Testing Framework (WDTF) Runtime Libraries соответствующей разрядности и попытаться установить его командой msiexec /i «Windows Driver Testing Framework ….». Установщик выдаст ошибку отсутсвия .cab файла. Найдите соответствующий файл в той же директории Installers, скопируйте на тестовую машину и повторите установку. Рядом с директорией TAEF должна появиться WDTF.

Тестовая система готова к загрузке и отладке драйвера. Visual Studio предлагает различные варианты установки (Deploy) драйвера на тестовую систему, настройки доступны в свойствах проекта во вкладке Driver Install->Deployment. В первую очередь нужно выбрать тестовую машину из выпадающего списка. Выше она уже была сконфигурирована и теперь доступна.

Настройки установки драйвера

Настройки установки драйвера

Подробно с различными вариантами можно ознакомиться на портале Microsoft. Мне показались наиболее понятными два из них: Install/Reinstall and Verify и Custom Command Line. Стоит отметить, что не совсем корректно работают точки остановки. Даже при их установке выполнение не прерывается. Нужно вставить как минимум одну конструкцию DbgBreakPoint(); (я это делаю первой же строкой функции DriverEntry), дальше отладку можно производить привычным для пользователя Visual Studio образом, пошаговая отладка нормально работает, установленные точки остановки тоже.

При опции Install/Reinstall and Verify драйвер будет установлен (переустановлен) и запущен, однако система будет перезагружена (это долго), а драйвер будет установлен с опцией старта при запуске системы. Для большинства случаев это не должно быть проблемой, однако если для вас важен момент запуска драйвера, то этот способ не подходит. Я устанавливаю конструкцию прерывания в первой строке DriverEntry, а также устанавливаю точку остановки на строке с выводом отладочного сообщения и возвратом из функции и нажимаю привычное F5.

Готовность к отладке

Готовность к отладке

На виртуальной машине можно увидеть исполнение скриптов. Также могут появляться сообщения об ошибках, однако даже с некоторыми ошибками все работает. В моем случае по неизвестным мне причинам установка драйвера не всегда удается с первого раза (в Visual Studio вы увидите сообщение о том, что программа завершила работу с ненулевым кодом). Но со второй-третьей попытки все начинает работать. После исполнения скриптом система перезагрузится, драйвер начнет загружаться, исполнение остановится на конструкции DbgBreakPoint();. Отладчик Visual Studio должен подключиться к виртуальной машине, отобразить в окне с исходным кодом текущую строку и нормальным образом реагировать на пошаговое исполнение, показывать значения переменных, отображать содержимое памяти, и, что важно, останавливаться на установленных средствами Visual Studio точках остановки.

Окно Debugger Immediate Window точно такое же, как и в WinDbg. Точнее говоря, это одно и то же. Поэтому Visual Studio через него поддерживает все команды WinDbg, а среди них много полезных.

Подключенный отладчик

Подключенный отладчик
Содержимое окон Locals и memory

Содержимое окон Locals и memory

Еще один способ установки драйвера, который я использую — это Custom Command Line. Можно создать простой bat-скрипт, содержащий команды по установке и запуску драйвера. Visual Stuio позволяет указать дополнительные файлы, которые нужно скопировать на тестовую систему, однако эта функция не работает. Поэтому создаем файл createandstart.bat на диске C, который содержит две строки: SC CREATE HelloWorldDriver binPath= C:\DriverTest\Drivers\HelloWorldDriver.sys type=kernel и SC START HelloWorldDriver

Скрипт установки и запуска

Скрипт установки и запуска

А в поле ввода под опцией Custom Command Line указать C:\createandstart.bat

Настрока установки

Настрока установки

При нажатии F5 драйвер установится, запустится и Visual Studio укажет на строку с вызовом макроса DbgBreakPoint();

Простая отладка средствами Visual Studio

Однако все возможности Visual Studio Deployment раскрываются при создании тестов. Для простой отладки все это лишнее, поэтому, возможно, будет гораздо проще настроить тестовую систему для отладки самостоятельно (утилитой bcdedit), далее вручную запускать драйвер, а отлаживать его средствами Visual Studio. Такой подход представляет собой что-то среднее между рассмотренными выше. Для подготовки к отладке необходимо выполнить следующие шаги:

Шаг 1. Подготовить виртуальную машину.

На виртуальной машине нужно включить тестовый и отладочный режимы, а также установть драйвер командой SC CREATE.

Шаг 2. Сконфигурировать Visual Studio.

В Visual Studio открыть конфигуратор тестовых устройств, однако на первом шаге выбрать вариант Manual configure debuggers and do not provision, нажать Next, в следующем окне настроить все идентично, как на рисунке.

Ручная настройка

Ручная настройка
Настройка отладчика

Настройка отладчика

Теперь на тестовой системе можно запустить драйвер командой SC START. Выполнение драйвера остановится на строке DbgBreakPoint();, а виртуальная машина будет ожидать подключения отладчика. В Visual Studio нужно нажать Debug->Attach To Process, в появившемся окне в поле Connection type выбрать Windows Kernel Mode Debugger, в поле Connection target — имя настроенной выше тестовой машины, нажать Attach.

Подключение отладчика к процессу

Подключение отладчика к процессу

Очень вероятно, что вы получите ошибку Frame is not in module:

Несоответствие драйвера исходному коду

Несоответствие драйвера исходному коду

Введите в поле ввода окна Debugger Immediate Window команду .reload и переключитесь на файл с исходным кодом. Если и это не помогло, скорее всего, вы что-то изменили в исходном коде, скомпилировали, но забыли скопировать новую версию драйвера. Пересоберите (для надежности) проект, скопируйте его на тестовую машину, запустите драйвер, подключие отладчик снова.

Я считаю этот способ самым удобным при отладке драйвера. Он позволяет использовать более комфортную и привычную Visual Studio, при этом не тратить целые минуты на установку новой версии драйвера на тестовую систему.

Заключение

Разработка драйверов для ОС Windows — достаточно увлекательный процесс. Реализация даже мелких и простых драйверов позволяет глубже понять внутреннее устройство Windows, что весьма полезно. Однако начинающих системных программистов отпугивает не столько сложность написания непосредственно кода (как минимум, есть множество примеров), сколько сложность установки и отладки. Надеюсь, что данный материал поможет кому-то не потерять интерес в первом же проекте.

Upd

В комментариях были выражены опасения, что инструкция по установке драйвера некорректная в части отключения подписи драйверов. В результате эксперимента установлено, что все нормально и работает ровно так, как описано. Также попутно выяснилось, что можно смело качать последнюю версию WDK (для 22H2) и SDK (если у вас Windows 10, а не Windows 11) и тогда разработку можно вести в Visual Studio 2022.

Introduction

The Windows operating system has evolved significantly over the years, and with the arrival of Windows 11, Microsoft has introduced new functionalities and enhancements aimed at developers and end-users alike. One crucial aspect of this evolution is the Windows Driver Development Kit (DDK), which plays a pivotal role in creating drivers for hardware that interfaces with the Windows 11 environment. This article provides a comprehensive overview of the Windows 11 Driver Development Kit, discussing its components, functionality, best practices, and the broader context in which driver development operates.

What is a Driver?

At its core, a driver is a piece of software that enables communication between the operating system and hardware components. Drivers act as translators, converting high-level commands from the OS into instructions that the hardware can understand. Without drivers, the kernel wouldn’t be able to interact with peripherals like printers, graphics cards, and storage devices effectively.

What is the Windows Driver Development Kit (DDK)?

Microsoft’s Driver Development Kit is a set of tools and documentation that developers use to create, test, and publish drivers for Windows. The DDK comprises various components, including libraries, headers, sample code, and utilities that make it easier for developers to write high-quality drivers that comply with Windows requirements. With the release of Windows 11, Microsoft has updated the DDK to accommodate new functionalities, performance optimizations, and system requirements.

Key Components of the Windows DDK

  1. Driver Frameworks: Windows DDK supports two primary frameworks for driver development: the Kernel-Mode Driver Framework (KMDF) and the User-Mode Driver Framework (UMDF). KMDF is designed for writing kernel-mode drivers, while UMDF is more suitable for user-mode drivers, often used for simpler devices.

  2. Development Tools: The DDK includes powerful development tools such as Visual Studio, Windows SDK, and Windows Performance Toolkit. Visual Studio integration allows for seamless coding, testing, and debugging of drivers within an environment familiar to many developers.

  3. Documentation: Comprehensive documentation is provided to guide developers through the entire driver development process. This includes API references, best practices, design guides, and troubleshooting tips.

  4. Sample Code: The DDK provides several sample drivers that developers can use as starting points for their own projects. These samples illustrate various concepts, such as power management, Plug and Play (PnP) functionality, and handling interrupts.

  5. Testing Tools: The Kit includes testing tools that support various aspects of driver validation, including static code analysis, performance measurement, and compatibility testing. These tools help ensure that drivers meet Microsoft’s quality standards.

New Features in Windows 11 DDK

Microsoft has introduced several enhancements in the Windows 11 DDK, aimed at improving performance, security, and developer experience. Some notable features include:

Improved Security Features

Windows 11 emphasizes security, and the DDK reflects this trend. Developers are encouraged to implement secure coding practices, with additional support for features like Device Guard and virtualization-based security (VBS). These mechanisms help protect systems from malware and unauthorized access, making it crucial for drivers to integrate with these features.

Enhanced User Experience

The DDK supports new UI features that improve user interaction with device settings. For instance, through Windows 11, developers can create richer experiences using WinUI, allowing for a more modern look and feel for device settings and notifications.

Performance Optimizations

Performance remains a priority in Windows 11, and the driver architecture has been optimized for multi-core processors. The Windows DDK provides tools to analyze and optimize driver performance, ensuring that devices function smoothly and efficiently.

Expanded Hardware Support

Windows 11 introduces support for a broader range of hardware. The DDK offers an array of APIs and libraries to facilitate the integration of new devices, such as advanced graphics and artificial intelligence-based peripherals.

Getting Started: Setting Up Your Development Environment

Before diving into driver development, it is essential to set up a suitable development environment. Here’s a step-by-step guide on how to do this:

1. Install the Required Software

To begin, download and install the following:

  • Visual Studio: Ensure that you have the latest version of Visual Studio Community or a higher edition. Make sure to include the «Desktop development with C++» workload.
  • Windows Driver Kit (WDK): Download the Windows 11 Driver Kit from the official Microsoft link. The WDK provides all the libraries, headers, and tools you need for driver development.
  • Windows SDK: Although this usually comes bundled with the WDK, ensure that you also have the right version of the Windows SDK that corresponds with Windows 11.

2. Configure Your Environment

Once installed, configure Visual Studio to recognize the WDK and SDK. This step typically involves setting the include paths for the WDK and ensuring that Visual Studio can access the necessary libraries and sample code.

3. Create a Sample Driver

Start with a sample driver provided in the WDK. Load the sample into Visual Studio, compile it, and inspect the code. Understanding working samples will help you grasp critical concepts before embarking on writing your own driver.

Developing Your Driver

Given the complexities involved in driver development, following a structured approach is beneficial. Here are crucial steps to guide you through the development process:

1. Deciding on the Driver Type

Identify whether you are writing a kernel-mode driver or a user-mode driver. Kernel-mode drivers have direct access to hardware and system resources, while user-mode drivers interact with hardware through system libraries. Each type has specific use-case scenarios and performance considerations.

2. Designing Your Driver

Conduct thorough research to define the requirements and architecture of your driver. Consider the hardware specifications, compatibility needs, and any performance constraints.

  • Define the API: Develop a clear application programming interface (API) that facilitates communication between your driver and user applications.
  • Plan Driver States: Outline the different states your driver will support, such as initialization, operation, and shutdown.

3. Implementing Driver Functionality

Use the driver frameworks (KMDF/UMDF) to write your driver. Adhere to the coding conventions and best practices outlined in the DDK documentation.

  • Power Management: Implement power management features to ensure your driver can properly handle various power states.
  • Error Handling: Develop robust error handling to deal with potential hardware failures or resource limitations gracefully.

4. Testing Your Driver

Testing is a critical phase in driver development. The WDK provides tools for:

  • Static Code Analysis: Identify potential bugs, security vulnerabilities, and compliance issues using built-in code analysis tools.
  • Driver Verifier: Use the Driver Verifier tool to simulate various stress conditions and test how your driver performs under such scenarios.
  • Functional Tests: Conduct thorough functional tests to ensure that your driver interacts correctly with the hardware and the operating system.

5. Debugging

Effective debugging can make or break your driver development experience. Utilize the integrated debugging tools in Visual Studio and the kernel debugging options provided in the DDK.

  • Kernel Debugging: This allows you to track down hard-to-find issues that occur in kernel mode.
  • User-Mode Debugging: If developing a user-mode driver, use Visual Studio’s debugging tools to step through your driver code and inspect variable states.

Publishing and Certification of Drivers

Once your driver is developed and tested, the next step involves publishing and certification. Here’s what you need to consider:

1. Certification Requirements

Microsoft requires drivers to meet specific certification standards before they can be published through the Windows Update service. The testing requirements include:

  • Functionality Tests: Ensuring the driver operates correctly under various conditions.
  • Compatibility Tests: Verifying that the driver is compatible with multiple hardware and software configurations.
  • Performance Tests: Ensuring that the driver meets performance standards set by Microsoft.

2. Signing Your Driver

All drivers must be digitally signed with a certificate issued by a trusted Certificate Authority (CA). This step is crucial for ensuring driver authenticity and maintaining the security of the Windows ecosystem.

3. Submitting to Windows Hardware Dev Center Dashboard (WHDC)

For successful publication, developers must submit their signed drivers to the Windows Hardware Dev Center. This process includes filling out forms for driver metadata, submitting the driver package, and approval by Microsoft.

4. Distribution

Once published, drivers can be distributed:

  • Via Windows Update, making it easy for users to install updates seamlessly.
  • Through OEM partners or manufacturers, allowing end-users to install drivers bundled with hardware.

Best Practices for Driver Development

Adhering to best practices ensures high-quality and robust driver development. Here are some tips:

  1. Code Quality: Maintain clean, understandable code. Use comments and consistent naming conventions to enhance readability.

  2. Regular Testing: Conduct continuous integration testing during the development process to catch errors early.

  3. Documentation: Maintain comprehensive documentation for your driver. Include API references, usage examples, and troubleshooting guides.

  4. Engage with the Community: Participate in forums, user groups, and communities focused on driver development. Sharing experiences and solutions can lead to valuable insights.

  5. Stay Updated: Keep up with the latest developments in the Windows ecosystem. Follow updates from Microsoft regarding policy changes, new features, and best practices.

Conclusion

The Windows 11 Driver Development Kit offers an extensive platform for creating drivers tailored for the latest iteration of Microsoft’s operating system. With enhanced features, optimized performance, and robust security measures, developers are positioned to develop high-quality drivers that seamlessly integrate with Windows 11.

By understanding the intricacies of the DDK and following best practices throughout the development lifecycle, you can ensure that your drivers not only function as intended but also provide a secure and efficient user experience. Embrace the challenge of driver development, and you may contribute significantly to the rapidly evolving ecosystem of modern computing. Whether you are a novice programmer or a seasoned developer, the opportunities the Windows 11 DDK provides are immense, paving the way for innovation in hardware-software interaction.

  • Home
  • Knowledge Base
  • What Is Windows Driver Kit and How to Install It on Windows 10

By Daisy | Follow |
Last Updated

This post focuses on Windows Driver Kit. You can know what it is and how to download and install it on Windows. Besides, you can know the system requirements of the Windows Driver Kit. Now, keep on your reading to get more details.

What Is Windows Driver Kit

What is Windows Driver Kit? It is a fully integrated driver development system, which includes a Windows Driver Device Kit, used to test the reliability and stability of Windows drivers. If you want to get more information about Windows, you can go to the MiniTool official website.

History of Windows Driver Kit

Previously, the Windows Driver Kit was called the Windows Driver Development Kit and supported the development of the Windows Driver Model.

When Microsoft released Windows Vista and added the following previously separated tools to the toolkit, it had the current name: Installable File System Toolkit (IFS Toolkit), Driver Test Manager (DTM), although DTM subsequently Was renamed and removed from the WDK again.

Windows 2000 and earlier versions of the DDK do not include a compiler; instead, you need to install Visual C++ separately to compile the driver. Starting from the Windows XP version, the DDK and later versions of the Windows Driver Kit include a command-line compiler for compiling drivers.

One of the reasons given by Microsoft to include the compiler is that if you use the same compiler version as Windows itself to compile, and Visual C++ is aimed at application development and has a different product cycle, you can improve the quality of the driver.

Change more frequently. Windows Driver Kit 8.x and later versions go back to requiring the installation of a matching version of Visual Studio respectively, but this time the integration is more complete, and you can directly edit/build/debug the driver in Visual Studio.

System Requirements of Windows Driver Kit

You can run the Windows 10, version 2004 WDK on Windows 7 and later, and use it to develop drivers for these operating systems:

Client OS

  • Windows 10
  • Windows 8.1
  • Windows 8
  • Windows 7

Server OS

  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2 SP1

How to Download & Install Windows Driver Kit

Now, let’s see how to download & install Windows Driver Kit on Windows 10.

Step 1: Install Visual Studio 2019

Windows Driver Kit requires Visual Studio. When installing Visual Studio 2019, choose desktop development with a C++ workload. The Windows 10 Software Development Kit (SDK) will be automatically included and displayed in the Summary pane on the right.

Please note that the SDK that is compatible with the Windows 10 WDK may not be the default SDK. To choose the correct SDK, do the following:

On the Single Component tab of Visual Studio Installer, search for Windows 10 SDK (10.0.19041.0), select this version and continue the installation. Please note that Visual Studio will automatically install the Windows 10 SDK (10.0.19041.1) on your computer.

If you have already installed Visual Studio 2019, you can use the Modify button in the Visual Studio installation to install the Windows 10 SDK (10.0.19041.1).

The WDK has the Spectre mitigation feature enabled by default, but the Spectre mitigation library needs to be installed for each architecture to be developed for Visual Studio. In addition, developing drivers for ARM/ARM64 also requires that the build tools for these architectures can also be installed with Visual Studio. To find these items, you will need to know the latest version of MSVC installed on your system.

To find the latest version of MSVC installed on your system, go to the workload page in the Visual Studio installer, in the right pane under the installation details, expand Desktop Development with C++ and find MSVC v142-VS 2019 C++ x64/x86 build tools (V14.xx)-Please note that xx should be the highest version available.

With this information (v14.xx), go to the various parts and search for v14.xx. This will return the toolset for all architectures, including the Spectre mitigation library. Select the driver architecture to be developed.

Step 2: Install the updated Windows SDK for Windows 10

Step 3: Install Refreshed WDK for Windows 10

Final Words

To sum up, here is all the information on Windows Driver Kit. You can know what it is and the Windows Driver Kit download. Besides, you can find the steps of installing it on Windows 10.

About The Author

Position: Columnist

Having been an editor at MiniTool since graduating college as an English major, Daisy specializes in writing about data backups, disk cloning, and file syncing as well as general computer knowledge and issues. In her free time, Daisy enjoys running and going with friends to the amusement park.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows server 2008 standard enterprise datacenter web
  • Windows 10 shortcut icon
  • Создать флешку для установки windows 11 с официального сайта microsoft
  • Как сменить картинку при загрузке windows 11
  • Net exe stop windows search