Я Вам еще не надоел со "своим" ядром? К счастью, с написанием драйверов у меня все наладилось. Теперь самая главная проблемма — отладка! Управляющее приложение Мы запускаем под отладчиком VC++6.0. А вот драйвер находится вне контроля — что он там делает — знает только он. Хочет — исходники в бинарные файлы превращает, а хочет — посылает(пока не меня) печать на принтер!? Есть программа DebugView — но она отображает лишь наши сообщения DebugPrint(), которые мы помещаем в коде драйвера. Подобный вид отладки мне напоминает оладку INF-файлов — попадаем на данную ветку или нет. А так, чтобы видеть код драйвера, как в User Mode — о таких отладчиках я не слыхал. Разве что kd Microsoft — но он дает общую картину ОС. И еще: во время тестирования драйвера если что-то пошло не так отладку завершаем, но драйвер остается в ОП. Приходиться вручную удалять запись о драйвере из реестра(HKLM/CurrentControlSet/Services/Xxx) и перезагружать машину — нудно! Нет ли подручных средств, осуществляющих управление сервисами и где можно их достать, Заранее благодарен! Алексей. Днепр.
Whoa...I did a 'zcat /vmlinuz > /dev/audio' and I think I heard God...
Здравствуйте, Handler, Вы писали:
H>Теперь самая главная проблемма — отладка!
SoftIce тебе поможет
H>А так, чтобы видеть код драйвера, как в User Mode — о таких отладчиках я не слыхал. Разве что kd Microsoft — но он дает общую картину ОС.
SoftIce показывает Debug Symbols
H>И еще: во время тестирования драйвера если что-то пошло не так отладку завершаем, но драйвер остается в ОП. Приходиться вручную удалять запись о драйвере из реестра(HKLM/CurrentControlSet/Services/Xxx) и перезагружать машину — нудно!
Ты ставишь драйвер в режим автозагрузки
А почему не используешь net start и net stop ?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, AndrewJD, Вы писали:
AJD>Здравствуйте, Handler, Вы писали:
H>>Теперь самая главная проблемма — отладка!
AJD>SoftIce тебе поможет
H>>А так, чтобы видеть код драйвера, как в User Mode — о таких отладчиках я не слыхал. Разве что kd Microsoft — но он дает общую картину ОС. AJD>SoftIce показывает Debug Symbols
H>>И еще: во время тестирования драйвера если что-то пошло не так отладку завершаем, но драйвер остается в ОП. Приходиться вручную удалять запись о драйвере из реестра(HKLM/CurrentControlSet/Services/Xxx) и перезагружать машину — нудно!
AJD>Ты ставишь драйвер в режим автозагрузки AJD>А почему не используешь net start и net stop ?
Вот общая картина управляющего приложения:
1 OpenCSManager(...)
2 CreateService(...)
3 StartService(...)
4 DeleteService(...)
5 CloseServiceHandle(...)
В пункте 3 управление передается процедуре DriverEntry(...) нашего драйвера. Если в коде драйвера присутствует ошибка(99.9%), то пункты 4 и 5 не выполнятся а если и выполнятся , то повторный запуск приложения вернет GetLastError() "Данная служба помечена для удаления". Но вовпрос не в этом — это на совести писавшего код — пусть он проверяет. Странно, но WinObj Марка руссиновича наш сервис "не видит", а следим мы за ним "Пуск -> программы -> стандартные -> служебные -> Системный монитор -> программная среда -> драйверы". Скорее всего. я что-то путаю в процедуре инициализации драйвера:
DriverEntry(...)
{
CreateSymbolicLink(...)
...
DeleteSymbolicLink(...)
}
SoftIce я не пробовал — у меня w2k, а он под него становиться не хочет. Все упирается в отладочные инструменты. Мне их катастрофически не хватает! Стоит пакет DDK, а есть еще "Средства отладки Windows 2000". Помогите, пожалуйста, пока я свой ПК ен угробил — человеческий фактор на него дурно влияет!!! Заранее благодарен! Алексей.
Whoa...I did a 'zcat /vmlinuz > /dev/audio' and I think I heard God...
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) и перезагружать машину — нудно!
Может скрипт написать ?
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
Здравствуйте, Handler, Вы писали:
H>SoftIce я не пробовал — у меня w2k, а он под него становиться не хочет. Все упирается в отладочные инструменты. Мне их катастрофически не хватает! Стоит пакет DDK, а есть еще "Средства отладки Windows 2000". Помогите, пожалуйста, пока я свой ПК ен угробил — человеческий фактор на него дурно влияет!!! Заранее благодарен! Алексей.
У меня SoftIce прекрасно поставился... только надо как рекомендуется, без GUI при загрузке, и исправить в его настройках клавиатуру...
стрянно...
Здравствуйте, Shuichi, Вы писали:
S>Здравствуйте, Handler, Вы писали:
H>>SoftIce я не пробовал — у меня w2k, а он под него становиться не хочет. Все упирается в отладочные инструменты. Мне их катастрофически не хватает! Стоит пакет DDK, а есть еще "Средства отладки Windows 2000". Помогите, пожалуйста, пока я свой ПК ен угробил — человеческий фактор на него дурно влияет!!! Заранее благодарен! Алексей.
S>У меня SoftIce прекрасно поставился... только надо как рекомендуется, без GUI при загрузке, и исправить в его настройках клавиатуру... S>стрянно...
Нет, проблеммы на этом не закончились! Поставил SoftICE — все класс, пока не решил запустить его (из-под XP). Пишем NET START NTICE, а он нам отвечает — Не найдена указанная процедура. Драйвер NTICE.SYS загружен, только стартовать не хочет — по всей видимости, он просто испорчен. Пробовал запустить своим приложением — StartService(...) — Вернул "не найдена указанная прцедура" — просто нет DriverEntry(...)! Может, можно где-то скачать рабочий NTICE.SYS — без него работа стоит! HELP!
Whoa...I did a 'zcat /vmlinuz > /dev/audio' and I think I heard God...
Здравствуйте, Handler, Вы писали:
H>Здравствуйте, Shuichi, Вы писали:
S>>Здравствуйте, Handler, Вы писали:
H>>>SoftIce я не пробовал — у меня w2k, а он под него становиться не хочет. Все упирается в отладочные инструменты. Мне их катастрофически не хватает! Стоит пакет DDK, а есть еще "Средства отладки Windows 2000". Помогите, пожалуйста, пока я свой ПК ен угробил — человеческий фактор на него дурно влияет!!! Заранее благодарен! Алексей.
S>>У меня SoftIce прекрасно поставился... только надо как рекомендуется, без GUI при загрузке, и исправить в его настройках клавиатуру... S>>стрянно...
H>Нет, проблеммы на этом не закончились! Поставил SoftICE — все класс, пока не решил запустить его (из-под XP). Пишем NET START NTICE, а он нам отвечает — Не найдена указанная процедура. Драйвер NTICE.SYS загружен, только стартовать не хочет — по всей видимости, он просто испорчен. Пробовал запустить своим приложением — StartService(...) — Вернул "не найдена указанная прцедура" — просто нет DriverEntry(...)! Может, можно где-то скачать рабочий NTICE.SYS — без него работа стоит! HELP!
Возможно, SoftIce у Вас в режиме бутовой загрузки и поэтому не реагирует на команду netstart. ctrl+D нажимать не пробывали?
Здравствуйте, TarasCo, Вы писали:
TC>Здравствуйте, Handler, Вы писали:
H>>Здравствуйте, Shuichi, Вы писали:
S>>>Здравствуйте, Handler, Вы писали:
H>>>>SoftIce я не пробовал — у меня w2k, а он под него становиться не хочет. Все упирается в отладочные инструменты. Мне их катастрофически не хватает! Стоит пакет DDK, а есть еще "Средства отладки Windows 2000". Помогите, пожалуйста, пока я свой ПК ен угробил — человеческий фактор на него дурно влияет!!! Заранее благодарен! Алексей.
S>>>У меня SoftIce прекрасно поставился... только надо как рекомендуется, без GUI при загрузке, и исправить в его настройках клавиатуру... S>>>стрянно...
H>>Нет, проблеммы на этом не закончились! Поставил SoftICE — все класс, пока не решил запустить его (из-под XP). Пишем NET START NTICE, а он нам отвечает — Не найдена указанная процедура. Драйвер NTICE.SYS загружен, только стартовать не хочет — по всей видимости, он просто испорчен. Пробовал запустить своим приложением — StartService(...) — Вернул "не найдена указанная прцедура" — просто нет DriverEntry(...)! Может, можно где-то скачать рабочий NTICE.SYS — без него работа стоит! HELP!
TC>Возможно, SoftIce у Вас в режиме бутовой загрузки и поэтому не реагирует на команду netstart. ctrl+D нажимать не пробывали?
Пробовал и из BOOT и из MANUAL — не работает. Да и какая разница, если даже прямым вызовом StartService(...) не запускается. Если бы сервис выполнялся то данная процедура вернула бы GetLastError(...) — "Данный сервис уже выполняется", а она возвращает "Не найдена указанная процедура", причем сам NTICE.SYS загружен.И что интересно: ни IDA, ни W32DASM не могут правильно его дизассемблировать — не находят EnryPoint! Где можно скачать рабочий NTICE.SYS(он меньше "метра")?
Whoa...I did a 'zcat /vmlinuz > /dev/audio' and I think I heard God...