Re[3]: Kernel Mode
От: Аноним  
Дата: 09.03.05 08:16
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.