Повторное сканирование дерева устройств на предмет изменений оборудования во время установки драйвера.

StackOverflow https://stackoverflow.com/questions/2145207

Вопрос

я использую УстановитьЩит для установки моего приложения, драйвера и службы.Мне нужно установить драйвер Plug-N-Play, только если его идентификатор оборудования был найден в диспетчере устройств.Установка драйвера осуществляется с помощью DPInst.exe.Моя проблема заключается в том, что пользователь может иногда вручную удалить драйвер (после его установки или даже удалить «Неизвестный водитель» под "Другие устройства"), а потом не могу найти идентификатор оборудования в дереве устройств, хотя устройство подключено.Если я повторно просканирую дерево устройств во время установки, используя CM_Reenumerate_DevNode_Ex (Кодовый эквивалент «Сканировать новое оборудование»), я могу найти идентификатор оборудования, но при этом появляется «Мастер установки нового оборудования».

Есть ли способ пересканировать дерево устройств, но подавить «Мастер установки нового оборудования» или чтобы избежать повторного сканирования, но при этом убедиться, что идентификатор оборудования моего устройства присутствует в системе?

Это было полезно?

Решение

Пишу новый ответ, так как к моему старому уже слишком много комментариев, а его содержание основано на небольшом непонимании ситуации.

Настоящая проблема, насколько я понимаю сейчас, заключается в мастере «Добавление нового оборудования», который появляется при повторном сканировании устройств. до установка вашего драйвера.К сожалению, этот мастер появляется всякий раз, когда не найден подходящий драйвер для работы с новым устройством в системе, поэтому единственный вариант решения этой проблемы — убедиться, что такой драйвер существует в системе.Это приводит к двум возможным решениям, которые я вижу:

  1. Выполните первую установку программного обеспечения и убедитесь, что ваш драйвер подходит для устройства (информация имеет правильный формат, и у вас есть подпись WHQL).Насколько я понимаю, это не вариант, потому что вы не хотите устанавливать драйвер на машины, к которым не подключено устройство (хотелось бы услышать, почему).
  2. Убедитесь, что какой-либо другой драйвер в системе подходит для этого.В этом случае вам нужно выбрать один из встроенных драйверов (тот, который не вызвал бы хаоса, если бы он действовал как функциональный драйвер для вашего устройства) и присвоил вашему устройству соответствующий совместимый идентификатор, который мог бы вызвать встроенный драйвер будет найден подходящим.Таким образом, вам не придется ждать пользователя после повторного сканирования устройств, но в зависимости от вашего устройства поиск подходящего встроенного драйвера может оказаться невозможным.

Другие советы

Похоже, вы идете по неправильному пути.Если у вас установка на основе MSI, почему бы не использовать DIFxApp вместо DPInst?Что касается мастера «Найдено новое оборудование», то здесь вам понадобятся две вещи:

  1. Убедитесь, что ваш inf-файл верен (чтобы ваш драйвер был связан с идентификатором оборудования)
  2. Получите подпись WHQL от MS.Этот шаг необходим для XP, так как ненадежные драйверы не будут автоматически назначены устройствам.В Vista и 7 вы можете самостоятельно подписать драйвер цифровой подписью, но во время установки вы получите предупреждение, спрашивающее пользователя, желает ли он/она доверять этому издателю (вам).
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top