Code 19. MTP Device driver error.

Достаточно давно, после очередного обновления для Windows 10 Insider Preview, при подключении Android устройств для передачи файлов в режиме MTP система стала не корректно устанавливать драйвера.

При автоматическом определении устройства устанавливался драйвер с ошибкой: Код19. Windows не удается запустить это устройство, так как информация о его конфигурации в реестре неполна или повреждена. 

В диспетчере задач это отображается как:

Для решения проблемы приходилось вручную запускать установку драйверов и вместо MTP Device выбирать USB-устройство MTP, после чего телефон корректно определялся в системе и было возможно скопировать и перенести файлы.

Корректно установленный драйвер отображает следующие настройки

Как всегда решение таких проблем решается через пришедшее вдохновение «опять ***» или правильной ссылкой из поисковых систем.

Информацию об устройствах Windows хранит в inf файлах, поэтому вдохновение приказало поискать вредный inf и он был быстрой найдет через поиск текста «MTP Device» по всем INF в c:\windows\inf. В нашем случае это был oem48.inf

Теперь остается только разобраться с удалением из системы информации из oem48.inf. Просто удалить этот файл ничего не даст, так как вся информация находится в реестре.

Немного погуглив обнаруживаю возможность удаления через DISM.

Первым делом получаем информацию об установленных драйверах. Запускаем cmd от администратор и выполняем:

dism /online /get-drivers

Находим врага:

Опубликованное имя : oem48.inf

Исходное имя файла : wpdmtp.inf

Входящие : Нет

Имя класса : WPD

Имя поставщика : Microsoft

Дата : 22.02.2016

Версия : 5.2.5326.4762

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

Выполним dism /online /remove-driver /Driver:oem48.inf

Ошибка: 50

Эту команду можно использовать только с автономными образами.

Возвращаемся в поиск и находим следующее решение через devcon. К сожалению эта консольная утилита в несколько десятков килобайт входит только в WDK, Visual Studio и  Windows SDK. У меня уже был опыт её использования для отключения Bluetooth устройств.

Скачать и ознакомится с полным фукнционалом можно на https://ab57.ru/cmdlist/devcon.html

А мы воспользуемся предоставленным функционалом следующим образом:

devcon dp_delete oem48.inf 

Если удаление заблокировано устройством, тогда выполняем devcon -f dp_delete oem48.inf 

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

Удачи.

Оставьте комментарий

Ваш адрес email не будет опубликован.