Войти

Показать полную графическую версию : [решено] Как убрать загрузку драйвера из …\Services\Class\?


EgorS
14-08-2019, 13:04
Приветствую! История такая (это к делу не относится, просто для полноты картины). Есть у меня древний комп с Win98, щас использую его очень редко, чтобы поиграть в старые игрушки. И там есть глюк: при загрузке Win98 в момент появления Рабочего Стола частенько зависает. Проявляется это как-то бессистемно: то зависнет, то нет. Если перезагрузиться несколько раз (обычно 2-4), то в конце-концов Win98 загружается. Я не обращал на это внимания, тем более что, как уже сказал, щас юзаю этот комп очень редко. Но вот что-то решил разобраться. Да, забыл сказать, что иногда (не всегда) зависон сопровождается синим экраном с мессагой "Ошибка в драйвере DRVWQ117".

В Internet нарыл инфу, что такой зависон может быть вызван конфликтом между драйвером накопителей на магнитных лентах (DRVWQ117 это он и есть) и звуком. Там предлагается несколько решений: отключить звук старта Windows, удалить файлы DRVWQ117.VXD, DRVWPPQT.VXD, DRVWCDB.VXD.

Но мне стало интересно, как вообще это работает. Почитав "Win98 Resource Kit" (это такая справочная CHM-ка), понял так (сразу оговорюсь, что не уверен, что понял верно!). Система ищет в реестре ветки с параметром "DevLoader", затем грузит драйвер, указанный (в найденной ветке) в параметре "PortDriver".

Вот как это изложено в "Win98 Resource Kit": « Configuration Manager attempts to find any device node that has a DevLoader= entry in the registry. The device loader (in the previous example, *Ios) examines the registry, finds the PortDriver= entry, loads the driver and any associated support drivers, and initializes the adapter. »

У меня в реестре как раз есть ветка:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\TapeDetection
с параметрами DevLoader, PortDriver, откуда, видимо, и грузится этот DRVWQ117.VXD

Я решил просто удалить саму ветку TapeDetection, но после перезагрузки она опять была в реестре! Так выходит, что я не правильно понял: не драйвер грузится через реестр, а драйвер при старте прописывается в реестр откуда-то извне? (Иначе почему там восстановилась удаленная ветка).

Если кто понимает всё это, можете объяснить? Как прибить загрузку этого драйвера магнитных лент?

EgorS
25-09-2021, 19:20
Щас вот зашел сюда на OSzone (по другому поводу). Вспомнил про эту тему, как вижу, никто ничего путного не посоветовал, так что просто решил написать, что я сделал для преодоления зависона (см. описание в посте выше) -- может быть, кому-то пригодится

---

Итак. Я до конца так и не смог понять, как грузится драйвер: считывает ли его OS из реестра, или, наоборот, он при загрузке вписывается в реестр... Но удаление его веток не отключало драйвер: после перезагрузки его ветки опять были в реестре. Поэтому мне кажется, что фактом загрузки драйвера явл-ся само наличие его файлов в папке IOSUBSYS (предполагаю, что драйверы из этой папки грузятся автоматически). Таким образом, отключить загрузку драйвере можно, наверное, только физическим удалением его файлов.

Я удалил следующие файлы:

C:\Windows\System\Iosubsys\DRVWPPQT.VXD
C:\Windows\System\Iosubsys\DRVWQ117.VXD
C:\Windows\System\Iosubsys\DRVWCDB.VXD
C:\Windows\Inf\PNPWPPT.INF

А также (на всякий случай) следующие ветки реестра:

HKEY_LOCAL_MACHINE\Enum\TAPECONTROLLER
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\TapeDetection

После этого зависоны при загрузке прекратились :). Откуда я взял инфу, какие файлы удалять -- уже не помню, нарыл где-то в Internet…




© OSzone.net 2001-2012