Jump to content

    
Sign in to follow this  
spbroma

Проблема при развертывании драйвера (Windows 7/8.1, KMDF)

Recommended Posts

Здравствуйте!

 

У меня появилась задача написать драйвер для устройства, подключаемого к ПК через PCIe. Не имея никаких навыков работы с драйверами, после беглого изучения темы узнал, что мне нужен либо KMDF, либо WDM драйвер. Не смотря на горячие призывы работать на WDM, повелся на продвинутость с "высокоуровневостью" и решил попробовать KMDF.

 

Далее были следующие шаги:

 

1. Создал новый проект KMDF-драйвера из стандартного шаблона.

2. Указал в inf-файле путь к своему устройству, подключенному к тестовому компьютеру.

3. Сборка и развертывание.

 

Как правило, развертывание заканчивается какой-либо ошибкой и не выполняется один из этапов (или несколько). Причем, в следующий раз может случиться другая ошибка и на другом этапе. При всем при этом в самом проекте между попытками я не меняю ничего и пытаюсь установить один и тот же драйвер, на что получаю разные ошибки.

 

Однако, устройство с установленным драйвером таки появляется в диспетчере устройств, а иногда развертывание драйвера даже заканчивается успешно.

 

Какой-то особой методики и специальных мероприятий для развертывания драйвера на тестовом компьютере я в документации не нашёл, как не смог и найти какую-либо закономерность в том, следствием чего является та или иная ошибка или успешное развертывание.

 

Может быть вы подскажете, что я делаю не так?

 

Share this post


Link to post
Share on other sites
Не смотря на горячие призывы работать на WDM, повелся на продвинутость с "высокоуровневостью" и решил попробовать KMDF.

И теперь придется, скорее всего, быть первопроходцем. Расскажете потом, что это было :)

А иначе бы, подсказали бы все до самых подробностей...

Share this post


Link to post
Share on other sites
И теперь придется, скорее всего, быть первопроходцем. Расскажете потом, что это было :)

А иначе бы, подсказали бы все до самых подробностей...

 

Что-то мне подсказывает, что я еще не продвинулся так далеко, где были бы видны различия :)

 

Быть может, вы всё ее можете подсказать?

 

В шаблоне для KMDF драйвера есть заполненный inf-file с указанным ID устройства Root\"DriverName"

Когда я поменял его на ID своей платы (PCI\VEN_10EE&DEV_7083) разворачивание намертво повисло на этапе DefaultDriverPackageInstallationTask.

 

Подождав минут 10, прервал отладку, студия вылетела и перезапустилась, тестовый компьютер я ресетнул. После загрузки, я обнаружил, что драйвер встал-таки на моё устройство. Но при повторной попытки развертывания драйвера он проходит все этапы, заканчивая DriverRemoval с ошибкой. А дальше начинается чехарда.

 

Логика подсказывает, что он не может удалить драйвер. Очевидно, потому что он криво встал.

Edited by spbroma

Share this post


Link to post
Share on other sites

Проблема решена!

 

Перед этим я совершал какие-то хаотичные действия с параметрами inf-файла и установкой/удаления драйвера на тестовом компьютере, в результате чего драйвера вставали черт знает как. Сейчас перепрошил плату другим device id и все починилось. Драйвер встал без проблем, теперь можно со спокойной душой разбираться дальше.

 

PS: Не зря в последний день перед праздниками на работу пришёл :)

Edited by spbroma

Share this post


Link to post
Share on other sites

Да, ей я проверял.

 

Просто в самом начале, когда я не понимал совсем ничего, я городил в инф-е какие-то чудовищные конструкции (и тогда я его ещё не проверял) и после шаманств и удалением драйвера, перезагрузкой, повторной попыткой установки и прочего безобразия в различных комбинациях, худо-бедно драйвера в системе устанавливались и устройство определялось ими.

 

И, похоже, что-то где-то в реестре, связанное с данным id записалось не так и все стало ставиться криво.

 

Поменял ID, накатил такой же свежий драйвер и вуаля.

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this