Перейти к содержанию
    

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

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

 

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

 

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

 

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

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

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

 

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

 

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

 

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

 

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

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

 

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

 

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

Изменено пользователем spbroma

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на этапе DefaultDriverPackageInstallationTask.

Я даже не знаю, что это такое... Видимо, некая лишняя сущность, присущая KMDF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Изменено пользователем spbroma

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть полезная утилита для проверки INF:

 

"C:\Program Files (x86)\Windows Kits\8.1\Tools\x86\ChkInf\chkinf.bat”

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...