Обновление драйверов UMDF во время разработки
Вопрос
У меня возникают проблемы с обновлением драйверов UMDF с использованием «DevCon» во время стандартного цикла кода-деплоя-депутата.Проблема в том, что «Обновление Devcon» на самом деле ничего не обновляет, если номер версии или дата файла DLL и файла INF не изменился из того, что хранится в папке кеша драйверов системы.После смягчающей серии экспериментов я обнаружил, что один из способов заставить вещь использовать последние файлы, - выполнить следующее:
- Измените параметры, передаваемые на «StampInf.exe» в «makefile.inc», явно установив версию с опцией «-v».
- Изменить файл скрипта ресурса ("Driver_name.rc"), чтобы сначала определить
VER_USE_OTHER_MAJOR_MINOR_VER
прежде чем включать "ntverp.h
"А потом явно определитеVER_PRODUCTMAJORVERSION
иVER_PRODUCTMINORVERSION
.Вы заметите, что эта система не позволяет нам изменить сборку и числа ревизий.На Win7 это, кажется, исправлено в 7600 и 16385 в "ntverp.h
".Это задумано?
Итак, я сначала изменяю «makefile.inc» и установил опцию «-v» на что-то вроде «1.1.7600.16385» вручную, увеличивая незначительную версию для каждой отдельной сборки, а затем изменить файл RC и обновление VER_PRODUCTMINORVERSION
с тем же номером.
В качестве альтернативы, если я запускаю командную строку в рамках системной учетной записи, иду и удаляю папку кеша драйвера в «C: Windows System32 Drivestore FileRepository Driver Palper» перед запуском «DevCon», тогда это тоже работает.
Теперь я думаю, что здесь не хватает чего -то довольно простого, так как это кажется довольно болезненным способом сделать это.Пожалуйста помоги!Спасибо!
Решение
Почему нельзя просто отключить устройство и заменить выгруженную DLL?Драйвер переустанавливать не нужно, достаточно заменить модуль.Обратите внимание, что вам не следует делать этого во время производства или чего-либо, связанного с клиентами, но если вы пишете драйвер, просто вставьте новый модуль с тем же номером версии.
В Win7 это, кажется, исправлено на 7600 и 16385 в «ntverp.h».Это задумано?
Да, по крайней мере до следующего пакета обновлений.
Другие советы
Как предположил выше Пол Беттс, кажется, что можно просто заменить DLL UMDF непосредственно в папке драйвера (например, c:\windows\system32\drivers\umdf\
) после отключения устройства либо в диспетчере устройств, либо с помощью «devcon».Я задал этот вопрос в группе новостей Microsoft по драйверам устройств, прежде чем опубликовать здесь, но не получил удовлетворительного ответа, но некоторые люди в конечном итоге ответили там. после Я разместил здесь!Поэтому я тоже дам ссылку на этот пост: