Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Пример моего собственного сценария :)

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top