spbroma 0 25 декабря, 2014 Опубликовано 25 декабря, 2014 · Жалоба Здравствуйте! У меня появилась задача написать драйвер для устройства, подключаемого к ПК через PCIe. Не имея никаких навыков работы с драйверами, после беглого изучения темы узнал, что мне нужен либо KMDF, либо WDM драйвер. Не смотря на горячие призывы работать на WDM, повелся на продвинутость с "высокоуровневостью" и решил попробовать KMDF. Далее были следующие шаги: 1. Создал новый проект KMDF-драйвера из стандартного шаблона. 2. Указал в inf-файле путь к своему устройству, подключенному к тестовому компьютеру. 3. Сборка и развертывание. Как правило, развертывание заканчивается какой-либо ошибкой и не выполняется один из этапов (или несколько). Причем, в следующий раз может случиться другая ошибка и на другом этапе. При всем при этом в самом проекте между попытками я не меняю ничего и пытаюсь установить один и тот же драйвер, на что получаю разные ошибки. Однако, устройство с установленным драйвером таки появляется в диспетчере устройств, а иногда развертывание драйвера даже заканчивается успешно. Какой-то особой методики и специальных мероприятий для развертывания драйвера на тестовом компьютере я в документации не нашёл, как не смог и найти какую-либо закономерность в том, следствием чего является та или иная ошибка или успешное развертывание. Может быть вы подскажете, что я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 25 декабря, 2014 Опубликовано 25 декабря, 2014 · Жалоба Не смотря на горячие призывы работать на WDM, повелся на продвинутость с "высокоуровневостью" и решил попробовать KMDF. И теперь придется, скорее всего, быть первопроходцем. Расскажете потом, что это было :) А иначе бы, подсказали бы все до самых подробностей... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spbroma 0 25 декабря, 2014 Опубликовано 25 декабря, 2014 (изменено) · Жалоба И теперь придется, скорее всего, быть первопроходцем. Расскажете потом, что это было :) А иначе бы, подсказали бы все до самых подробностей... Что-то мне подсказывает, что я еще не продвинулся так далеко, где были бы видны различия :) Быть может, вы всё ее можете подсказать? В шаблоне для KMDF драйвера есть заполненный inf-file с указанным ID устройства Root\"DriverName" Когда я поменял его на ID своей платы (PCI\VEN_10EE&DEV_7083) разворачивание намертво повисло на этапе DefaultDriverPackageInstallationTask. Подождав минут 10, прервал отладку, студия вылетела и перезапустилась, тестовый компьютер я ресетнул. После загрузки, я обнаружил, что драйвер встал-таки на моё устройство. Но при повторной попытки развертывания драйвера он проходит все этапы, заканчивая DriverRemoval с ошибкой. А дальше начинается чехарда. Логика подсказывает, что он не может удалить драйвер. Очевидно, потому что он криво встал. Изменено 25 декабря, 2014 пользователем spbroma Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 25 декабря, 2014 Опубликовано 25 декабря, 2014 · Жалоба на этапе DefaultDriverPackageInstallationTask. Я даже не знаю, что это такое... Видимо, некая лишняя сущность, присущая KMDF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spbroma 0 25 декабря, 2014 Опубликовано 25 декабря, 2014 · Жалоба Ясно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spbroma 0 30 декабря, 2014 Опубликовано 30 декабря, 2014 (изменено) · Жалоба Проблема решена! Перед этим я совершал какие-то хаотичные действия с параметрами inf-файла и установкой/удаления драйвера на тестовом компьютере, в результате чего драйвера вставали черт знает как. Сейчас перепрошил плату другим device id и все починилось. Драйвер встал без проблем, теперь можно со спокойной душой разбираться дальше. PS: Не зря в последний день перед праздниками на работу пришёл :) Изменено 30 декабря, 2014 пользователем spbroma Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dvorkin 1 30 декабря, 2014 Опубликовано 30 декабря, 2014 · Жалоба Есть полезная утилита для проверки INF: "C:\Program Files (x86)\Windows Kits\8.1\Tools\x86\ChkInf\chkinf.bat” Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spbroma 0 30 декабря, 2014 Опубликовано 30 декабря, 2014 · Жалоба Да, ей я проверял. Просто в самом начале, когда я не понимал совсем ничего, я городил в инф-е какие-то чудовищные конструкции (и тогда я его ещё не проверял) и после шаманств и удалением драйвера, перезагрузкой, повторной попыткой установки и прочего безобразия в различных комбинациях, худо-бедно драйвера в системе устанавливались и устройство определялось ими. И, похоже, что-то где-то в реестре, связанное с данным id записалось не так и все стало ставиться криво. Поменял ID, накатил такой же свежий драйвер и вуаля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться