Автоматизация тестирования драйверов Win32

Кто-нибудь знает способы частично или полностью автоматизировать установку драйвера?

Я новичок в разработке драйверов и привык к более опытному подходу на языках более высокого уровня, поэтому переход к той среде, где я не могу легко протестировать, поскольку я иду, стал для меня шагом. Я использую Virtual PC для своей тестовой среды и в настоящее время должен reset, открыть диспетчер устройств, выбрать устройство, щелкнуть кучу "Вы действительно уверены, что не хотите устанавливать один из этих системных драйверов"?, затем, наконец, reset тестовую среду при перезапуске WinDbg на главной машине, так же, как тестовая среда загружается... argh.

Повторяя этот процесс много-много раз, наверняка, должен быть лучший способ сделать это? Какие инструменты/методы/трюки используются разработчиками коммерческих драйверов для запуска своего драйвера в тестовой среде?

Обратите внимание, что речь идет не о драйверах модульного тестирования, я еще не дошел до этого этапа или знаю, возможно ли это. Это просто запуск тестовой среды с помощью WinDbg, чтобы убедиться, что некоторые небольшие изменения, которые я, возможно, сделал, делают то, что я ожидаю.

Ответ 1

Мне кажется, что программное обеспечение для виртуализации + mock objects" (расслоение) подход (как было предложено Аароном Дигуллой) + скрипты ( как предложил Сергий) может упростить разработку драйверов устройств.

Но если вы используете Visual Studio для разработки приложений на уровне пользователя, вы можете использовать его также для разработки драйверов ядра с помощью VisualDDK ( + VirtualKD для отладки по именованному каналу, который быстрее, чем через виртуальный COM-порт), в котором конкретно рассматриваются неприятности, о которых вы упоминаете; со своей домашней страницы:

... Этот проект приносит простоту и удобство приложения Windows разработка драйверов Мир. Нет более ручного создания создавать скрипты, копировать драйвер файлы, установки драйверов из INF, переключение между WinDbg и редактор исходного кода или ожидание секунд после каждого шага из-за чрезмерно медленного виртуальный COM-порт. Просто создайте драйвер проект с использованием удобного драйвера Мастер, выберите виртуальную машину и наслаждаться отладкой вашего драйвера напрямую из Visual Studio. Хотите проверить изменение? Просто нажмите Shift-F5, изменить свой драйвер, перестроить его и снова запустить. VisualDDK выгрузит старый драйвер, установите новый и загружать его автоматически и быстро. Скучно с WinDbg загружать файлы символов за минуты и поиск символов для секунд? Просто позвольте VisualDDK оптимизировать это для вас, используя собственную DIA-основанную символ двигатель. Использование С++/STLPort в ваши водители? VisualDDK будет изначально визуализировать все контейнеры STL и строки, так же, как Visual Studio для приложений пользовательского режима....

Ответ 2

Вы можете написать сценарии оболочки (используя sc.exe и devcon.exe) для автоматизации задач развертывания (без открытия диспетчера устройств, нажатия кнопок и т.д.). И сделайте снимок системы готов к отладке (не нужно ждать загрузки системы).

Не забудьте проверить свой драйвер с помощью DriverVerifier!

Пример моего собственного script:)

sc create FsFilter type= filesys binPath= c:\FSFilterDrv.sys
sc start FsFilter
pause
sc stop FsFilter
sc delete FsFilter

Ответ 3

Следуйте советам, которые я дал здесь. В принципе, проверьте как можно меньше с реальной системой.

В вашем случае у меня есть еще один совет: Virtual PC использует виртуальный жесткий диск (вероятно, файл на вашем реальном жестком диске).

Вам не нужно устанавливать драйвер, вы можете просто заменить новые файлы на виртуальном жестком диске. Это часто невозможно в запущенной системе, но в виртуальной системе вы можете открыть файл виртуального диска и изменить его (поскольку Windows не блокирует файлы в нем).

Я не уверен в Virtual PC, но у других эмуляторов есть инструменты для работы с изображениями виртуальных дисков. Если VPC не может этого сделать, проверьте VirtualBox.

Ответ 4

Все зависит от того, какой драйвер вы пишете. Но во многих случаях запись подходящего make файла (или чего-то подобного), который обрабатывает установку драйвера, запуск/остановку и запуск тестового жгута, может быть уже достаточно хорошим.

Я также настраиваю все свои тестовые машины для автоматического входа в систему (AutoAdminLogon), сетевых сетевых дисков и запуска соответствующей командной строки после запуска. Запуск определенного теста - это вопрос ввода только одной команды.

Одно слово относительно VirtualPC: VirtualPC очень удобно для разработки режима ядра, но не забывайте, что он эмулирует только однопроцессорную машину - так что обязательно регулярно проверяйте код на многопроцессорной машине. Тем не менее, трюк VHD может показаться удобным, но он несколько связывает вас с Virtual PC - написание соответствующих скриптов, которые одинаково работают на VirtualPC, как на реальной машине, поэтому кажется лучшим подходом ко мне.

Наконец, рассмотрим это бесстыдный плагин, но если вы ищете модульную тестовую среду для кода режима ядра Windows, я написал один: cfix.

Ответ 5

Я думаю, что утилита DevCon (описанная в эта статья OSR Online) поможет вам. Вы должны иметь возможность настроить пакетные файлы, которые выполняют задание одним щелчком мыши.

Бесплатно зарегистрироваться в osronline.com, и вам, вероятно, придется зарегистрироваться, чтобы перейти к этой статье. И если вы пишете водителей, вы ХОТИТЕ зарегистрироваться. Эти парни делали это в течение долгого времени, и там много хорошей информации на этом веб-сайте.