80 likes | 277 Views
Санкт-Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования. Использование автогенерации кода для тестирования драйверов ОС Windows. Дипломная работа студента 545 группы Комольцева Дмитрия Владимировича
E N D
Санкт-ПетербургскийГосударственныйУниверситетСанкт-ПетербургскийГосударственныйУниверситет Математико-МеханическийФакультет КафедраСистемногоПрограммирования Использование автогенерации кода для тестирования драйверов ОС Windows Дипломная работа студента 545группы Комольцева Дмитрия Владимировича Научный руководитель: Сабашный В.Е. Рецензент: Лабутин И.А. 2008 год
Автоматическое тестирование • Быстрее, чем ручное • Некоторые области неудобно тестировать вручную • Удобно проводить регрессионное тестирование • Перехват функций • Тестирование путей обработки ошибок • Эмуляция ситуации нехватки системных ресурсов • Формирование «специфических» запросов системе
Существующая система Тестовое окружение User mode Установка параметров перехвата. Тестируемый драйвер Wrapper Операционная система Kernel mode … ExAllocatePool(…); … w_ExAllocatePool(…){ изменение параметров; задержка; ExAllocatepool(…); Возврат кодаошибки; } ExAllocatePool(…)
WDF как среда разработки драйверов OS Windows • Самая новая технология разработки драйверов от Microsoft • Поддерживаются версии Windows начиная с Windows 2000 • Kernel Mode Driver Framework и User Mode Driver Framework • Простота разработки драйверов • Берет на себя работу с PnP, WMI, DMA,... • Поддержка версий
Проблема • WDF поддерживает одновременную работу с разными версиями окружения • Требуемая версия определяется в процессе загрузки драйвера • Старый метод перехвата не работает • Требуется добавить поддержку перехвата WDF функций • Нельзя нарушать работу старой системы перехвата
Решение Wrapper Тестируемый драйвер ts_WdfDriverCreate(DG,…){ return w_WdfDriverCreate(…); } Работа… WdfDriverCreate(DG,…); Снова работа; … Kernel mode w_WdfDriverCreate (…){ Изменение параметров; ws_WdfDriverCreate (…); Возврат кода ошибки; } Операционная система WdfDriverCreate(DG,…) ws_WdfDriverCreate(…){ return WdfDriverCreate(DG, …); }
Схема генерации Заголовочные файлы Windows DDK Шаблоны функций-перехватчиков Исходные коды драйвера-перехватчика Заголовки функций Выбранные заголовки Сгенерированные функции-перехватчики для всех функций Готовый драйвер Выбранные заголовки с помеченными WDF функциями Сгенерированные функции-обертки для WDF функций
Результаты • В тестовое окружение добавлена поддержка перехвата WDF функций • Вспомогательный код генерируется автоматически • Сохранена совместимость со старыми тестами • Найдены критические ошибки в коммерческом продукте