В.П. Солдатов: Программирование драйверов Windows
Книга посвящена разработке собственных драйверов для семейства операционных систем Microsoft Windows NT 5.x, в которое входят такие известные операционные системы, как: Windows 2000, Windows Server 2003, Windows XP.
Автор старался в своей книге отразить наиболее широко и полно основные сведения, которые помогут разработчикам самостоятельно создавать драйверы.
Из книги читатель познакомиться с тем:
- Что такое драйверы и для чего они нужны
- С помощью каких программных средств происходит разработка драйверов
- Как создать простейший драйвер для Windows
- В чем состоят особенности архитектуры Windows NT
- В чем заключаются аппаратные тонкости при создании драйверов
- Каковы основные приемы программирования в режиме ядра
- Что такое драйверная модель WDM
- В чем заключается специфика создания программных потоков в режиме ядра
- Как происходит инсталяция драйверов при помощи INF-файлов
Книга рассчитана на профессиональных разработчиков, умеющих программировать на Си, и имеющих представление о многопоточности.
Издание: Второе
Издательство: Бином
Год издания: 2004
Скачано: 8606 раз
Скачать книгу
Комментарии
Леон, 31.07.2013 15:09
наконец то,какой-то лучик света
Дмитрий, 16.01.2018 16:34
Форумы Modlabs.net: Программирование драйверов устройств для чайников — Форумы Modlabs.net
- Форумы Modlabs.net
- >Тематические форумы
- >Программное обеспечение
- >Программы
- Просмотр новых публикаций
Программирование драйверов устройств для чайников
#1
dE fENDER
- Member
- Группа: Пользователи
- Сообщений: 271
- Регистрация: 18 Декабрь 08
#2
dE fENDER
- Member
- Группа: Пользователи
- Сообщений: 271
- Регистрация: 18 Декабрь 08
В этой теме я планирую дать серию уроков, которые позволят любому человеку получить базовое представление о том, как устроена система взаимодействия прикладного ПО и драйверов ОС Windows, научиться читать исходные коды существующих драйверов устройств или написать свой собственный драйвер, работающий с его собственным устройством.
Также эти уроки могут помочь аудитории владельцев видеокарт с графическими чипами, произведенными компанией 3dfx, разобраться в доступных исходных кодах драйверов этих видеокарт. Упомянутые исходники могут быть с наименьшим количеством переделок откомпилированы под Windows XP/Windows 2003 Server, которые и будут являться основной целевой системой. В более современной Windows Vista/7 несколько изменилась модель драйверов, наиболее сильно это затронуло графическую подсистему. Это означает, что для их корректной работы придется переписать весьма значительную часть кода. Кроме того, под х64 версиями Vista/7 и более старших операционных систем просто так нельзя загрузить драйвер, не имеющей цифровой подписи. Подпись стоит порядка 500 долларов в год (150, если найти купон на скидку), их не любят давать частным лицам и даже небольшим организациям. Кроме того, если в подписанном драйвере обнаружится уязвимость и ей воспользуются хакеры – то подпись данного [почти всегда юридического] лица аннулируется и у него возникают проблемы с получением новой. Еще есть такая процедура, как WHQL-сертификация, но ее я вообще не собираюсь пока здесь обсуждать.
Весьма приветствуется, если другие люди будут давать здесь свои собственные уроки, не выходящие за пределы темы. Также здесь можно задавать любые вопросы, предлагать свои идеи для следующих уроков и отписываться об своих удачных/неудачных результатах.
Для начала работы требуется иметь некоторое знакомство с любым языком программирования. Думаю, для этого вполне достаточно школьного / вузовского курса для непрограммистов. Если же в современных программах образования знакомство с программированием не было предусмотрено/за давностью лет курс забыт или просто что-то непонятно – отписывайтесь в теме, я напишу другие уроки, подробней раскрывающие непонятную тему.
#3
White
- Белый человер
- Группа: Главный Администратор
- Сообщений: 11 903
- Регистрация: 16 Июль 05
#4
dE fENDER
- Member
- Группа: Пользователи
- Сообщений: 271
- Регистрация: 18 Декабрь 08
Урок 0. Установка и настройка программного обеспечения
Список используемого программного обеспечения:
- Windows XР или Windows 2003 Server х86 – операционная система, под которую будем писать драйверы;
- Visual Studio 2010 – среда разработки приложений на языках С/С++ и других. Будет использоваться для написания различных простых прикладных программ, в т.ч. и управляющей программы драйвера. Можно попробовать воспользоваться Visual Studio 11 beta, которая доступна для скачивания по ссылке — http://www.microsoft. studio/11/en-us;
- Windows Driver Kit – набор инструментов, необходимых для разработки драйвера. Включает в себя компилятор, заголовочные файлы и много другого. Требуется версия 7.1.0, ее можно взять по ссылке
http://www.microsoft. ang=en&id=11800; - VMWare – при отсутствии физической машины операционную систему можно запустить в виртуальной. Это также безопаснее при разработке — при ошибке в драйвере система уйдет в синий экран;
- Daemon Tools – средство для открытия образов CD и DVD дисков в формате iso. WDK распространяется в виде такого образа. В случае использования VMWare использовать не обязательно, т.к. VMWare умеет монтировать такие образы самостоятельно. Бесплатную lite-версию можно скачать здесь: http://www.disc-tool. download/daemon
- DebugView – утилита Марка Руссиновича, которая позволяет увидеть текстовые сообщения, выдаваемые драйверами, собранными в отладочном режиме. Скачивать здесь — http://technet.micro. ernals/bb896647
- Far Manager – файловый менеджер, с которым легче работать с консольными утилитами. Взять можно здесь — http://www.farmanage. wnload.php?l=ru.
Все используемое мною программное обеспечение – на английском языке. В большинстве случаев можно использовать и русские версии, но может возникнуть путаница в командах или другие проблемы с совместимостью. Для начала работы потребуется компьютер с установленной обычной 32-разрядной Windows XP/2003. Продвинутые пользователи могут пользоваться необычной – отладочной, она же — checked build. Эта версия показывает больше информации при отладке устройств. Обычная же версия Windows носит название free build. Компьютер для экспериментов может быть как реальным, так и виртуальным. Разрабатываемые программы я буду проверять на одной реальной машине и одной виртуальной. На обоих установлен Windows Server 2003 R2 Enterprise Edition c SP2. Виртуальная машина запущена под VMWare Workstation 8.0.2.
Установка Visual Studio
Я буду использовать Visual Studio 2010 Ultimate. В принципе, ставить ее не обязательно, так как все необходимые инструменты, включая компилятор и заголовки есть и в WDK. Но для написания прикладных программ, в особенности для новичка, она намного удобней вызова компилятора из консоли. Если ее все же планируется установить, то лучше делать это перед установкой WDK.
Берем диск со студией в iso-формате, монтируем его в Daemon Tools, либо подключаем как компакт-дисковод в VMWare. Запускаем с диска setup.exe, выбираем «Install Microsoft Visual Studio 2010». На следующем шаге под Windows 2003 может появится сообщение, что требуется Windows Imaging Component. Щелкаем по этой строке, запускается браузер – скачиваем подходящий по языку операционной системы (у меня английский, значит wic_x86_enu.exe), устанавливаем. Заново запускаем setup.exe с диска. Нажимаем Next, соглашаемся с лицензионным соглашением, затем идет выбор типа установки. Выбираем Custom, изменяем путь установки – для избежания ошибок Visual Studio и все любые другие инструменты следует ставить по максимально короткому пути без русских букв и пробелов. Мой вариант – C:\Programs\VS10. Следующая страница – выбор пакетов. Устанавливаем в соответствии с рисунком:
Рис 0.1 – Выбор пакетов в установщике Visual Studio
Кроме показанных, можно также выбрать «Visual C#». C# бывает полезен для расширения возможностей самой Visual Studio и написания небольших утилит. Нажимаем Install. Кроме самой студии ставится куча бесполезной, ненужной и вредной дряни. Если на компьютере была старая версия Windows Installer’а – потребуется перезагрузка. После установки – Finish, Exit.
Установка WDK
Монтируем скачанный iso-образ аналогично тому, как это было сделано с Visual Studio. Запускаем KitSetup.exe, на этапе выбора пакетов устанавливаем галочки в соответствии с рисунком:
Рис 0.2 – Выбор пакетов в установщике WDK
Нажимаем Ок, укорачиваем путь установки до C:\WinDDK, может появится окно установки .net 2.0. Устанавливаем .net. Появляется окно с лицензией WDK, соглашаемся. Ждем завершения установки. Нажимаем Finish. Установочный диск WDK не удаляем, а сохраняем до лучших времен, предыдущую версию 7.0 невозможно было корректно удалить без образа именно того диска, с которого ее устанавливали.
Устанавливать Visual Studio и WDK не обязательно на той же машине, на которой планируется проверять работу программ. Для проверки я поставил их на реальной машине с Windows 7 х64 и откомпилировал драйвер, который заработал под Windows 2003 Server х86.
Создаем на диске каталог для проектов, учитывая вышеописанные рекомендации (без пробелов и русских букв), например C:\Projects. Запускаем Visual Studio, открываем настройки (меню Tools/Option), выбираем в дереве «Projects and Solutions/General», в параметре Projects location выбираем/указываем созданный каталог.
Также настоятельно рекомендую установить Far Manager 2 и работать через него. Его преимущество над Windows/Total Commander’ами и Explorer’ами в том, что через него нормально видно содержимое консоли (команда ctrl + O), куда выдается полезная информация при компиляции и запуске консольных программ. Путь установки желательно записать в переменную PATH.
В дальнейшем рассмотрим и драйверы для Windows 9x. Для этого потребуется другое программное обеспечение, но программирование драйверов для Windows 9x проще.
Документация и загрузки для разработчика драйверов
Документация и загрузки для разработчика драйверов
Windows Internals, Part 1 (6th Edition)
ISBN-10: 0735648735 | ISBN-13: 978-0735648739
http://www.amazon.com/Windows-. 0735648735
Windows Internals, Part 2 (6th Edition)
ISBN-10: 0735665877 | ISBN-13: 978-0735665873
http://www.amazon.com/Windows-. y_b_text_y
Шестое издание популярной серии «Внутреннее устройство Microsoft Windows».
Первый том переведен на русский язык, если кто не в курсе.
Это, фактически, настольное руководство по операционной системе Windows, с
картинками, выкладками и наглядными экспериментами. Если вы считаете себя
системным программистом, но до сих пор не прочитали эту книгу, то вы
многое потеряли.
Пакет системных утилит от Руссиновича, одного из авторов «Internals» и
очень уважаемого человека.
«Использование Microsoft Windows Driver Model» (Уолтер Они).
ISBN 978-5-91180-057-4, 0735618038; 2007 г.
http://www.ozon.ru/context/detail/id/3137491/
Одна из лучших (а может, самая лучшая) книг по драйверам.
Единственная известная мне книга по драйверам, в которой детально
разбирается тема обработки I/O и работа PnP-устройств.
Неплохая книга для начинающих, для общего развития вполне подойдет.
Driver Development Part 2: Introduction to Implementing IOCTLs
http://www.codeproject.com/Art. o-Implemen
Driver Development Part 3: Introduction to driver contexts
http://www.codeproject.com/Art. o-driver-c
Driver Development Part 4: Introduction to device stacks
http://www.codeproject.com/Art. o-device-s
Driver Development Part 5: Introduction to the Transport Device Interface
http://www.codeproject.com/Art. o-the-Tran
Driver Development Part 6: Introduction to Display Drivers
http://www.codeproject.com/Art. to-Display
Цикл из шести статей, посвященных разработке драйверов.
Хорошее руководство для быстрого старта, рассматриваются некоторые
ключевые вопросы.
Старый, но до сих пор во многом актуальный туториал, для новичков самое то.
Все примеры на ассемблере, но с комментариями и подробным разбором каждого абзаца.
«Windows 2000 Device Driver Book: a Guide for Programmers» (A. Baker, J. Lozano).
ISBN-10: 0130204315 | ISBN-13: 978-0130204318
http://www.amazon.com/Windows-. 0130204315
Очень солидная книга, хоть и старая.
Многие главы из этой книги впоследствии перекочевали в MSDN.
В этих документах описано, как следует строить взаимодействие драйвера с
юзермодным приложением, типовые ошибки, best practices и т.д.
Статья рассказывает о типовых и не очень ошибках, которые постоянно
допускаются разработчиками драйверов и которые позволяют эксплуатировать
драйвер «ненадлежащим образом», обходя систему безопасности Windows.
В документе описывается обработка IRP (запросы ввода-вывода) и все,
что каждому разработчику драйверов полагается знать на этот счет.
А здесь рассказывается, как отменять IRP и какие при этом могут быть проблемы.
Different ways of handling IRPs — cheat sheet (part 1 of 2)
http://support.microsoft.com/kb/320275/en
Different ways of handling IRPs — cheat sheet (part 2 of 2)
http://support.microsoft.com/kb/326315/en
«Роман» в двух частях об обработке IRP — создание синхронных и
асинхронных IRP, завершение IRP, отмена, постановка в очередь и т.д.
Еще одна «повесть» про отмену IRP и связанные с этим проблемы.
Здесь рассказывается, как работают cancel-safe-очереди (CSQ) и как с
их помощью можно избежать хлопот, связанных с синхронизацией отмены IRP.
Memory Management: What Every Driver Writer Needs to Know
https://drive.google.com/file/. sp=sharing
Документация об устройстве памяти в Windows, а также о расширениях,
появившихся с выходом Windows Vista и Windows 7.
Master of the Obvious — MDLs are Lists that Describe Memory
http://www.osronline.com/article.cfm?id=423
Статья объясняет, что такое MDL и как им пользоваться (работа с памятью).
INFO: Tips for Windows NT Driver Developers — Things to Avoid
http://support.microsoft.com/kb/186775/en-us
Несколько десятков полезных советов, написанных в стиле «don’t do this».
Чрезвычайно полезные документы по основам синхронизации в ядре.
Здесь описаны все основные примитивы синхронизации Windows,
мультипроцессорность, уровни запросов прерываний (IRQL), упорядочивание
доступа к памяти, барьеры, volatile, блокировки и тому подобное.
Must read !
Device Installation Rules and Guidelines for Windows Vista
https://drive.google.com/file/. sp=sharing
Описаны основные рекомендации по созданию качественных драйверных
инсталляций для современных версий Windows, начиная с Vista.
Getting Started with Software Tracing in Windows Drivers
https://drive.google.com/file/. sp=sharing
Основы использования трассировки (WPP Tracing) в драйверах.
Kernel Enhancements for Windows Vista and Windows Server 2008
https://drive.google.com/file/. sp=sharing
Kernel Data and Filtering Support for Windows Server 2008
https://drive.google.com/file/. sp=sharing
Secured Boot and Measured Boot: Hardening Early Boot Components againist Malware
https://drive.google.com/file/. sp=sharing
Windows Display Driver Model Enhancements in Windows 8
https://drive.google.com/file/. sp=sharing
Сборник документов, описывающих различные новшества, пришедшие
вместе с Windows Vista, Windows 7 и Windows 8.
Внутреннее устройство архитектуры NT — процессы, каналы, оконные станции, объекты
ядра и многое другое. Составлено архитекторами NT, включая известного Д. Катлера.
Статьи рассказывают про APC — известный, но малодокументированный механизм,
который может использоваться (и используется) для самых разных задач.
Отличные ресурсы по недокументированным функциям и структурам NT.
Информационный центр разработчика драйверов, здесь есть много интересных
документов и загрузок. Всем интересующимся советую сразу заглянуть в архив:
Сайт посвящен в основном различным недокументированным особенностям —
структуры и объекты ядра, адресное пространство, специфика x64, и т.п.
«Второй MSDN». Здесь можно найти много интересного (а еще подписаться
на журнал «NT Insider»). Есть форум, где часто обсуждают интересные
технические вопросы и где мелькают известные личности из Microsoft.
В блоге есть полезная информация по различным фильтрующим драйверам и
всяким перехватчикам, в основном это файловые- и TDI-фильтры.
Форумы, на которых собирается практически вся программерская братия рунета.
Есть поиск и тематические разделы, в которых можно найти все что угодно,
было бы желание.
Документация Windows Driver Kit 8, собранная в файл chm
https://drive.google.com/file/. sp=sharing
Делал для себя, чтобы не таскать всякие гигабайтные установщики.
Пакет инструментов, заголовочных файлов и библиотек для разработчика драйверов.
Единственный на сегодняшний день пакет, позволяющий собирать драйверы для
всех современных версий Windows, начиная с XP и до новейших Windows 8.1.
Пакет инструментов, также известный под общим названием WinDBG.
Незаменимое средство для отладки, анализа крэш-дампов, поиска проблем и прочих расследований.
Расширение для WinDBG, позволяющее использовать скрипты на Python прямо в
консоли отладчика. Также имеет набор вспомогательных команд. Полезно для
автоматического разбора больших структур, написания сценариев отладки и т.д.
Расширение для WinDBG, реализующее несколько полезных функций: работа с
ядерными структурами памяти (PTE и address space layout), разбор сетевых
пакетов и подробный stack trace, который, например, умеет показывать
информацию о stack unwinding, non-volatile регистры, а еще переданные в
каждую функцию аргументы, в том числе на x64.
Просмотр драйверов загрузки
Добрый день, В Windows 7 была возможность просмотреть загружающиеся драйверы,притормозить.
Порядок загрузки драйверов и сервисов
Дарова! Есть ли возможность в поше узнать порядок загрузки сервисов и дров, как это реализовано в.
Работа для Java EE разработчика /WEB Разработчика Санкт-Петербург
Должностные обязанности: — Разработка клиент-серверного ПО; — Разработка интранет WEB-приложений;.
Черный экран после загрузки драйверов
На компьютере черный экран после загрузки windows 10. Читал разные форумы , и проделывал разные.
Примеры исходного кода.
Часть из них поставляется вместе с WDK, остальные только online.
Коллекция исходных кодов, собранная из разных выпусков DDK/WDK/IFS.
Состав архива:
Windows DDK 2600.1106 (Windows XP SP1)
Windows IFS DDK 3790 (Windows Server 2003)
Windows Driver Kit 6000 (Windows Vista)
Windows Driver Kit 7600.1 (Windows 7)
Windows Driver Kit 8.0 (Windows 8)
Windows Driver Kit 8.1 (Windows 8.1)
Исходные коды KMDF и UMDF v2.
Microsoft сделала приятный сюрприз разработчикам драйверов, выложив эти
исходники в открытый доступ. Используете ли вы WDF или нет, наверняка
найдете для себя много интересного и полезного, ведь реализации
KMDF/UMDF во многих отношениях считаются образцовыми.
Intel® 64 and IA-32 Architectures Software Developer Manuals
http://www.intel.com/content/w. 32_manuals
Пачка полезных документов от Intel и AMD, описывающих архитектуру
современных процессорных систем, от общих принципов до реализации.
Developing Drivers with the Windows Driver Foundation (P. Orwick)
http://www.amazon.com/Developi. 0735623740
Две книги по программированию драйверов с использованием новой
драйверной модели WDF. Обе — очень хорошее дополнение к официальной
документации MSDN.
Название говорит само за себя: что нового в очередной версии WDF.
Windows NT File System Internals: A Developer’s Guide(R. Nagar)
http://www.amazon.com/Windows-. 1565922492
Книга по основам NTFS и драйверам файловой системы.
Старая, но до сих пор во многом актуальная. Рассматриваются ключевые
механизмы соответствующих подсистем — диспетчер кэша, виртуальной памяти,
Fast I/O, фильтрующие драйверы и т.п.
Nynaeve (Adventures in Windows debugging and reverse engineering)
http://www.nynaeve.net/
Блоги, в которых можно найти очень много интересного и полезного,
чего нет в официальной документации.
Windows Research Kernel (WRK)
Windows 2000 Source Code
Windows NT 4 Source Code
Исходные коды Windows. WRK распостраняется по специальной лицензии,
остальные два вообще не должны были увидеть свет, но это все-таки
произошло (2004 год). Ссылок по понятным причинам не даю, интересующихся
отсылаю в Гугл, на торренты и т.п.
Много материалов, книг, курсов и других публикаций на тему диагностики ошибок.
Отдельно советую обратить внимание на восьмитомник «Memory Dump
Analysis Anthology», это очень хорошее руководство по разбору крэш-дампов.
Последние версии WinDBG, взято из WDK 10 (build 10075, preview-версия).
Здесь можно свободно загрузить checked-сборки Windows XP и Windows Server 2003
(остальные версии пока доступны только подписчикам MSDN). Для тех, кто не знает:
в checked-версиях работает больше проверок (assert-ы), там отключены различные
оптимизации и т.п. Это позволяет разработчику драйверов быстрее обнаруживать и
диагностировать ошибки определенного класса.
Microsoft Signatures to be REQUIRED for Windows 10 Kernel-Mode Drivers
https://www.osr.com/blog/2015/. indows-10/
Описаны изменения в политике цифрового подписывания драйверов,
появившиеся в Windows 10.
Вместе с официальным релизом Windows 10 вышел и Windows Driver Kit (WDK) 10.
Загрузить можно отсюда:
Номер сборки — 10.0.26639, предыдущая версия была 10.0.10075.
This section describes new features for driver development in Windows 10.
Universal Windows drivers
Starting in Windows 10, you can write a single driver that works on OneCoreUAP-based
editions of Windows, such as Windows 10 for desktop editions (Home, Pro, and Enterprise),
Windows 10 Mobile, and Windows 10 IoT Core. Such a driver is called a Universal Windows driver.
A Universal Windows driver calls a subset of the interfaces that are available to a Windows driver.
For information about how to build, install, deploy, and debug a Universal Windows driver for
Windows 10, see Getting Started with Universal Windows drivers.
When you build a Universal Windows driver using Microsoft Visual Studio 2015, Visual Studio
automatically checks if the APIs that your driver calls are valid for a Universal Windows driver.
You can also use the ApiValidator.exe as a standalone tool to perform this task.
The ApiValidator.exe tool is part of the Windows Driver Kit (WDK) for Windows 10. For info,
see Validating Universal Windows drivers.
Universal Windows drivers also require a special kind of INF file called a universal INF.
A universal INF can use a subset of the directives and sections available to a legacy INF file.
To learn more, see Using a Universal INF File. To see which sections and directives apply,
see INF File Sections and Directives.
When you’re ready, use the InfVerif tool to test your driver’s INF file. In addition to reporting
INF syntax problems, the tool reports if the INF file will work with a Universal Windows driver.
You can also find information about which APIs you can call from a Universal Windows driver.
This information is located in the Requirements block at the bottom of MSDN reference pages.
For example, you’ll see a listing similar to this one that tells you if a given DDI is Universal.
Target Platform set to universal in Requirements block
For more info, see Target platform on MSDN driver reference pages.
New Microsoft-defined Bluetooth HCI extensions have been added.
Buses and Ports
Driver programming interfaces and in-box drivers for Simple Peripheral Bus (SPB) such
as I2C and SPI, and GPIO are part of OneCoreUAP-based editions of Windows.
Those drivers will run on both Windows 10 for desktop editions and Windows 10 Mobile,
as well as other Windows 10 versions.
The camera driver DDIs have converged into a Universal Windows driver model,
including new camera DDIs. Additional features include:
Digital video stabilization
Variable frame rate
Face detection
Video high dynamic range (HDR)
Optical stabilization
Scene analysis: photo HDR, flash no flash, ultra low light
Capture stats: metadata framework/attributes, histograms
Smooth zoom
Hardware optimization hints
Camera profiles
Cellular architecture and implementation for Windows 10 has been updated.
The display driver model from Windows 8.1 and Windows Phone have converged
into a unified model for Windows 10.
A new memory model is implemented that gives each GPU a per-process virtual
address space. Direct addressing of video memory is still supported by WDDMv2 for
graphics hardware that requires it, but that is considered a legacy case. IHVs are
expected to develop new hardware that supports virtual addressing. Significant
changes have been made to the DDI to enable this new memory model.
Debugging Tools for Windows
The following new commands are available in for the Windows debugger:
dx (Display NatVis Expression) — A new debugger command which displays object
information using the NatVis extension model.
.settings — A new command that sets, modifies, displays, loads and saves settings in
the Debugger.Settings namespace.
Driver verifier includes new driver validation rules for the following technologies:
New Rules for Audio Drivers
New Rules for AVStream Drivers
Four new Rules for KMDF Drivers
Three new Rules for NDIS Drivers
Human Interface Device (HID)
The new Virtual HID Framework (VHF) eliminates the need for writing a kernel-mode
transport minidriver. The framework comprises a Microsoft-provided static library
(Vhfkm.lib) that exposes programming elements used by your driver. It also includes a
Microsoft-provided in-box driver (Vhf.sys) that enumerates one or more child devices
and proceeds to build a virtual Human Interface Device (HID) tree.
The Global Navigation Satellite System (GNSS) driver DDIs have converged to a GNSS
Universal Windows driver model (UMDF 2.0).
Near Field Communication (NFC)
The NFC DDIs have a new converged driver model to support mobile and desktop solutions.
NFC Class Extension: A new NFC class extension driver is available. The NFC class extension
driver implements all of the Windows-defined DDIs to interact with the NFC controller,
secure elements, and remote RF endpoints.
The new PacketDirect Provider Interface (PDPI) is available as an extension to the existing NDIS
miniport driver model. The PDPI provides an I/O model that allows applications to manage their
own buffers, poll processors, and directly manage sending and receiving packets over a miniport
adapter. The combination of these capabilities allow the application to completely control its own
contexts leading to a much higher packet-per-second (pps) ratio.
Power Management Framework (PoFx)
The power management framework (PoFx) enables a driver to define one or more sets of
individually adjustable performance states for individual components within a device. The driver
can use performance states to throttle a component’s workload to provide just enough
performance for its current needs. For more information, see Component-Level Performance
State Management.
The print driver is updated with v4 Print driver improvements and changes to support wireless
printing from mobile devices, as well as the following:
V4 Driver Manifest
Provides information on changes to the v4 print driver manifest to support the PWG Raster
rendering filter, including updated DriverConfig and DriverRender directives, and an updated
example manifest.
WS-Discovery Mobile Printing Support
Describes the WS-Discovery requirements to enable mobile printing from Windows 10 Mobile
devices to Windows 10 Mobile compatible printers.
Supports printer content conversion from XPS to PWG Raster using the XPS Rasterization Service.
PWG Raster supports non-square DPIs.
Print Pipeline Property Bag
Added the PrintDeviceCapabilities property to enable XPS rendering filters to retrieve the new
PrintDeviceCapabilities XML files from the Print filter pipeline property bag.
GetWithArgument Request and Response Schemas
Provides support for mobile printing with a formal definition and example for the GetWithArgument
request and response bidirectional communications schemas.
Adds support for mobile printing with the GetWithArgument bidirectional schema value.
In this release, there is a new class extension module, Wudfsmcclassext.dll, which handles complex
driver operations. Smart card hardware-specific tasks are handled by your client driver. There are
new programming interfaces that your client driver can use to send information about the card to the
class extension so that it can process requests. Those driver programming interfaces are part of
OneCoreUAP-based editions of Windows.
The new storage firmware update, updated storage protocol pass through, and expanded storage
query interfaces are available. The storage firmware update IOCTL interface allows partners to update
their storage device firmware. The updated storage pass through IOCTL interface supports newer
protocols including non-volatile memory express (NVMe). The expanded storage query interface
allows applications to query protocol-dependent information.
System-Supplied Driver Interfaces
The GUID_DEVICE_RESET_INTERFACE_STANDARD interface defines a standard way for function
drivers to attempt to reset and recover a malfunctioning device.
USB Dual Role controllers are now supported in Windows 10. The dual role feature allows a mobile
device, such as a phone, a phablet or a tablet, to designate itself as being a device or a host.
See USB Dual Role Driver Stack Architecture for more information.
Windows compatible hardware development boards
Windows is now supported on more affordable boards such as the Raspberry Pi 2. Become a part of
our early adopter community and load Windows on that board. For more information, see Windows
compatible hardware development boards.
WDI (WLAN Device Driver Interface) is a new WLAN Universal Windows driver model that converges
the WLAN drivers on Windows 10 for desktop editions and Windows 10 Mobile.
WPP Software Tracing
WPP Software Tracing introduces a new feature: Inflight Trace Recorder. If the driver enables WPP
tracing and WPP Recorder, trace logging is turned on automatically and you can view easily messages
without starting or stopping trace sessions. To get better control over the log bugger, WPP Recorder
allows a KMDF driver to create and manage custom buffers.