Скомпилил пример из DDK - WinDDK\7600.16385.1\src\general\toaster\wdm\filter\,при загрузке драйвера через KmdManager вываливается ошибка : The service cannot be started, either because it is disabled or because it has no enabled devices...В чём может быть проблема?
Вообще-то, WDM-драйвера так не устанавливаются и не запускаются. Как делать правильно, написано здесь внизу. И насколько я помню, Toaster-фильтр устанавливается только на девайсы Toaster-драйвера, т.е. сам по себе он не предназначен для запуска, только в паре с PDO/FDO-драйверами.
x64 да,спасибо,нашёл свою ошибку. А можно узнать в какой момент будет вызывать моя AddDevice функция?-Запускаю inf файл на установку драйвера,файлы копируются в папку /drivers, но вот сам фильтр не аттачится и мой драйвер не присутствует в списках загруженных...
В момент построения стека девайсов, т.е. фактически при запуске драйвера шины и/или функционального драйвера. Разумеется, при этом драйвер-фильтр должен быть корректно установлен. Я не знаю, какие изменения ты вносил в код Toaster, но для Windows XP, например, всё просто: запускаешь Мастер установки оборудования, указываешь путь к .inf-файлам, выбираешь из списка что-то типа "Toaster Bus Enumerator with filters", указываешь путь к трём файлам (драйвер шины, драйвер верхнего фильтра и драйвер нижнего фильтра) и получаешь в итоге автоматически запущенный драйвер шины (sc query busenum), а также два запущенных драйвера фильтров (sc query bfdolwr/bfdoupr), сидящих снизу и сверху шины соответственно.
.... или как вариант лезете в реестр, находите необходимы класс устройства там и добавляете Upper/Lower filter. потом перезагружаетесь)
h0t,но если руками добавлять,то какое имя прописать в UpperFilters/LowerFilters?-В примерах это имя сервиса,который добавляется в секции DefaultInstall.Services...
имя драйвера, которое Вы в системе регистрируйте (то что в ветке Services) p.s. я точно не помню, но вроде если указать драйвер для дисковых устройств а система его не найдет то будет завис/синька.Так что будьте аккуратнее.
h0t,при установке драйвера через inf файл pnp-менеджер сам регистрирует драйвер с именем,указанным в Services-секции inf файла.В самом драйвере нет никакой регистрации.Так вот вопрос в том под каким именем прописаться в UpperFilters/LowerFilters,если не использовать inf файл?
h0t Кажится начиная с висты в реестре в таких местах только "крутые" юзеры умеют писать и удалять, так что наверное не совсем годное. AlexCasual А в inf файле посмотреть слабо? под каких он пишет , подтем и пишите.
shchetinin В чей inf файл посмотреть?! - PnP-менеджер берёт инфу из inf файла,а у нас его нет,мы пишем сами в реестр! Или я вообще уже одурел?
Я не понимаю что Вы хотите. ЕСЛИ не использовать INF файл то UpperFilters нужно прописывать ИМЯ ДРАЙВЕРА (при этом драйвер должен быть в Services ТОЖЕ)
Пример для USB: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\driver] "Type"=dword:00000001 "Start"=dword:00000000 "ErrorControl"=dword:00000000 "ImagePath"=hex(2) ..... "DisplayName"="driver" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}] "UpperFilters"="driver" Вопросы?
h0t А вот кажится больше надо прав, так как создается от имени system , а у нас по максималски admin.