1. Этот пример так и не заработал. Сам драйвер грузится, а ассоциированная ссылка не создается, т. е. winobj в разделе "driver" appdrv отображает, но в разделе "??" Win32Name не появляется. (Я грузил его вручную (поставил 3))
2. Я собрал пример "imca" из DDK , и вставил туда свой обработчик команд , затем произвел ту же самую последовательность действий, что и для appdrv ,- все заработало: и в разделе "driver" имя драйвера появляется, и в разделе "??" ассоциированные имена прописываются, и мой тест ioctl-а нормально сработал.
- У SoftIce кроме команды driver есть еще что-то - а то в этом случае имя *.sys файла не понятно какое.
- Я не помню какую-то софтину себе ставил (я подумал может это SoftICE Driver Suite была, сейчас не могу посмотреть - у меня CDROM не работает) , она в VC6 на "панель" ставила мастер создания драйверов, в результате работы этого мастера в рабочем пространстве создавалось два проекта один с драйвером, а другой с программой тестирования драйвера. Я вот хотел спросить, при построении проекта у меня почему-то всегда создавался только экзешник, а драйвер не строился, чтобы я не делал, может ты понял о чем это я ... ?
- Что я не так сделал ?
- Какой утилитой можно посмотреть загруженные драйвера и ассоциированные с ними имена ?
- Не мог бы кто-нибудь дать исходняк работающего драйвера ("недеструктивного" характера ;) ) и программу общения с
ним. Понимаю, что весь DDK забит примерами, но мне хотелось бы пример от "первого лица".
- Расскажите как поставить драйвер на автозагрузку
Пропустил букву01.02.03 19:00 Автор: amirul <Serge> Статус: The Elderman
> #define WIN32_DEVICE_NAME L"\\DosDevice\\Win32Name" Директория для досовских устройств (?? в NT-ях и выше) имеет симлинк \DosDevices
Короче пропустил букву - дальше не искал, мож и еще чего неправильно
> А в ответ ничего - все переменные равны 0 > > - Что я не так сделал ? > - Какой утилитой можно посмотреть загруженные драйвера и > ассоциированные с ними имена ? > - Не мог бы кто-нибудь дать исходняк работающего драйвера > ("недеструктивного" характера ;) ) и программу общения с > > ним. Понимаю, что весь DDK забит примерами, но мне хотелось > бы пример от "первого лица". А драйвер от первого лица гораздо хуже чем тот же тостер - собири его и читай комментарии в сочетании с MSDN и наступит тебе счастье :-)))
> - Расскажите как поставить драйвер на автозагрузку У драйвера есть режим загрузки (смотри ветку HKLM\SYSTEM\CurrentControlSet\Services) - записан в параметре Start: 0,1,2 - автоматическая загрузка (в чем отличие читай DDK Help), 3 - ручная, 4 - запрет загрузки.
1. Это я от безысходности все варианты пробовал ;), а такой вариант
#define WIN32_DEVICE_NAME L"\\??\\Win32Name"
у меня тоже был - результат ноль. А при открытии
\\\\.\\Win32Name
Это правильный вариант ?
2. Утилиткой drivers из DDK я увидел, что разделы "code" и "data" для моего драйвера равны нулю - это нормально ? Какая утилитка может показать ассоциированные c драйвером имена ?
3. DDK хорошо читать, когда есть от чего отталкиваться ("предварительный" опыт нужен), а у меня не от чего ... Плюс вражеский язык....
В общем если бы мне помогли и докрутили мой "юбилейный" драйвер до работающей версии (когда он возвращает что-нибудь) я бы получил 100% "предварительный" опыт ... и стал бы задавать более умные вопросы ;)
Пропустил букву02.02.03 01:59 Автор: amirul <Serge> Статус: The Elderman
> 1. Это я от безысходности все варианты пробовал ;), а такой > вариант > #define WIN32_DEVICE_NAME L"\\??\\Win32Name" > у меня тоже был - результат ноль. А при открытии > \\\\.\\Win32Name > Это правильный вариант ? Для NT-ей всех мастей правильный (для 98-й и ME - неправильный)
Вообще, чтоб лучше понять что ты делаешь скачай утилитку winobj с sysinternals.com
Кстати, заодно можешь и посмотреть загрузился ли твой дривер по тому создалась ли ссылка в директории ?? (та которая Win32Name)
> 2. Утилиткой drivers из DDK я увидел, что разделы "code" и > "data" для моего драйвера равны нулю - это нормально ? > Какая утилитка может показать ассоциированные c драйвером > имена ? Самая хорошая утилитка для этого - SoftICE. Ну а из утилиток попроще, например, DeviceTree с http://www.osr.com
> 3. DDK хорошо читать, когда есть от чего отталкиваться > ("предварительный" опыт нужен), а у меня не от чего ... > Плюс вражеский язык.... Ты что изучаешь C на примере написания драйверов???!!!!!!!!
МУЖИК! :-)))) Уважаю :-)) А что нибудь типа "Hello, world!" как же?
> В общем если бы мне помогли и докрутили мой "юбилейный" > драйвер до работающей версии (когда он возвращает > что-нибудь) я бы получил 100% "предварительный" опыт ... и > стал бы задавать более умные вопросы ;) Самое интресное, что драйвер твой должен работать. На этот раз просмотрел полностью - ничего преступного нет. Скорее всего ты его или собираешь неправильно (хотя build-ом собрать неправильно трудно :-))) ), или, скорее, запускаешь неправильно. Вообще я бы посоветовал поставить Start = 3 (DEMAND_START - ручная загрузка) и попробовать его запустить. Набрать в командной строке:
net start appdrv
Если скажет что запустился нормально запускай свой тест ioctl-а - должен сработать там просто нечему работать неправильно. :-)))
ЗЫ: Только учти, так как твой драйвер не поддерживает выгрузку - перезапустить ты его уже не сможешь (например после перекомпиляции), придется перезагружаться. При этом после установки start = 3 (глянь все-таки в HKLM\SYSTEM\CurrentControlSet\Services\AppDrv для него Start должен стоять в 3), после этого надо перезагрузиться, так как он у тебя стоит в 2 (AUTO_START) и запускается всегда, а выгрузить его уже невозможно.
ЗЗЫ: Но в общем то я еще не совсем понимаю, что это за утилса такая w2k_load. Но по идее ей по-любому нужен еще и путь к файлу (appdrv.sys - ты его где-нибуть указываешь?). Раньше я драйвера загружал утилсой instdrv из NTDDK4.0, теперь утилсой DriverMonitor из SoftICE Driver Suite
Успехов на этом поприще
Спасибо за помощь02.02.03 15:31 Автор: oleaster Статус: Незарегистрированный пользователь
1. Этот пример так и не заработал. Сам драйвер грузится, а ассоциированная ссылка не создается, т. е. winobj в разделе "driver" appdrv отображает, но в разделе "??" Win32Name не появляется. (Я грузил его вручную (поставил 3))
2. Я собрал пример "imca" из DDK , и вставил туда свой обработчик команд , затем произвел ту же самую последовательность действий, что и для appdrv ,- все заработало: и в разделе "driver" имя драйвера появляется, и в разделе "??" ассоциированные имена прописываются, и мой тест ioctl-а нормально сработал.
- У SoftIce кроме команды driver есть еще что-то - а то в этом случае имя *.sys файла не понятно какое.
- Я не помню какую-то софтину себе ставил (я подумал может это SoftICE Driver Suite была, сейчас не могу посмотреть - у меня CDROM не работает) , она в VC6 на "панель" ставила мастер создания драйверов, в результате работы этого мастера в рабочем пространстве создавалось два проекта один с драйвером, а другой с программой тестирования драйвера. Я вот хотел спросить, при построении проекта у меня почему-то всегда создавался только экзешник, а драйвер не строился, чтобы я не делал, может ты понял о чем это я ... ?
Странно, но все равно всегда пожалуйста :-))02.02.03 18:11 Автор: amirul <Serge> Статус: The Elderman
> - У SoftIce кроме команды driver есть еще что-то - а то в > этом случае имя *.sys файла не понятно какое. Набери driver без параметров. Параметр его - это имя сервиса (в твоем случае - appdrv), а не файла
> - Я не помню какую-то софтину себе ставил (я подумал может > это SoftICE Driver Suite была, сейчас не могу посмотреть - > у меня CDROM не работает) , она в VC6 на "панель" ставила > мастер создания драйверов, в результате работы этого Да это он и есть
> мастера в рабочем пространстве создавалось два проекта один > с драйвером, а другой с программой тестирования драйвера. Я > вот хотел спросить, при построении проекта у меня почему-то > всегда создавался только экзешник, а драйвер не строился, > чтобы я не делал, может ты понял о чем это я ... ? Гы, :-))). Они б хоть в мануале описали эту фичу. Дело в том, что DriverWorks - это отдельная среда для создания дриверов - и нужно собрать ее библиотеки перед использованием. Просто поищи по каталогу, куда устанавливал файлы *.dsw, *.dsp - их и надо собрать