ВУЗ:
Составители:
3
Содержание Стр.
1 Структура WDM-драйвера 4
1.1 Назначение драйвера 5
1.2
Типы драйверов
11
1.3 WDM-драйверы 12
1.4 Иерархия устройств и драйверов 13
1.5 Порядок загрузки драйверов 18
1.6 Вопросы для самопроверки 21
2 Основные структуры данных 24
2.1 Объекты драйверов 24
2.2 Объекты устройств 26
2.3
Функция DriverEntry
29
2.4
Функция DriverUnload
32
2.5
Функция AddDevice
33
2.6 Создание объекта устройства 33
2.7
Инициализация расширения устройства (DEVICE_EXTENSION)
35
2.8 Вопросы для самопроверки 36
3
Пакеты запросов ввода-вывода IRP
39
3.1 Структура IRP 39
3.2 Стек ввода-вывода 42
3.3
Типичная модель обработки IRP
43
3.4
Создание синхронных IRP
44
3.5
Создание асинхронных IRP
46
3.6 Передача пакета диспетчерской функции 47
3.7
Функция IoCallDriver
48
3.8 Диспетчерские функции 48
3.9
Передача IRP вниз по стеку
51
3.10
Постановка IRP в очередь для последующей обработки
52
3.11
Функция StartIo
52
3.12
Обработчик прерывания ISR
53
3.13
Функция DPC
54
3.14 Функции завершения 55
3.15 Вызов функций завершения 58
3.16 Очереди запросов ввода-вывода 59
3.17 Объект DEVQUEUE 61
3.18 Отмена запросов ввода-вывода 63
3.19 Сценарии обработки IRP 65
3.20 Вопросы для самопроверки 78
Список использованных источников 83
Содержание Стр. 1 Структура WDM-драйвера 4 1.1 Назначение драйвера 5 1.2 Типы драйверов 11 1.3 WDM-драйверы 12 1.4 Иерархия устройств и драйверов 13 1.5 Порядок загрузки драйверов 18 1.6 Вопросы для самопроверки 21 2 Основные структуры данных 24 2.1 Объекты драйверов 24 2.2 Объекты устройств 26 2.3 Функция DriverEntry 29 2.4 Функция DriverUnload 32 2.5 Функция AddDevice 33 2.6 Создание объекта устройства 33 2.7 Инициализация расширения устройства (DEVICE_EXTENSION) 35 2.8 Вопросы для самопроверки 36 3 Пакеты запросов ввода-вывода IRP 39 3.1 Структура IRP 39 3.2 Стек ввода-вывода 42 3.3 Типичная модель обработки IRP 43 3.4 Создание синхронных IRP 44 3.5 Создание асинхронных IRP 46 3.6 Передача пакета диспетчерской функции 47 3.7 Функция IoCallDriver 48 3.8 Диспетчерские функции 48 3.9 Передача IRP вниз по стеку 51 3.10 Постановка IRP в очередь для последующей обработки 52 3.11 Функция StartIo 52 3.12 Обработчик прерывания ISR 53 3.13 Функция DPC 54 3.14 Функции завершения 55 3.15 Вызов функций завершения 58 3.16 Очереди запросов ввода-вывода 59 3.17 Объект DEVQUEUE 61 3.18 Отмена запросов ввода-вывода 63 3.19 Сценарии обработки IRP 65 3.20 Вопросы для самопроверки 78 Список использованных источников 83 3