Kernel Mode
От: Handler Украина  
Дата: 06.03.05 17:03
Оценка:
Я Вам еще не надоел со "своим" ядром? К счастью, с написанием драйверов у меня все наладилось. Теперь самая главная проблемма — отладка! Управляющее приложение Мы запускаем под отладчиком 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...
Re: Kernel Mode
От: AndrewJD США  
Дата: 06.03.05 17:46
Оценка:
Здравствуйте, 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."
Re[2]: Kernel Mode
От: Handler Украина  
Дата: 09.03.05 07:48
Оценка:
Здравствуйте, 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) и перезагружать машину — нудно!

Может скрипт написать ?

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
Re[3]: Kernel Mode
От: Shuichi  
Дата: 10.03.05 07:59
Оценка:
Здравствуйте, Handler, Вы писали:

H>SoftIce я не пробовал — у меня w2k, а он под него становиться не хочет. Все упирается в отладочные инструменты. Мне их катастрофически не хватает! Стоит пакет DDK, а есть еще "Средства отладки Windows 2000". Помогите, пожалуйста, пока я свой ПК ен угробил — человеческий фактор на него дурно влияет!!! Заранее благодарен! Алексей.


У меня SoftIce прекрасно поставился... только надо как рекомендуется, без GUI при загрузке, и исправить в его настройках клавиатуру...
стрянно...
Re[4]: Kernel Mode
От: Handler Украина  
Дата: 18.03.05 07:43
Оценка:
Здравствуйте, 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...
Re[5]: Kernel Mode
От: TarasCo  
Дата: 18.03.05 08:17
Оценка:
Здравствуйте, 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 нажимать не пробывали?
Да пребудет с тобою сила
Re[6]: Kernel Mode
От: Handler Украина  
Дата: 19.03.05 07:15
Оценка:
Здравствуйте, 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...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.