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

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

Рабочая процедура выгрузки драйвера
Заголовочный файл Driver.h
Компиляция и сборка драйвера Example.sys
Файл Makefile
Файл Sources
Компиляция и сборка при помощи утилиты Build
Инсталляция и запуск драйвера Example.sys
Инсталляция внесением записей в Системный Реестр
Модификация Системного Реестра Windows 98
Модификация Системного Реестра Windows 2000, XP, Server2003



Запуск драйвера
Инсталляция с использованием INF файла
Инсталляция с использованием программы Monitor
Инсталляция с использованием сервисов SCM Менеджера
Приложение для тестирования драйвера Example.sys

Работа с драйвером Example.sys
Архитектура Windows NT 5. Введение
Цели разработки
Уровни аппаратных привилегий в Windows NT 5

Переносимость
Расширяемость
Производительность
Исполнительные компоненты
Интерфейс системных служб
Менеджер (диспетчер) объектов
Менеджер конфигурирования
Менеджер процессов
Менеджер виртуальной памяти
Средства локальных процедурных вызовов

Диспетчер (менеджер) ввода/вывода
Расширения базовой операционной системы
Расширения базовой операционной системы - 2
Подсистема Win32
Другие существенные компоненты операционной системы
Цели разработки подсистемы ввода/вывода
Типы драйверов Windows NT5

Специальные драйверные архитектуры
Отличия между версиями
Прикасаясь к аппаратуре
Основные сведения об аппаратном обеспечении
Автоматическое распознавание и конфигурирование

Регистры устройств
Доступ к регистрам устройств
Пространство ввода/вывода
Доступ через адресацию в памяти
Сигналы прерываний
Приоритеты прерываний
Векторы прерывания
Передача сигналов прерываний
Сродство к процессору

Механизмы передачи данных
Программируемый ввод/вывод
Прямой доступ к памяти
DMA операции с использованием системных контроллеров
Операции bus master DMA
Память, отведенная устройству
Ресурсы, используемые устройством
Шины в компьютерных системах
ISA: Industry Standard Architecture
EISA: Extended Industry Standard Architecture

PCI: Peripheral Component Interconnect
Доступ к регистрам
Механизмы прерываний
Возможности DMA
Память, отведенная устройствам

IEEE 1394: Firewire Bus
Автоматическое распознавание и конфигурирование
USB: Universal Serial Bus
Автоматическое распознавание и конфигурирование

Шина PC Card (PCMCIA)
Советы по работе с аппаратурой
Архитектура шины
Регистры управления
Получение информации о состоянии устройства и об ошибках
Поведение, связанное с использованием прерываний

Используйте интеллект нового устройства
Тестирование аппаратуры
Контекст выполнения программного кода
Контекст исключения или внутреннего прерывания (trap)
Контекст прерывания
Контекст программного потока режима ядра
Приоритеты выполнения программного кода

Обработка прерываний
Прерывания, вызванные программно
Доступ к областям памяти пользовательских приложений
Способы доступа к буферным областям
Отложенные процедурные вызовы (DPC)
Функционирование DPC
Особенности механизма DPC
Общий взгляд на структуру драйвера режима ядра

Процедуры инициализации драйвера и очистки
Процедура DriverEntry
Процедура ре-инициализации
Процедура выгрузки Unload
Процедура Shutdown
Процедура обратного вызова Bugcheck
Рабочие процедуры обслуживания ввода/вывода
Обработчики запросов Open и Close
Процедуры передачи данных
Процедура StartIo

Процедура обслуживания прерываний
Процедуры DPC
Процедуры обратного вызова для синхронизации доступа к ресурсам
Процедура ControllerControl
Процедура AdapterControl
Процедуры SynchCritSection
Другие процедуры драйвера
Таймерные процедуры
Процедура IoCompletion

Процедура CancelRoutine
Последовательность обслуживания запросов ввода/вывода
Предварительная обработка Диспетчером ввода/вывода
Предварительная обработка в драйвере
Старт операции ввода/вывода
Процедура обслуживания прерываний ISR
Пост-обработка, выполняемая драйвером
Пост-обработка, выполняемая Диспетчером ввода/вывода
Содержание раздела