Пижу драйвер (ВДМ) под устройство для ХР. Вытыкаю устройство меняю драйвер в систем32/драйверс - втыкаю устройство. Нифига - грузится старый. Перегружаюсь - те же грабли. Кто нибудь разбирался с подобными механизмами?
Устройсво удалить недостаточно, надо остановить серсис функцией ControlService, только после этого можно менять файл.
Если сменить сначало файло, а потом сервис рестартонуть то тоже сканает. Замены дайвера + перезагрузка впринципе должно хватать. А вот если он пишет свой драйвер, и у винды реально нет соображений откуда скопировать оригинал, то вот тут все непонятно. Может проблема не до конца разжована просто. Xornet, распиши поподробнее. Если всеже подменяешь чейто драйвер, смотри INF файл, особенно секцию что копировать и куда, и на всякий случай запрячь подальше родные дровья от винды.
2Volodya Меняю родной драйвер поэтому молчит файлпротект (я так понял он только за своими следит). Драйвер WDM - и по хорошему должен выгружаться когда счетчик ссылок упадет. Сервис драйвера имеет старт тип 3 - те ручной. Т.к с драйвером работает мой же сервис который открывает объект файл то я допускаю что вытягивания устройства может нехватитьоказаться недостаточно. Но как он не грузится после перезагрузки? Это вопрос не ясный. Вернее даже не так - откуда винда старый драйвер берет? В dllcache его нет - я смотрел. Внутренний голос подсказывает что ошибка в человеческом факторе - поэтому буду все перепроверять просто думал может кто сталкивался с подобным...
Может берёт из Winnt\Driver Cache\i386 , а может и из HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\[So urcePath] , смотря что значит "родной драйвер" . В любом случае сделай поиск по имени файла .
Да - такое забавное поведение ни что иное как человеческая ошибка Инсталлер для драйвера делал не я посему искал по обыкновению там где ему и должно. А он его туда копирует но сервис запускает с Program Files. Вот такая вот непонятка вышла