Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > драйверописательство |
Автор: nanoo 18.6.2010, 19:39 | ||||
Доброе время суток. Имеется опыт в разработке драверов под linux. Довольно большой. Встала задача написать драйвер под windows. Прочитал чуть-чуть msdn, Комисарову ну и пару тематических статей. Со всеми этими знаниямы попытался написать элементарный wdf драйвер режима ядра. Но не тут то было.
сделал build, получил mydriver.sys. копирую его в system32. После этого делаю так:
на что мне отвечают файл не найден (the system cannot find the file specified). Имена файлов и путей проверил - всё правильно (в regedit смотрел). Вопрос: Где ошибка? Что я делаю не так? Когда же я уже увижу в окне деббагера сообщение от моего драйвера? Спасибо. |
Автор: nanoo 18.6.2010, 23:40 |
Ну что, никто не знает? Или знают все, но вопрос на столько туп, что никто не хочет отвечать? ![]() |
Автор: xvr 19.6.2010, 13:13 |
Попробуйте в binpath написать полный путь (C:\win...) |
Автор: nanoo 20.6.2010, 15:01 | ||
Попробовал. В реестре появилось '\??\c:\windows\system32\mydrivers\mydriver.sys' Не работает. Симптомы точно такие же. |
Автор: xvr 20.6.2010, 21:10 | ||
Так все таки куда, в system32 или в system32\mydrivers? |
Автор: bra1ny 21.6.2010, 15:53 |
NtLoadDriver(). |
Автор: xvr 21.6.2010, 15:56 | ||
Может быть проблема с \??\ в пути - это ссылка на текущую глобальную директорию и она зависит от текущего пользователя, тут я не уверен. |
Автор: bra1ny 21.6.2010, 16:03 | ||||
сервис манагер при загрузке драйвера выызвает NtLoadDriver(). Так чтобы не париться с сервисами лучше сразу напрямую. попробуйте изменить поле ImagePath на system32\mydrivers\mydriver.sys |
Автор: nanoo 21.6.2010, 16:03 | ||||||||||||
Я в курсе, что sc использует OpenSCManager. Об этом на масм.ру пишут. Именно по этому я этот sc и использую. Я полагаю это "стандартный" способ запуска драйверов в виндовс. Пишешь в реестр данные о сервисе. Типа это дравер, лежить здесь, дополнительные параметры такие-то, там-парам. А потом sc start и всё. Но вот такая вот проблемка получается. Добавлено через 11 минут и 27 секунд
ImagePath стаяла system32\mydrivers\mydriver.sys с самого начала. Я просто не удачно выразился в первом посте. Т.е. вы предлагаете написать свою собственную програмку, которая вызывая NtLoadDriver загружает дравер сама? Я вас правильно понял? Но в документации
говориться, что эта ф-ия смотрит в реестр для того, что бы драйвер загрузить. И мне кажеться что вызов этой ф-и закончиться точно так же как и с sc start. Я вот думаю, может у меня действительно с драйвером что-то не то? Если кто писал дравейра, посмотрите пожалуйста нет ли там ошибки. |