Здравствуйте, Handler, Вы писали:
H>Здравствуйте, AndrewJD, Вы писали:
AJD>>Здравствуйте, Handler, Вы писали:
H>>>Теперь самая главная проблемма — отладка!
AJD>>SoftIce тебе поможет
H>>>А так, чтобы видеть код драйвера, как в User Mode — о таких отладчиках я не слыхал. Разве что kd Microsoft — но он дает общую картину ОС.
AJD>>SoftIce показывает Debug Symbols
Да и windbg тоже. Если носом ткнуть (как, впрочем, и SoftIce).
H>>>И еще: во время тестирования драйвера если что-то пошло не так отладку завершаем, но драйвер остается в ОП. Приходиться вручную удалять запись о драйвере из реестра(HKLM/CurrentControlSet/Services/Xxx) и перезагружать машину — нудно!
Может скрипт написать ?
start /w regedit -e delmydrv.reg
[url=http://alter.org.ua/soft/win/fastreboot/freboot_v2b.rar]freboot.exe[/url] -iru
delmydrv.reg:
REGEDIT4
[-HKEY_LOCAL_MACHINE\System\CurrentControlSet\Service\MyDrv]
AJD>>Ты ставишь драйвер в режим автозагрузки
AJD>>А почему не используешь net start и net stop ?
H>Вот общая картина управляющего приложения:
H>1 OpenCSManager(...)
H>2 CreateService(...)
H>3 StartService(...)
H>4 DeleteService(...)
H>5 CloseServiceHandle(...)
H>В пункте 3 управление передается процедуре DriverEntry(...) нашего драйвера. Если в коде драйвера присутствует ошибка(99.9%), то пункты 4 и 5 не выполнятся а если и выполнятся , то повторный запуск приложения вернет GetLastError() "Данная служба помечена для удаления". Но вовпрос не в этом — это на совести писавшего код — пусть он проверяет. Странно, но WinObj Марка руссиновича наш сервис "не видит", а следим мы за ним "Пуск -> программы -> стандартные -> служебные -> Системный монитор -> программная среда -> драйверы". Скорее всего. я что-то путаю в процедуре инициализации драйвера:
H>DriverEntry(...)
H>{
H>CreateSymbolicLink(...)
H>...
H>DeleteSymbolicLink(...)
H>}
H>SoftIce я не пробовал — у меня w2k, а он под него становиться не хочет.
DriverStudio 2.5 (или 2.7). SoftIce из него ставится и замечательно работает.
И от DriverStudio 1.5 кстати тоже.
Еще вариант — поставить в DriverEntry return STATUS_SUCCESS (в самое начало). А потом постепенно двигать, пока не грохнется.
А как грохнется, поставить перед глючной строкой отладочный вывод всех используемых там переменных.
H>Все упирается в отладочные инструменты. Мне их катастрофически не хватает! Стоит пакет DDK, а есть еще "Средства отладки Windows 2000". Помогите, пожалуйста, пока я свой ПК ен угробил — человеческий фактор на него дурно влияет!!! Заранее благодарен! Алексей.
Если за тазик страшно — use VMWare

Оно к сожалению не всегда подходит, но это в основном касается железных дров.
Еще неплохое решение — скопировать свою винду на соседний раздел или в др. каталог и прописать ссылку на нее в boot.ini.
Наибольшее неудобство — копирование registry. Но эт олегко решается с помощью CopyFileEx() или уже готовой утилиты
EXTMOVE.EXE, которую можно взять например отсюда:
http://alter.org.ua/soft/win/cp866u/cp866u.rar