В отладчике WinDbg существует специальная возможность – мэппинг драйвера. Отладчик может перехватить момент загрузки драйвера на тестовой машине и загрузить в память копию драйвера с машины разработчика. Эта способность избавляет разработчика от проблемы копирования файла драйвера на тестовую машину и, конечно, от забывчивости.
Прежде всего, необходимо внести в переменные окружения компьютера разработчика параметр _NT_KD_FILES, где значением этого параметра должен быть полный путь до специального map-файла, например, c:\driver.map.
Далее, необходимо создать сам map-файл по выбранному пути с указанным содержимым:
map
\??\C:\1\driver32.sys
C:\project_path\out\debug\driver32.sys
Во второй строке файла необходимо указать путь до драйвера на тестовой машине (например, на VmWare) так, как он указан в реестре данного сервиса. В третьей строке необходимо указать путь до файла на машине разработчика. Удобнее всего использовать путь до директории, в которой собирается chk-билд драйвера. Тогда каждый раз при загрузке драйвера будет загружена его новая версия.
В отладчике процесс загрузки драйвера с машины разработчика на тестовую машину выглядит примерно так:
kd> g
KD: Accessing ‘C:\project_path\out \debug\driver32.sys’ (\??\C:\1\driver32.sys)
File size 91K…………………………….
MmLoadSystemImage: Pulled \??\C:\1\driver32.sys from kd
Удачной отладки!
можно прямо из отладчика:
.kdfiles -m \systemroot\system32\drivers\driver32.sys C:\1\driver32.sys
чтобы руки не ломать, можно сохранить:
.kdfiles -s drv32
а потом загружать так:
.kdfiles drv32
сбросить меппинг:
.kdfiles -c
если работать с несколькими драйверами, так может быть удобнее, чем в переменную окружения забивать
Ну и надо помнить, что так просто с бутовыми драйверами не прокатит
Угу, совершенно верно, можно и так.