Программирование драйверов Windows

Содержание


Приемы программирования в режиме ядра
Дополнительные описатели типов
Квалификаторы IN, OUT, OPTIONAL
Типы возвращаемых значений функций
Соглашения об именах функций драйвера и системных вызовов
Операции с плавающей точкой
Операции с памятью
Операции с памятью - часть 2
Операции с памятью - часть 3
Операции с памятью - часть 4
Вызовы для выделения и освобождения областей виртуальной памяти
Вызовы для выделения и освобождения областей виртуальной памяти - часть 2
Работа с ассоциативными списками
Работа с ассоциативными списками - часть 2
Работа с ассоциативными списками - часть 3
Работа с ассоциативными списками - часть 4
Работа с MDL списками
Работа с MDL списками - часть 2
Работа с MDL списками - часть 3
Работа с MDL списками - часть 4
Работа с MDL списками - часть 5
Функции библиотеки времени выполнения для работы с памятью
Управление размещением кода драйвера в памяти
Определение размещения при компиляции
Динамическое перемещение кода драйвера в страничную память
Проблемы, возникающие при перемещении кода в страничную память
Фиксация страничных секций кода и данных в оперативной памяти
Проверка корректности вызовов кода, размещенного в страничной памяти
Операции над строками UNICODE_STRING
Операции над строками UNICODE_STRING - часть 2
Операции над строками UNICODE_STRING - часть 3
Операции над строками UNICODE_STRING - часть 4
Операции над строками ANSI символов
Операции над строками ANSI символов - часть 2
Функции для работы с файлами
Функции для работы с файлами - часть 2
Функции для работы с файлами - часть 3
Функции для работы с файлами - часть 4
Функции для работы со ссылками на объекты
Функции для работы со ссылками на объекты - часть 2
Функции для работы со ссылками на объекты - часть 3
Функции для работы с системным представлением времени
Функции для работы с Системным Реестром
Функции доступа к Системному Реестру, предоставляемые Диспетчером ввода/вывода
Функции RtlXxx прямого доступа к Системному Реестру
Функции RtlXxx прямого доступа к Системному Реестру - часть 2
Работа с Системным Реестром через вызовы ZwXxx
Работа с Системным Реестром через вызовы ZwXxx - часть 2
Работа с Системным Реестром через вызовы ZwXxx - часть 3
Заключение
Основные процедуры драйвера
Процедура DriverEntry
Процедура DriverEntry - часть 2
Процедура DriverEntry - часть 3
Процедура AddDevice
Процедура Unload
Процедура Unload - часть 2
Адресация и доступ к данным в IRP пакетах чтения/записи
Адресация и доступ к данным в IRP пакетах чтения/записи - часть 2
Рабочие процедуры драйвера
Пакеты IRР
Заголовок IRP
Ячейки стека ввода/вывода
Рабочие процедуры драйвера
Рабочие процедуры драйвера - часть 2
Набор рабочих процедур
Набор рабочих процедур - часть 2
Последовательность действий рабочих процедур
Случай 1: Ошибочная ситуация
Случай 2: Завершение работы над IRP запросом
Случай 3: Работа через очереди IRP пакетов
Рабочие процедуры обслуживания IOCTL запросов
Рабочие процедуры обслуживания IOCTL запросов - часть 2
Рабочие процедуры обслуживания IOCTL запросов - часть 3
Рабочие процедуры обслуживания IOCTL запросов - часть 4
Рабочие процедуры обслуживания IOCTL запросов - часть 5
При методе METHOD_BUFFERED
При методе METHOD_IN_DIRECT и METHOD_OUT_DIRECT
При методе METHOD_NEITHER
Обслуживание прерываний
Обслуживание прерываний - часть 2
Обслуживание прерываний - часть 3
Обслуживание прерываний - часть 4
Обслуживание прерываний - часть 5
Процедуры отложенного вызова обслуживания прерываний DpcForIsr
Выполнения кода процедуры DpcForIsr
Отключение от источника прерываний
Отключение от источника прерываний - часть 2
Заключение
Развитие спецификации Plug & Play
Развитие спецификации Plug & Play - часть 2
Программные компоненты Plug and Play
Роль Системного Реестра
Роль Системного Реестра - часть 2
AddDevice — новая процедура в драйверах модели WDM
Роль драйверных слоев в модели WDM
Роль драйверных слоев в модели WDM - часть 2
Роль драйверных слоев в модели WDM - часть 3
Роль драйверных слоев в модели WDM - часть 4
Роль драйверных слоев в модели WDM - часть 5
Новые рабочие процедуры в WDM драйверах
Новые рабочие процедуры в WDM драйверах - часть 2
Новые рабочие процедуры в WDM драйверах - часть 3
Новые рабочие процедуры в WDM драйверах - часть 4
Новые рабочие процедуры в WDM драйверах - часть 5
Новые рабочие процедуры в WDM драйверах - часть 6
Ограничения, накладываемые на WDM драйверы спецификацией PnP
Передача PnP IRP пакетов нижним драйверным слоям
Device Enumeration — всеобщая перепись устройств
Многослойные драйверы
Когда следует применять многослойную архитектуру?
Доводы "за"
Недостатки многослойной архитектуры
Работа с нижними слоями драйверного стека
Работа с нижними слоями драйверного стека - часть 2
Работа с нижними слоями драйверного стека - часть 3
Создание IRP пакетов вызовами IoBuild(A)SynchronousFsdRequest
Создание IRP пакетов вызовами IoBuild(A)SynchronousFsdRequest - часть 2
Создание IRP пакетов вызовами IoBuild(A)SynchronousFsdRequest - часть 3
Создание IRP пакетов вызовами IoBuild(A)SynchronousFsdRequest - часть 4
Создание IRP пакетов вызовом IoBuildDeviceIoControlRequest
Создание IRP пакетов вызовом IoBuildDeviceIoControlRequest - часть 2
Создание IRP пакетов "с нуля"
Создание IRP пакетов "с нуля" - часть 2
Создание IRP пакетов "с нуля" - часть 3
Создание IRP пакетов "с нуля" - часть 4
Работа с IRP пакетами-репликантами
Работа с IRP пакетами-репликантами - часть 2
Удаление IRP пакетов
Удаление IRP пакетов - часть 2
Удаление IRP пакетов - часть 3
Удаление IRP пакетов - часть 4
Удаление IRP пакетов - часть 5
Заключение
Программные потоки и синхронизация
Системные программные потоки
Системные программные потоки - часть 2
Системные программные потоки - часть 3
Системные рабочие потоки
Системные рабочие потоки - часть 2
Системные рабочие потоки - часть 3
Синхронизация в режиме ядра
Интервалы ожидания для отдельного потока
Интервалы ожидания для отдельного потока - часть 2
Интервалы ожидания для отдельного потока - часть 3
Интервалы ожидания для отдельного потока - часть 4
Интервалы ожидания для отдельного потока - часть 5
Интервалы ожидания для отдельного потока - часть 6
Интервалы ожидания для отдельного потока - часть 7
Разделение времени и данных с ISR процедурой
Разделение времени и данных с ISR процедурой - часть 2
Потоки как объекты синхронизации
Исполнительские ресурсы
Группа функций (Ex)InterlockedXxx
Изменение приоритетов как средство синхронизации
DPC процедуры как средство синхронизации
Таймеры и их использование
Таймеры и их использование - часть 2
Таймеры и их использование - часть 3
Таймеры и их использование - часть 4



Начало