492-347-068
order#superkniga.com.ua
Реклама
|
|
|
Книги компьютерные - Книги прочая разработка Купить книгу Книга Windows Driver Foundation: разработка драйверов. Орвик |
|
|
248.92 грн.
|
|
880 страниц
Год выпуска: 2008
Книга "Windows Driver Foundation. Разработка драйверов" содержит описания принципов и методик, примеры программирования и подсказки для эффективной разработки драйверов. Представлены инструменты и ресурсы, основные понятия драйверов и операционной системы Windows, обзор модели Windows Driver Foundation (WDF), информация об архитектуре Windows, модели ввода/вывода. Приводятся три основные составляющие модели WDF: инфраструктура драйвера пользовательского режима, инфраструктура драйвера режима ядра и набор инструментов тестирования и верификации, а также шаблоны и рекомендации по выбору. Подробно рассматриваются различия между пользовательским режимом и режимом ядра.
Содержание
Оглавление Об авторах 1 Предисловие 3 Благодарности 7 Часть I. Начало работы с моделью WDF 11 Глава 1. Введение в WDF 13 Об этой книге 14 Кому адресована эта книга 14 Часть I. Начало работы с моделью WDF 15 Часть II. Изучение инфраструктур 15 Часть III. Применение основ WDF 16 Часть IV. Смотрим глубже - больше о драйверах WDF 18 Часть V. Создание, установка и тестирование драйверов WDF 18 Словарь 19 Условные обозначения 19 Приступая к разработке драйверов 21 Системные требования для разработки драйверов 21 Как приобрести и установить набор WDK 22 Библиотеки WDK 24 Документация WDK 24 Инструменты WDK 25 Образцы WDK 26 Образцы UMDF 26 Образцы KMDF 27 Как приобрести проверочные версии Windows 27 Как приобрести отладочные инструменты 28 Как приобрести устройства обучения OSR 29 Основные источники информации 30 Основные ссылки 32 Глава 2. Основы драйверов под Windows 33 Что такое драйвер? 34 Базовая архитектура Windows 35 Архитектура драйвера 37 Объекты устройств и стек устройства 37 Дерево устройств 39 Объекты и структуры данных ядра 40 Модель ввода/вывода Windows 41 Запросы ввода/вывода 42 Обработка прерываний стеком устройства 42 Буферы данных и типы передачи ввода/вывода 43 Передача и получение данных от устройства 44 Plug and Play и управление энергопотреблением 45 Основы программирования в режиме ядра 45 Прерывания и уровни IRQL 46 Параллелизм и синхронизация 48 Потоки 48 Синхронизация 49 Состояние гонок и взаимоблокировки 50 Память 51 Управление памятью 51 Пулы памяти 52 Стек ядра 52 Списки MDL 53 Советы по программированию в режиме ядра 53 Выделение памяти 53 Использование спин-блокировок 54 Управление ошибками страниц 54 Обращение к памяти пользовательского режима 54 Блокирование потоков 55 Верификация драйверов 55 Использование макросов 55 Основные термины 56 Глава 3. Основы WDF 60 WDF и WDM 60 Что такое WDF? 61 Объектная модель WDF 62 Программный интерфейс 63 Иерархия объектов 63 Параллелизм и синхронизация 64 Модель ввода/вывода 64 Отмена запросов ввода/вывода 65 Исполнители ввода/вывода 65 Обработка некритических ошибок 66 Извещение об ошибках UMDF 67 Извещение об ошибках KMDF 67 Plug and Play и управление энергопотреблением 67 Критерии конструкции WDF для Plug and Play и управления энергопотреблением 68 Безопасность 69 Стандартные безопасные установки 70 Проверка достоверности параметров 70 Поддержка верификации, трассировки и отладки 70 Обслуживаемость и управление версиями 71 Часть II. Изучение инфраструктур 73 Глава 4. Обзор драйверных инфраструктур 75 Обзор драйверных инфраструктур 75 Обзор инфраструктуры UMDF 76 Объекты инфраструктуры UMDF 77 Объекты обратного вызова инфраструктуры UMDF 78 Обзор инфраструктуры KMDF 78 Объекты KMDF 79 Функции обратного вызова инфраструктуры KMDF 80 Архитектура WDF 80 Инфраструктура UMDF 83 Компоненты инфраструктуры UMDF 84 Критические ошибки в драйверах UMDF 86 Типичный запрос ввода/вывода UMDF 87 Инфраструктура KMDF 88 Компоненты инфраструктуры KMDF 88 Критические ошибки в драйверах KMDF 90 Типичный запрос ввода/вывода KMDF 90 Поддержка устройств и драйверов в WDF 91 Устройства, поддерживаемые UMDF 91 Достоинства драйверов UMDF 92 Недостатки драйверов UMDF 93 Устройства, поддерживаемые KMDF 94 Как выбрать правильную инфраструктуру 94 Глава 5. Объектная модель WDF 96 Обзор объектной модели 96 Методы, свойства и события 97 Обратные вызовы по событию 98 Атрибуты объектов 98 Иерархия и время жизни объектов 99 Контекст объекта 99 Реализация объектной модели UMDF 100 Соглашение об именах UMDF 100 Объекты и интерфейсы инфраструктуры UMDF 101 Объекты обратного вызова и интерфейсы драйвера UMDF 103 Пример UMDF: объекты и интерфейсы обратных вызовов 105 Реализация объектной модели KMDF 106 Типы объектов KMDF 107 Соглашение об именах KMDF 109 Создание объектов 110 Создание объектов UMDF 110 Создание объектов KMDF 111 Структура конфигурации объекта KMDF 111 Структура атрибутов объекта KMDF 112 Методы создания объектов KMDF 113 Иерархия и время жизни объектов 114 Удаление, ликвидация, очистка и уничтожение 115 Иерархия объектов UMDF 116 Иерархия объектов KMDF 117 Удаление объектов 118 Обратные вызовы очистки ресурсов 121 Обратные вызовы деструкции 121 Удаление объектов UMDF 122 Удаление объектов KMDF 122 Исключение: завершенные запросы ввода/вывода 124 Область контекста объекта 125 Данные контекста объекта UMDF 126 Информация контекста UMDF в членах данных объекта обратного вызова 127 Область контекста UMDF для объекта инфраструктуры 128 Область контекста объекта KMDF 129 Объявления типа области контекста KMDF 130 Инициализация полей контекста в структуре атрибутов объекта 130 Назначение области контекста KMDF объекту 131 Глава 6. Структура драйвера и его инициализация 132 Обязательные компоненты драйвера 132 Структура драйверов UMDF и требования к ним 133 Структура драйверов KMDF и требования к ним 136 Объект драйвера 138 Создание объекта обратного вызова для драйвера UMDF 138 Создание объекта драйвера KMDF 140 Объекты устройств 142 Типы объектов устройств 142 Драйверы фильтра и объекты устройств фильтра 143 Функциональные драйверы и объекты функциональных устройств 144 Драйверы шины и объекты физических устройств (KMDF) 144 Драйверы унаследованных устройств и объекты устройств управления (KMDF) 146 Драйверы WDF, типы драйверов и типы объектов устройств 147 Свойства устройств 147 Инициализирование объекта устройства 149 Объекты очередей и другие вспомогательные объекты 149 Интерфейсы устройств 150 Интерфейсы устройств и символьные ссылки 151 Создание и инициализирование объекта устройства UMDF 151 Создание объекта обратного вызова устройства 152 Создание и инициализирование инфраструктурного объекта устройства 152 Пример UMDF: интерфейс устройства 154 Создание и инициализирование объекта устройства KMDF 155 Структура инициализации устройства KMDF 155 Инициализация KMDF объектов FDO 156 Инициализация KMDF объектов FiDO 156 Область контекста объекта устройства 157 Создание объектов устройств KMDF 157 Дополнительные задачи, выполняемые функцией EvtDriverDeviceAdd 158 Пример KMDF: функция обратного вызова EvtDriverDeviceAdd 158 Перечисление дочерних устройств (только PDO-объекты KMDF) 160 Статическое и динамическое перечисление в драйверах шины 160 Динамическое перечисление 160 Статическое перечисление 161 Инициализация объектов PDO 161 Способы именования устройства для драйверов KMDF 162 Именованные объекты устройств 162 Дескрипторы безопасности 163 Часть III. Применение основ WDF 165 Глава 7. Plug and Play и управление энергопотреблением 167 Введение в Plug and Play и управление энергопотреблением 168 О механизме Plug and Play 169 О состояниях энергопотребления 170 Политика энергопотребления 172 Plug and Play и управление энергопотреблением в WDF 173 Стандартные настройки Plug and Play и управления энергопотреблением 173 Очереди ввода/вывода и управление энергопотреблением 174 Обратные вызовы функций для событий Plug and Play и управления энергопотреблением 174 Поддержка бездействия и пробуждения (только для KMDF) 176 Энергостраничные и неэнергостраничные драйверы 177 Порядок обратных вызовов функций для событий Plug and Play и управление энергопотреблением 179 Перечисление и запуск устройств 183 Отключение питания и удаление устройства 186 Неожиданное извлечение 190 Последовательность действий при неожиданном удалении для драйверов UMDF 190 Последовательность действий при неожиданном удалении устройства для драйверов KMDF 191 Реализация Plug and Play и управления энергопотреблением в драйверах WDF 192 Чисто программные драйверы Plug and Play и управление энергопотреблением 193 Пример UMDF: чисто программный драйвер фильтра для Plug and Play 194 Пример KMDF: чисто программный драйвер фильтра для Plug and Play 195 Действия инфраструктуры для чисто программных драйверов 197 Plug and Play и управление энергопотреблением в простых аппаратных драйверах 197 Инициализация и деинициализация устройства при включении и выключении 198 Управление энергопотреблением очередей в аппаратных функциональных драйверах 199 Пример UMDF: код для Plug and Play и управления энергопотреблением в протокольном функциональном драйвере 200 Управляемая энергопотреблением очередь для драйвера UMDF 201 Методы интерфейса IPnpCallbackHardware 201 Методы интерфейса IPnpCallback 203 Пример KMDF: код для Plug and Play и управления энергопотреблением в простом аппаратном функциональном драйвере 204 Пример KMDF: регистрация обратных вызовов и организация управляемых энергопотреблением очередей 205 Пример KMDF: обратные вызовы для входа и выхода из состояния D0 207 Действия инфраструктуры для простого аппаратного функционального драйвера 208 KMDF, устройства хранение и гибернация 210 Продвинутые возможности управления энергопотреблением для драйверов KMDF 210 Поддержка бездействия устройства в режиме низкого энергопотребления для драйверов KMDF 210 Настройки и управление бездействием в драйверах KMDF 211 Выбор периода простоя и состояний пониженного энергопотребления в драйверах KMDF 214 Поддержка пробуждения устройства для драйверов KMDF 215 Реализация пробуждения из состояния Sx в драйверах KMDF 217 Реализация пробуждения из состояния S0 в драйверах KMDF 219 Пример KMDF: поддержка бездействия и пробуждения устройств 220 Действия инфраструктуры для поддержки бездействия устройства 223 Действия инфраструктуры, поддерживающие пробуждение устройства 223 Глава 8. Поток и диспетчеризация ввода/вывода 226 Основные типы запросов ввода/вывода 227 Запросы на создание 227 Запросы на очистку и закрытие 227 Запросы на чтение и запись 228 Запросы управления вводом/выводом устройства 228 Обзор типов запросов ввода/вывода 230 Типы передач ввода/вывода 230 Буферизованный ввод/вывод 232 Прямой ввод/вывод 232 Ввод/вывод типа METHOD_NEITHER 232 Тип ввода/вывода METHOD_NEITHER в UMDF 232 Тип ввода/вывода METHOD_NEITHER в KMDF 233 Поток запросов ввода/вывода 234 Путь запроса ввода/вывода через стек устройств UMDF 235 Путь запросов ввода/вывода сквозь драйвер KMDF 237 Обработка завершения запросов ввода/вывода 239 Обработка завершения запросов ввода/вывода UMDF 239 Обработка завершения запросов ввода/вывода KMDF 239 Обработка завершения запросов ввода/вывода в Windows 240 Поток запросов ввода/вывода в инфраструктурах 240 Предварительная обработка пакетов IRP 242 Маршрутизация пакетов IRP к внутреннему обработчику запросов 242 Ход операций в обработчике запросов ввода/вывода 242 Проверка достоверности параметров 243 Обработка запросов в обработчике ввода/вывода 243 Объекты запросов ввода/вывода 244 Буферы ввода/вывода и объекты памяти 245 Извлечение буферов в драйверах UMDF 246 Извлечение буферов в драйверах KMDF 247 Время жизни запросов, памяти и указателей на буферы 253 Очереди ввода/вывода 253 Конфигурация очереди и типы запросов 254 Указание типа запроса для очереди 255 Обратные вызовы для очереди 255 Стандартные очереди 256 Очереди и управление энергопотреблением 257 Управляемые энергопотреблением очереди 257 Неуправляемые энергопотреблением очереди 259 Тип диспетчеризации 259 Управление очередью 260 Пример UMDF: создание очередей ввода/вывода 261 Стандартная очередь UMDF 262 Нестандартные очереди UMDF 263 Очереди UMDF с ручной диспетчеризацией 264 Пример KMDF: создание очередей ввода/вывода 265 Стандартная очередь KMDF 266 Нестандартная очередь KMDF 266 Извлечение запросов из очереди с ручной диспетчеризацией 267 Функции обратного вызова по событию 271 Объект файла для ввода/вывода 271 Автоматическая пересылка запросов на создание, очистку и закрытие 272 Обратные вызовы по событиям ввода/вывода для запросов на создание 273 Обработка запросов на создание в драйверах UMDF 274 Имперсонация в драйверах UMDF 275 Обработка запросов на создание в драйверах KMDF 278 Обратные вызовы по событиям ввода/вывода для очистки и закрытия 280 Функции обратного вызова для запросов на чтение, запись и IOCTL 281 Обратные вызовы для запросов на чтение и запись 282 Обратные вызовы для запросов IOCTL 286 Стандартные обратные вызовы для ввода/вывода 288 Завершение запросов ввода/вывода 290 Отмененные и приостановленные запросы 292 Отмена запросов ввода/вывода 292 Приостановка запроса ввода/вывода 294 Адаптивные тайм-ауты в UMDF 295 Самоуправляемый ввод/вывод 296 Самоуправляемый ввод/вывод при запуске и перезапуске устройства 298 Самоуправляемый ввод/вывод при переходе устройства в состояние пониженного энергопотребления или при его удалении 298 Пример KMDF: реализация таймера WDT 299 Пример: регистрация функций обратного вызова для самоуправляемого ввода/вывода 300 Пример: создание и инициализация таймера 300 Пример: запуск таймера 301 Пример: остановка таймера 302 Пример: перезапуск таймера 303 Пример: удаление таймера 303 Глава 9. Получатели ввода/вывода 304 О получателях ввода/вывода 305 Стандартные получатели ввода/вывода 305 Удаленные получатели ввода/вывода в драйверах KMDF 305 Общие и специализированные получатели ввода/вывода 306 Реализация получателя ввода/вывода в UMDF 307 Диспетчеры ввода/вывода UMDF 307 Внутристековые файлы для получателей ввода/вывода в драйверах UMDF 309 Создание и управление получателями ввода/вывода 310 Обращение к получателю ввода/вывода 310 Создание удаленных получателей ввода/вывода в драйверах KMDF 311 Функции инициализации для структуры параметров получателя ввода/вывода 311 Пример KMDF: создание и открытие удаленного получателя ввода/вывода 314 Управление состояниями получателя ввода/вывода 315 Методы для управления состоянием получателя ввода/вывода 316 Обратные вызовы получателей ввода/вывода для драйверов KMDF 317 Пример KMDF: функция обратного вызова EvtIoTargetQueryRemove 318 Создание запроса ввода/вывода 319 Пример UMDF: создание объекта запроса ввода/вывода WDF 319 Пример KMDF: создание объекта запроса ввода/вывода WDF 320 Объекты памяти и буферы для созданных драйвером запросов ввода/вывода 320 Выделение объектов памяти и буферов для запросов ввода/вывода 322 Родитель объекта памяти 322 Типы буферов 323 Одновременное создание объекта памяти и буфера 323 Создание объекта памяти, использующего уже существующий буфер 324 Сопоставление объекта памяти объекту запроса ввода/вывода 324 Пример UMDF: создание объекта памяти, использующего уже существующий буфер 325 Пример KMDF: создание объекта памяти и нового буфера 326 Форматирование запросов ввода/вывода 327 Когда нужно форматировать запрос 327 Форматирование запроса 327 Форматирование неизмененного запроса для стандартного получателя ввода/вывода 328 Форматирование измененных или созданных драйвером запросов 328 Методы форматирования UMDF для запросов ввода/вывода 328 Методы форматирования KMDF для запросов ввода/вывода 328 Параметры для методов форматирования 329 Пример UMDF: форматирование запроса на запись 329 Пример KMDF: форматирование запроса на чтение 330 Обратные вызовы для завершения ввода/вывода 331 Обработка в функции обратного вызова завершения ввода/вывода 331 Извлечение статуса завершения и другой информации 332 Отправление запросов ввода/вывода 333 Опция для отправки запросов 334 Значения тайм-аута для запросов ввода/вывода 334 Синхронные и асинхронные запросы ввода/вывода 335 Эффект, оказываемый состоянием получателя ввода/вывода 335 Опция "отправил и забыл" 336 Пример UMDF: отправка запроса стандартному получателю ввода/вывода 336 Пример KMDF: опция "отправил и забыл" 338 Пример KMDF: форматирование и отправление запроса получателю ввода/вывода 340 Разбивка запросов ввода/вывода на подзапросы 341 Пример KMDF: повторное использование объекта ввода/вывода 342 Отмена отправленного запроса 345 Пример UMDF: отмена всех запросов ввода/вывода для файла 346 Пример KMDF: отмена запросов ввода/вывода 347 Получатели ввода/вывода FileHandle в драйверах UMDF 347 Получатели ввода/вывода USB 349 Устройства USB 349 Конфигурационные дескрипторы и дескрипторы устройств 350 Модели передачи данных USB 352 Специализированные получатели ввода/вывода USB в WDF 353 Объекты устройств исполнителей USB 354 Объекты интерфейса USB 354 Объекты каналов исполнителей USB 355 Конфигурирование получателей ввода/вывода USB 355 Пример UMDF: конфигурирование получателя ввода/вывода USB 356 Пример KMDF: конфигурирование получателя ввода/вывода USB 359 Отправление запроса ввода/вывода получателю USB 363 Пример UMDF: отправление синхронного запроса получателю ввода/вывода USB 363 Пример KMDF: отправление асинхронного запроса ввода/вывода получателю USB 365 Средство непрерывного считывания USB в KMDF 368 Рекомендация для отправления запросов ввода/вывода 369 Глава 10. Синхронизация 371 Когда требуется применение синхронизации 372 Пример синхронизированного доступа к общим данным 372 Требования синхронизации для драйверов WDF 374 Возможности синхронизации, предоставляемые WDF 375 Подсчет ссылок и иерархическая объектная модель 376 Сериализация обратных вызовов функций для событий Plug and Play и энергопотребления 376 Управление потоком для очередей ввода/вывода 377 Блокировка представления объекта 377 Область синхронизации и сериализация функций обратных вызовов ввода/вывода 378 Область синхронизации на уровне устройства и методы диспетчеризации очереди 379 Область синхронизации в драйверах UMDF 382 Область синхронизации в драйверах KMDF 383 Стандартные настройки области синхронизации 385 Синхронизация на уровне устройства 385 Синхронизация на уровне очереди 385 Пример KMDF: область синхронизации 386 Автоматическая сериализация функций обратных вызовов процедурами DPC, таймерами и рабочими элементами 387 Уровни исполнения в драйверах KMDF 388 Спин-блокировки и wait-блокировки KMDF 390 Wait-блокировки 390 Спин-блокировки 391 Виды спин-блокировок 392 Пример KMDF: спин-блокировки 392 Синхронизация отмены запросов ввода/вывода в драйверах KMDF 394 Синхронизация отмены через область синхронизации 394 Синхронизация отмены с отслеживанием состояния в области контекста 395 Отмена входящих запросов синхронно с подзапросами 399 Сводка методов синхронизации и общие советы 401 Глава 11. Трассировка и диагностируемость драйверов 403 Основы программной трассировки с применением WPP 404 Преимущества программной трассировки WPP 404 Гибкое динамическое управление 404 Возможность просмотра сообщений в режиме реального времени или запись их в файл 404 Обильная информация 404 Охрана интеллектуальной собственности 405 Легкость перехода от операторов печати отладчика 405 Включение в поставляемые продукты 405 Минимальное воздействие на производительность 405 Компоненты программной трассировки WPP 405 Поставщик трассировки 406 Контроллер трассировки 406 Буфер трассировки 406 Сеанс трассировки 406 Потребитель трассировки 407 WPP и ETW 408 ETW в Windows Vista 408 Функции и макросы для работы с сообщениями трассировки 409 Макрос DoTraceMessage 410 Преобразование операторов печати отладчика в ETW 410 Условия для сообщений 410 Специальные функции сообщений трассировки 411 Поддержка программной трассировки в драйвере 411 Модифицирования файла Sources для исполнения препроцессора WPP 412 Пример UMDF: директива RUN_WPP для образца драйвера Fx2_Driver 413 Специальное сообщение трассировки драйвера Fx2_Driver 413 Пример KMDF: директива RUN_WPP для образца драйвера Osrusbfx2 414 Подключение TMH-файла 415 Пример UMDF: подключение TMH-файла 415 Пример KMDF: подключение TMH-файла 415 Определение контрольного GUID и флагов 416 Пример UMDF: определение контрольного GUID и флагов 417 Пример KMDF: определение WPP_CONTROL_GUIDS и флагов 418 Инициализация и очистка трассировки 418 Инициализация трассировки 418 Очистка после трассировки 420 Оснащение кода драйвера 422 Пример UMDF: добавление вызовов функций сообщений трассировки в код драйвера 422 Пример KMDF: добавление вызовов функций сообщений трассировки в код драйвера 422 Инструменты для программной трассировки 423 Проведение сеанса программной трассировки 424 Подготовка драйвера 424 Просмотр журнала трассировки драйвера утилитой TraceView 425 Создание и просмотр файла журнала трассировки 425 Просмотр журнала трассировки в режиме реального времени 426 Просмотр инфраструктурного журнала трассировки с помощью базовых инструментов трассировки 427 Практические рекомендации: думайте о диагностике 429 Глава 12. Вспомогательные объекты WDF 431 Выделение памяти 431 Локальное хранилище 432 Объекты памяти и буферы ввода/вывода 432 Объекты памяти UMDF и их интерфейсы 433 Объекты памяти KMDF и их методы 434 Обращение к реестру 436 Хранилище свойств устройства UMDF 436 Объекты реестра KMDF и их методы 439 Общие объекты 443 Пример UMDF: создание общего объекта 443 Пример KMDF: создание общего объекта 444 Объекты коллекции KMDF 444 Методы коллекции 445 Пример: создание и использование коллекции 446 Объекты таймера KMDF 448 Методы объекта таймера 448 Временные интервалы 449 Функция обратного вызова EvtTimerFunc 450 Пример: использование объекта таймера 450 Поддержка интерфейса WMI в драйвере KMDF 452 Работа с WMI 452 Требования для поддержки WMI 453 Инициализация поддержки WMI 454 Ресурс MOF 454 Объект поставщика WMI 454 Объекты экземпляра WMI 455 Функции обратного вызова для событий экземпляра WMI 458 Пример: запрос данных у экземпляра WMI 458 Пример: организация экземпляра WMI 459 Пример: организация элемента данных WMI 460 Глава 13. Шаблон UMDF-драйвера 462 Описание образца драйвера Skeleton 462 Образец драйвера Skeleton 463 Файлы образца драйвера Skeleton 463 Исходные файлы 463 Файлы поддержки компоновки 464 Файлы для поддержки инсталляции 464 Модификация файлов образца драйвера Skeleton под собственные требования 464 Инфраструктура DLL 465 Функция DllMain 465 Функция DllGetClassObject 466 Базовая поддержка технологии COM 467 Класс CUnknown 467 Класс CClassFactory 467 Объект обратного вызова для образца драйвера Skeleton 468 Метод CreateInstance 468 Интерфейс IUnknown 469 Интерфейс IDriverEntry 469 Необязательные интерфейсы 470 Объект обратного вызова устройства в образце драйвера Skeleton 470 Вспомогательные методы для объекта обратного вызова устройства 471 Модификация вспомогательных файлов образца драйвера Skeleton 473 Файл Sources 473 Файлы Make 474 Файл Exports 474 Файл версии ресурсов 475 Файл INX 475 Часть IV. Смотрим глубже - больше о драйверах WDF 481 Глава 14. За пределами инфраструктур 483 Использование системных сервисов, не входящих в состав инфраструктур 483 Использование функций Windows API в драйверах UMDF 484 Для драйверов UMDF, исполняющихся на Windows XP 486 Применение вспомогательных процедур режима ядра в драйверах KMDF 486 Обработка запросов, не поддерживаемых инфраструктурами 489 Обработка по умолчанию неподдерживаемых запросов 489 Обработка неподдерживаемых запросов в драйверах KMDF 490 Пример: организация функции обратного вызова предварительной обработки EvtDriverDeviceAdd 491 Пример: обработка в функции обратного вызова EvtDeviceWdmPreprocessIrp 491 Глава 15. Планирование, контекст потока и уровни IRQL 493 Потоки 494 Планирование потоков 494 Определение контекста потока 495 Контекст потока драйверных функций KMDF 496 Уровни IRQL 497 Уровни IRQL, специфичные для процессора и потока 498 Уровень IRQL PASSIVE_LEVEL 499 Уровень IRQL PASSIVE_LEVEL в критической области 500 Уровень IRQL APC_LEVEL 500 Уровень IRQL DISPATCH_LEVEL 500 Уровень IRQL DIRQL 502 Уровень IRQL HIGH_LEVEL 502 Рекомендации по исполнению на уровне IRQL DISPATCH_LEVEL или высшем 503 Вызовы функций, исполняющихся на низких уровнях IRQL 503 Сценарии прерывания потоков 504 Прерывание потока на однопроцессорной системе 504 Прерывание потока на многопроцессорной системе 505 Тестирование на наличие проблем, связанных с IRQL 507 Способы получения текущего уровня IRQL 507 Макросы PAGED_CODE и PAGED_CODE_LOCKED 508 Опции инструмента Driver Verifier 508 Рабочие элементы и драйверные потоки 509 Рабочие элементы 510 Пример KMDF: применение рабочего элемента 510 Оптимальные методики для управления контекстом потока и IRQL в драйверах KMDF 512 Глава 16. Аппаратные ресурсы и прерывания 514 Аппаратные ресурсы 514 Идентификация и освобождение аппаратных ресурсов 515 Идентификация ресурсов: подготовка аппаратного обеспечения 516 Освобождение аппаратного обеспечения 516 Списки ресурсов 517 Анализ аппаратных ресурсов драйвером 517 Платформенная независимость и отображение ресурсов драйвера 518 Пример: отображение ресурсов 519 Пример: отмена отображения ресурсов 522 Прерывания и их обработка 522 Объекты прерывания 523 Структура конфигурации объекта прерывания 524 Разрешение и запрещение прерываний 526 Обработка после разрешения и до запрещения прерываний 528 Процедуры обслуживания прерываний 529 Отложенная обработка прерываний 531 Синхронизация обработки на уровне DIRQL 532 Глава 17. Прямой доступ к памяти 533 Базовые понятия и терминология DMA 533 Транзакции DMA и передачи DMA 534 Пакетный DMA и DMA с применением общего буфера 534 Устройства DMA пакетной конструкции 535 Устройства DMA с применением общего буфера 535 Устройства DMA гибридной конструкции 535 Поддержка метода "разбиение/объединение" 535 Информация об устройстве, специфичная для DMA 536 Информация об устройстве и конструкция драйверов DMA 537 Тип конструкции DMA 537 Возможности адресации устройства 538 Аппаратная поддержка метода "разбиение/объединение" 538 Максимальный объем данных передачи 538 Требуемое выравнивание буфера 538 Факторы, не принимающиеся к рассмотрению 538 Абстракция DMA в Windows 539 Операции DMA и кэш процессора 540 Завершение передач DMA сбросом кэшей 541 Регистры отображения 541 Концепция 541 Реализация 543 Когда применять регистры отображения 543 Поддержка системного механизма "разбиение/объединение" 544 Концепция 544 Реализация 545 Передача DMA по любому адресу физической памяти 545 Концепция 546 Реализация 546 Реализация драйверов DMA 547 Инициализации драйвера DMA 548 Объект выключателя DMA 549 Объект общего буфера 549 Объект транзакции DMA 550 Пример: инициализации драйвера DMA 550 Инициирование транзакции 552 Инициализация транзакции 552 Исполнение транзакции 553 Пример: инициирование транзакции 553 Обработка запроса 555 Определение функции EvtProgramDma 555 Задачи, выполняемые функцией EvtProgramDma 556 Пример: обработка запроса 557 Обработка завершения DMA 558 Завершение передачи, транзакции и запроса 558 Пример: обработка завершения DMA 559 Тестирование драйверов DMA 560 Верификация, специфичная для DMA 560 Расширение отладчика !dma 561 Расширения отладчика KMDF для DMA 561 Рекомендации к разработке драйверов DMA 563 Глава 18. Введение в COM 564 Прежде чем приступить 564 Структура драйвера UMDF 565 Краткий обзор COM 567 Содержимое объекта COM 568 Объекты и интерфейсы 568 Интерфейс IUnknown 569 Подсчет ссылок 570 Рекомендации по использованию методов AddRef и Release 570 Подсчет ссылок 570 Использование указателей интерфейса в качестве параметров 570 Вызовы метода Release 571 Исправление ошибок со счетчиком ссылок 571 Идентификаторы GUID 572 Таблица VTables 572 HRESULT 573 Свойства и события 574 Библиотека ATL 575 Файлы IDL 575 Использование объектов COM UMDF 577 Использование объекта COM 577 Получение интерфейса через метод обратного вызова 578 Получение интерфейса через создание объекта UMDF 578 Получение интерфейса через вызов метода QueryInterface 579 Управление временем жизни объекта COM 580 Реализация инфраструктуры DLL 580 Функция DllMain 581 Функция DllGetClassObject 582 Фабрика классов 583 Реализация фабрики классов 583 Объекты, не требующие фабрики классов 585 Реализация объектов обратного вызова UMDF 586 Реализация класса для объекта COM 586 Реализация интерфейса IUnknown 587 Методы AddRef и Release 588 Функция QueryInterface 589 Реализация объектов обратного вызова UMDF 591 Часть V. Создание, установка и тестирование драйверов WDF 593 Глава 19. Сборка драйверов WDF 595 Общие положения по сборке драйверов 595 Драйверы UMDF: обстоятельства, учитывающиеся при сборке 596 Драйверы KMDF: обстоятельства, учитывающиеся при сборке 596 Введение в сборку драйверов 597 Среда сборки 597 Вспомогательные файлы утилиты Build 598 Обязательные файлы 599 Необязательные файлы 599 Ограничения на файлы проекта 600 Сборка проекта 600 Широко употребляемые флаги утилиты Build 601 Распространенные выходные файлы, создаваемые утилитой Build 601 Полезные советы для UMDF 602 Пример UMDF: сборка образца драйвера Fx2_Driver 602 Файл Sources для драйвера Fx2_Driver 602 Макросы файла Sources для драйвера Fx2_Driver 603 Номера версии UMDF 603 Стандартные выходные файлы 604 Специальные выходные файлы 604 Исходные файлы, заголовки и библиотеки 604 Конфигурация сборки 605 Файлы Makefile и Makefile.inc для драйвера Fx2_Driver 606 Сборка драйвера Fx2_Driver 606 Пример KMDF: сборка образца драйвера Osrusbfx2 607 Файл Sources для драйвера Osrusbfx2 607 Макросы файла Sources для драйвера Osrusbfx2 608 Номер версии KMDF 608 Стандартные выходные файлы 608 Специальные выходные файлы 608 Исходные файлы, заголовки и библиотеки 608 Конфигурация сборки 609 Файлы Makefile и Makefile.inc для драйвера Osrusbfx2 609 Сборка драйвера Osrusbfx2 610 Глава 20. Установка драйверов WDF 611 Основы установки драйверов 612 Ключевые задачи по установке драйверов 612 Инструменты и методы установки 612 Аспекты, принимаемые во внимание при установке драйверов WDF 613 Управление версиями WDF и установка драйверов 613 Обновления дополнительных версий 614 Обновления основных версий 614 Распространение инфраструктуры 614 Привязка драйверов к инфраструктуре 615 Драйверы KMDF 615 Драйверы UMDF 616 Пакеты соинсталляторов WDF 616 Пакет соинсталлятора UMDF 617 Пакет соинсталлятора KMDF 618 Компоненты драйверного пакета WDF 618 Создания INF-файла для драйверного пакета WDF 619 Широко применяемые разделы INF-файла 620 Инструменты для работы с INF-файлами 621 Файлы INF для разных процессорных архитектур 621 Файлы INF драйверов WDF: разделы соинсталляторов 622 Примеры INF-файлов WDF 624 Пример UMDF: INF-файл драйвера Fx2_Driver 625 Пример KMDF: INF-файл драйвера Osrusbfx2 628 Подписывание и распространение драйверного пакета 629 Подписанные файлы каталогов 629 Указание файла каталогов в INF-файле 630 Подписывание драйверов BSD 630 Распространение драйверного пакета 630 Установка драйверов 631 Факторы, принимаемые во внимание для тестовых установок 631 Факторы, принимаемые во внимание для эксплутационных установок 632 Установка драйверов с помощью менеджера PnP 632 Установка драйверов с помощью SPInst или DIFxApp 633 Установка драйверов с помощью специализированного установочного приложения 634 Установка и обновление драйверов с помощью инструмента DevCon 634 Обновление драйверов с помощью Диспетчера устройств 635 Удаление драйверов 635 Процесс установки драйверов 636 Этап 1. Установка требуемой инфраструктуры WDF (если необходимо) 636 Этап 2. Создание узла devnode для устройства 636 Этап 3. Развертывание драйверного пакета в хранилище драйверов 636 Этап 4. Установка драйвера 636 Действия по удалению драйвера 636 Удаление устройства 637 Удаление драйверного пакета из хранилища драйверов 637 Удаление двоичных файлов драйвера 637 Инструменты для удаления устройств и драйверов 638 Поиск и удаление проблем с установкой драйверов WDF 639 Поиск и исправление ошибок установки с помощью отладчика WinDbg 639 Журналы регистрации ошибок установки драйверов 640 Распространенные ошибки при установке драйверов WDF 641 Фатальные ошибки при установке 641 Коды ошибок менеджера PnP 642 Глава 21. Инструменты для тестирования драйверов WDF 644 Начало работы по тестированию драйверов 645 Выбор тестовой системы 645 Обзор инструментов для тестирования драйверов WDF 646 Методы трассировки для тестирования драйверов 646 Инструменты PREfast и SDV 647 Другие инструменты для тестирования драйверов 647 Инструмент INF File Syntax Checker (ChkINF) 648 Инструмент Device Console 648 Инструмент Device Path Exerciser 649 Инструменты Kern Rate и Kern Rate Viewer 649 Инструмент Plug and Play Driver Test 650 Инструмент Plug and Play CPU Test 651 Инструмент Memory Pool Monitor 651 Инструмент Power Management Test Tool 651 Инфраструктура WDTF 652 Инструмент Driver Verifier 654 Когда использовать Driver Verifier 654 Как работает Driver Verifier 655 Как работать с Driver Verifier 656 Использование утилиты Verifier из командной строки 656 Запуск Driver Verifier Manager 657 Примеры работы с Driver Verifier 657 Пример 1: активирование стандартных опций для нескольких драйверов 657 Пример 2: активирование специальных опций для всех драйверов 657 Пример 3: запуск и остановка проверки драйвера без перезагрузки 658 Пример 4: активирование или деактивирование опций без перезагрузки 659 Пример 5: деактивирование всех опций Driver Verifier 659 Пример 6: деактивирование Driver Verifier 659 Пример 7: эмуляция недостаточных ресурсов 659 Пример 8: принудительная проверка уровня IRQL (Force IRQL Checking) 661 Использование информации от Driver Verifier при отладке 662 Пример 1: просмотр трассировок операций стека с помощью !verifier 662 Пример 2: использование !verifier для вывода счетчиков ошибок и выделений памяти из пула 663 Инструмент KMDF Verifier 664 Когда использовать KMDF Verifier 665 Как работает KMDF Verifier 665 Как активировать KMDF Verifier 665 Использование информации от KMDF Verifier при отладке 666 Верификатор UMDF Verifier 667 Остановы bugcheck UMDF 668 Извещение об ошибках UMDF 669 Верификатор Application Verifier 669 Как работает Application Verifier 670 Использование Application Verifier для верификации драйверов UMDF 670 Оптимальные методики для тестирования драйверов WDF 671 Советы по сборке драйверов 671 Советы по использованию инструментов наилучшим образом 672 Советы для тестирования драйвера на протяжении его жизненного цикла 673 Глава 22. Отладка драйверов WDF 674 Обзор инструментов отладки для WDF 674 Отладчик WinDbg 675 Прочие инструменты 675 Трассировка WPP 676 Отладка макросов и процедур 676 Основы отладчика WinDbg 676 Проверочные и свободные версии сборок 677 Пользовательский интерфейс 677 Команды отладчика 678 Символы и исходный код 679 Расширения отладчика 681 Подготовка к отладке драйверов UMDF 682 Как разрешить отладку кода загрузки и запуска драйвера 683 Как начать отладку кода загрузки и запуска драйвера UMDF 684 Отладка исполняющегося драйвера UMDF 685 Отслеживание объектов UMDF и подсчет ссылок 686 Отладка фатального сбоя драйвера UMDF 687 Подготовка к отладке драйверов KMDF 687 Как активировать отладку режима ядра на тестовом компьютере 688 Как активировать отладку режима ядра для Windows Vista 688 Как активировать отладку режима ядра для более ранних, чем Windows Vista, версий Windows 689 Подготовка тестового компьютера к отладке драйверов KMDF 689 Как начать сеанс отладки KMDF 690 Как начать отладку фатального сбоя драйвера KMDF 692 Пошаговый разбор отладки драйверов UMDF на примере образца драйвера Fx2_Driver 692 Подготовка к сеансу отладки драйвера Fx2_Driver 692 Начало сеанса отладки для драйвера Fx2_Driver 693 Анализ процедуры обратного вызова OnDeviceAdd для драйвера Fx2_Driver 693 Исследование с помощью расширений отладчика UMDF объекта обратного вызова устройства 695 Исследование с помощью расширений отладчика UMDF запроса ввода/вывода 696 Пошаговый разбор отладки драйверов KMDF на примере образца драйвера Osrusbfx2 697 Подготовка к сеансу отладки драйвера Osrusbfx2 698 Начало сеанса отладки для драйвера Osrusbfx2 698 Анализ процедуры обратного вызова EvtDriverDeviceAdd 698 Исследование объекта устройства с помощью расширений отладчика KMDF 699 Исследование запроса ввода/вывода с помощью расширений отладчика UMDF запроса ввода/вывода 700 Просмотр сообщения трассировки с помощью WinDbg 702 Просмотр журнала KMDF с помощью WinDbg 703 Получение информации протоколирования после останова bugcheck 704 Управление содержимым журнала KMDF 705 Дополнительные предложения для экспериментирования с WinDbg 706 Глава 23. Инструмент PREfast for Drivers 707 Введение в PREfast 707 PREfast и инструмент Code Analysis для Visual Studio 708 Как работает PREfast 708 Какие ошибки может выявлять PREfast 709 Использование PREfast 710 Задание режима анализа для PREfast 710 Как запустить PREfast 710 Сборка примеров PREfast 711 Вывод на экран результатов анализа PREfast 713 Утилита прос
|
Быстрый фильтр: Книга | Windows | Driver | Foundation | | разработка | драйверов | | Орвик | |
Доставка Книга Windows Driver Foundation: разработка драйверов. Орвик почтой наложным платежом.
|
|
|
|
|
|
|
Купить книгу в разделе Книги компьютерные - Книги прочая разработка |
|
|
Книга Основы программирования для чайников. 4-е изд. Вонг |
В этой книге в популярной форме описываются базовые принципы программирования на разных языках и в разных операционных системах. Обсуждаются типы переменных, массивы, операторы цикла, компиляторы, подпрограммы, инструменты отладки, вопросы создания графических интерфейсов и программирования для Интернета. |
|
|
|
Книга Системное программное обеспечение: Учебник для вузов. 3-е изд. Молчанов |
В книге рассматриваются основные теоретические принципы и реализующие их технологии, лежащие в основе современных средств разработки программного обеспечения. В ней содержится вся необходимая информация о трансляторах, компиляторах, интерпретаторах, а также о других составляющих систем программирования, от базовых теоретических сведений до современных технологий разработки распределенных программ. |
|
|
|
|
|
|
|
|
|
|
|