Документация и загрузки для разработчика драйверов
Документация и загрузки для разработчика драйверов
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.