Порядок загрузки драйверов windows


Двоичная переменная представляет из себя набор двойных слов (по 4 байта каждое).

Первое слово (выделено на рисунке красной рамкой) задает общую длину переменной (количество двойных слов)

Остальные двойные слова как раз и являются тэгами.

Тэг, равный единице, выделен зеленой рамкой, двойке — синей.

Закономерность тут простая:

Чем левее расположен тэг тем выше его приоритет в группе.

Тем выше приоритет драйвера, у которого такой тэг имеется.


На приведенном выше рисунке видно, что приоритет тэга 01 выше, чем у тэга 02. Самым высоким приоритетом в этой группе обладает тэг 08 (выделен желтой рамкой).


Кстати, в группе драйверов могут встречаться драйвера с одинаковыми тэгами.
Как в таком случае определяется очередность — мне не известно.

Итак.

Условно представим, что у нас есть:

1) драйвер A, принадлежащий группе драйверов Gr1

2) драйвер В, принадлежащий группе драйверов Gr2

3) приоритет Gr1 > Gr2

Из пункта (3) следует, что приоритет драйвера A выше, чем у B, т.е. драйвер A будет загружен раньше драйвера B.

Нам нужно добиться, чтобы драйвер B грузился раньше A.

Возможные варианты (первые два, пришедшие в голову):

1) изменить приоритет групп драйверов в списке ServiceGroupOrder > List

a) либо повысить приоритет Gr2 (сделать выше, чем у Gr1)

b) (зеркальный вариант) либо понизить приоритет Gr1 (сделать ниже, чем у Gr2)

Оба варианта одинаково плохи, особенно, если каждая из групп содержит больше одного драйвера. Ведь не всегда с уверенностью можно сказать, как на такое перемещение отреагируют остальные драйвера группы.

2) переместить один из драйверов в другую группу:

a) переместить драйвер B в группу Gr1 и присвоить ему более приоритетный Tag, чем у драйвера A.

b) (зеркальный вариант) переместить драйвер B в группу Gr2 и присвоить ему менее приоритетный Tag, чем у драйвера A.

ИМХО, самый оптимальный вариант 2a. Ему я и буду следовать на практике.

ПРАКТИКУМ

Настало время перейти к практике.

Как я уже упоминал в самом начале статьи, весь сыр-бор был затеян из-за того, что
драйвера винды определяли IDE-контроллер раньше, чем драйвер WpcrSet успевал изменить его идентификационные регистры, что приводило к некоторым неудобствам.

Как оказалось, под термином »
драйвера винды» скрывался вполне конкретный »
Драйвер PCI шины«. (
Вы, наверное, догадались, что не зря он присутствует почти на всех вышеприведенных скриншотах ;-) )

Иначе говоря, возникла острая необходимость в запуске драйвера WpcrSet

раньше

драйвера PCI.

Настройки драйвера PCI:

1. Драйвер принадлежит группе »
Boot Bus Extender«.

2. Параметр
Tag у драйвера равен двум (02h).

Настройки драйвера WpcrSet по-умолчанию:

Видно, что:

1. Драйвер принадлежит группе »
Extended Base«.

2. У драйвера напрочь отсутствует параметр
Tag, что говорит о его наименьшем приоритете даже в пределах родной группы.

На следующем этапе выясняем, приоретет какой группы (Boot Bus Extender / Extended Base) выше:

System Reserved

Boot Bus Extender
System Bus Extender
SCSI miniport
Port
Primary Disk
[...]
NetworkProvider
RemoteValidation
NetDDEGroup
Parallel arbitrator
Extended Base
PCI Configuration
MS Transactions

Видно, что группа
Boot Bus Extender вторая от начала, а
Extended Base — третья с конца. Следовательно приоритет
Boot Bus Extender гораздо выше.

Поэтому первым делом переносим драйвер WpcrSet в группу
Boot Bus Extender. Для этого меняем параметр »
Group» с
Extended Base на
Boot Bus Extender:

Теперь требуется выставить Tag для драйвера WpcrSet. Причем такой, чтобы его приоритет был выше приоритета тэга драйвера PCI (Tag=02h).

Для этого смотрим на содержимое переменной »
Boot Bus Extender» в разделе [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrderList]


Видно, что приоритет тэгов 01h,06h,07h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,08h выше приоритета тэга 02h. Поэтому в качесве тэга для WpcrSet можно выбрать один из вышеперечисленных. Но не будем жадничать (и рисковать
), возьмем Tag=01h.

    Note: На практике могла возникнуть ситуация, когда тэг драйвера PCI оказался бы наиболее приоритетным. т.е. самым левым в списке. Тогда перед ним нам пришлось бы добавить еще дополнительный тэг. При этом первое двойное слово в списке, задающее количество тэгов, пришлось бы увеличить на единицу.

Создадим в разделе WpcrSet параметр типа DWORW и занесем в него шестнадцатиричное значение =1:


Ну, вот и все. Настройки WpcrSet теперь выглядят так:

Теперь, перекрестясь
, можно перезагружать компьютер и наблюдать за изменениями.


Note: Искренне надеюсь, что перед тем, как лезть в реестр, вы предварительно забакапились. Ибо еще раз повторяю: я снимаю с себя всю ответственность за то, что вы учините со своим компьютером, начитавшись моих «статей»!

Не знаю, как у Вас, а у меня все прошло просто замечательно. Драйвер WpcrSet стартовал раньше остальных драйверов и сделал свое черное дело точно и главное вовремя
.

Так что на сегодняшний день вопрос о порядке старта драйверов в системе можно считать разрешенным.

Пара слов про старморс

Так что «полуавтоматический способ», описанный в статье
SiliconImage vs. StarForce, стал, наконец, полностью
атоматическим !

Теперь владельцы контроллера на чипе SiliconImage
SiI0680, один раз настроив WpcrSet (забив регистры и изменив порядок старта драйверов) могут надолго забыть о просьбах старморса переставить диск в другой привод! Также они спокойно могут использовать RMPS диски !

Стоят ли эти бонусы времени, затраченного на понимание материала двух статей, решать Вам самим.

    NOTE: (для ленивых) описанные в статье манипуляции с реестром можно заменить одним REG-файлом следующего содержания:

    REGEDIT4
    
    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\WPCRSET]
    "Group"="Boot Bus Extender"
    "Tag"=dword:00000001


    Минусы способа с использованем REG-файла.

    В 90% случаев способ с приведенным регфайлом прокатит.

    Но никто не гарантирует что:

    * у тэга=1 приоритет выше, чем у тэга PCI драйвера;

    * что тэг=1 вообще продекларирован в
    GroupOrderList.

    Так что не забывайте об этих ограничениях.


    Регфайл выложил так же в своем файловом архиве, т.е. здесь (0.8Кб)

ЗЫ: Чуть не забыл! Существует хорошая программа для контролирования порядка загрузки драйверов Windows.

Называется она
LoadOrder (17Кб, автор Bryce Cogswell,
сайт)

Так что тем, кто задумает претворить в жизнь описанные в этой статье рекомендации, программа LoadOrder позволит проконтролировать правильность своих действий.

К сожалению, программа не позовляет изменить существующий порядок загрузки, только отобразить. Но и это, согласитесь, уже неплохо.

Короче, рекомендую

За наводку на столь полезную тулзу СПАСИБО все тому же участнику форума
Cuddles! Пользуясь случаем, еще раз выражаю этому человеку, который первым же своим сообщением в форуме помог разрешить серьезную проблему, свой искренний РЕСПЕКТ!.

Обсудить эту и другие статьи/записи с моей персональной страницы можно
в соответствующей ветке конференции.

Все способы:

  • Последовательность установки ПО
    • Чипсет
    • Видеокарта
    • Сетевые драйвера (LAN-карта и адаптер Wi-Fi)
    • Звуковой чип
    • Bluetooth
    • Остальное оборудование
    • Заключение
  • Вопросы и ответы: 1

Обычно новые ноутбуки большинства производителей идут с предустановленной операционной системой и подходящими драйверами для всего аппаратного обеспечения. Однако после переустановки ОС драйвера требуется установить заново, и сегодня мы хотим познакомить вас с порядком инсталляции служебного ПО.

Последовательность установки ПО

Наверняка многие пользователи скажут, что порядок установки драйверов не слишком важен. В некоторых случаях это справедливо, однако порой некорректная последовательность может привести к неработоспособности тех или иных компонентов – беспроводных адаптеров или видеокарты. Во избежание подобного следует инсталлировать драйвера в предложенном нами порядке.

Чипсет

Чипсет (chipset) представляет собой вторую по важности микросхему на материнской плате ноутбука – фактически, это средство управления всем встроенным оборудованием. Следовательно, если не устанавливать ПО для этого компонента первым, могут проявиться проблемы в работе контролируемого им «железа».

Установка драйверов чипсета ноутбука

Видеокарта

Второй по важности драйвер, который следует установить – ПО видеокарты. Обычно сразу после установки Виндовс используется базовый драйвер, но он очень ограничен (не поддерживает разрешения выше 800×600). Для комфортной работы лучше будет инсталлировать драйвер GPU сразу.

Установка драйверов для видеокарты ноутбука

Читайте также: Обновление драйверов для видеокарты

Сетевые драйвера (LAN-карта и адаптер Wi-Fi)

Наличие на целевом компьютере доступа к интернету здорово облегчит дальнейшую работу, позволяя уже на нём проводить операцию загрузки ПО. Рекомендуем первым инсталлировать драйвер сетевой карты, затем – беспроводного адаптера.

Звуковой чип

Дальше рекомендуем установить программное обеспечение для звукового устройства – если установить его после, могут появиться проблемы с работой этого компонента, особенно если используется программная надстройка от производителя.

Установка драйверов звуковой карты ноутбука

Bluetooth

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

Читайте также: Поиск и инсталляция драйверов для Bluetooth-адаптера в Windows 10

Остальное оборудование

Самыми последними стоит инсталлировать драйвера для дополнительного «железа»: тачпада, дактилоскопического датчика, слота для работы с картами памяти, веб-камеры и так далее. Именно здесь порядок не важен – основные драйвера мы уже установили.

Особое внимание обратим на пункты «Неизвестное устройство» в «Диспетчере устройств». Обычно Виндовс, особенно новейших версий, способна самостоятельно определить распространённое оборудование и загрузить драйвера для него. Однако в случае специфического аппаратного обеспечения может понадобится самостоятельно найти и установить ПО. Инструкция далее поможет вам в решении этой проблемы.

Урок: Поиск драйверов для неизвестного устройства

Заключение

Мы рассмотрели порядок установки драйверов на ноутбук. Напоследок хотим отметить, что последовательность, скорее, примерная, чем точная – в первую очередь установите ПО для чипсета, ГПУ и коммуникаций, а дальнейшее уже по необходимости.

Наша группа в TelegramПолезные советы и помощь

  1. cresta

    Active Member

    Публикаций:

    0

    Регистрация:
    13 июн 2004
    Сообщения:
    2.257

    Порядок загрузки в общем случае определяется параметром start в соответствующем ключе ветки «CurrentControlSet/Services» реестра.

    А как можно определить, в каком порядке будут запущены драйвера, если параметр start одинаков для нескольких драйверов, например 0х3

  2. Four-F

    New Member

    Публикаций:

    0

    Регистрация:
    31 авг 2002
    Сообщения:
    1.237

    Это не то чтобы порядок загрузки. Этот параметр очень общо определяет лишь в какой фазе загрузки системы нужно грузить драйвер. Точный порядок загрузки драйверов определить невозможно. А влиять на него можно с помощью помещения драйвера в определенную группу Load Order Group. В пределах группы порядок задается с помощью числового тега Tag. Также можно сделать загрузку драйвера зависимой от загрузки других груп Depend On Group и/или драйверов Depend On Service.

    Всё это есть в доках. См. описание CreateService и вокруг. На sysinternals.com где-то лежить утиль LoadOrder (или как-то так). Показывает порядок загрузки, но не точно.

  3. cresta

    Active Member

    Публикаций:

    0

    Регистрация:
    13 июн 2004
    Сообщения:
    2.257

    Спасибо, сейчас пойду смотреть этот LoadOrder.

    Тут собственно проблема такая: запускаю два драйвера, и мне нужно, чтобы они стартовали рпи загрузке системы как можно раньше, и в определенной последовательности (т.е. первый должен сделать подготовительные шаги для второго, пока тот ещё не стартовал)

  4. Saint German

    New Member

    Публикаций:

    0

    Регистрация:
    13 сен 2003
    Сообщения:
    222

    а что если использовать loadimageroutine? это для установления/определения порядка загрузки.

  5. cresta

    Active Member

    Публикаций:

    0

    Регистрация:
    13 июн 2004
    Сообщения:
    2.257

    Это что такое?

    Гугл таких слов не знает.

  6. MegaZu

    New Member

    Публикаций:

    0

    Регистрация:
    22 июл 2005
    Сообщения:
    290

    cresta

    PsSetLoadImageNotifyRoutine ставит нотифай, до ХР насколько я помню ее убрать невозвожно(легально )

    в ХР уже есть PsRemoveLoadImageNotifyRoutine для снятия.

    Saint German

    А как сменить порядок ? Она ж выдает калбек когда модуль уже загружаеться …

  7. Saint German

    New Member

    Публикаций:

    0

    Регистрация:
    13 сен 2003
    Сообщения:
    222

    да это мой четров стиль выражатьсянадо так —

    установления(определения) т.е. видя что загружается

    driver1.sys & driver2.sys примерно определяем.

  8. MegaZu

    New Member

    Публикаций:

    0

    Регистрация:
    22 июл 2005
    Сообщения:
    290

    Saint German

    А то я думал может ты чёт новое придумал

  9. Four-F

    New Member

    Публикаций:

    0

    Регистрация:
    31 авг 2002
    Сообщения:
    1.237

    cresta, если нужно чтобы драйвер стартовал при загрузке системы как можно раньше, то его нужно поместить в группу «Boot Bus Extender». При этом он должен быть зарегистрирован как SERVICE_BOOT_START или SERVICE_SYSTEM_START. Тэг можно любой назначить, т.к. для тебя скорее всего всё равно каким номером твой драйвер будет грузится в пределах группы. Только имей ввиду, что в буттайме есть ряд ограничений, т.к. файловая система ещё не смонтирована, доступны не все разделы реестра и т.п.

    А насчет двух драйверов: не проще ли переложить обязанности первого на второй или наоборот

    См. в ДДК «Specifying Driver Load Order».

  10. Saint German

    New Member

    Публикаций:

    0

    Регистрация:
    13 сен 2003
    Сообщения:
    222

    Four-F

    Мне так кажется для целей его драйвера, это плохо подходит, это сильно усложнит логику работы его драйвера.

Чтобы Windows могла взаимодействовать и корректно обращаться к физическому оборудованию компьютера, в операционной системе должны быть установлены соответствующие драйвера. В этой статье мы рассмотрим, как вручную установить драйверы устройств в Windows 10/11 и Windows Server 2016-2025.

Содержание:

  • Автоматический поиск драйверов в Windows
  • Поиск драйверов для неизвестных устройств
  • Ручная установка драйвера с помощью INF файла в Windows
  • Экспорт и импорт драйверов в Windows

Автоматический поиск драйверов в Windows

В образ современных версий Windows включены базовые драйвера для распространенных типов устройств. После подключения устройства к компьютеру, Windows попытается выбрать наиболее подходящий драйвер из локального хранилища драйверов. Кроме того, Windows может автоматически установить драйвера некоторых устройств, которые опубликованы в каталоге Microsoft Update:

  1. Попробуйте выполнить автоматический поиск подходящих драйверов через диспетчер устройств. Откройте Device Manager (
    devmgmt.msc
    ), щелкните по устройству, для которого отсутствует драйвер, и выберите Update Driver -> Search automatically for updated driver software.
  2. Если драйвер не найден, диспетчер оборудования предложит выполнить автоматический поиск драйвера через Windows Update. Нажмите на ссылку Search for updated drivers on Windows Updates или перейдите: Settings -> Windows Update -> Check for Updates.
    Обновление драйверов через Windows Update

Для брендовых (OEM) устройств, все необходимые драйвера обычно можно найти по названию модели компьютера на сайте производителя. Если компьютер собран из разных комплектующих, искать и устанавливать драйвера скорее всего придется по отдельности.

Если Windows не смогла автоматически подобрать подходящие драйвера, их придется установить вручную.

Поиск драйверов для неизвестных устройств

Начать нужно с определения производителя и модели оборудования подключенного устройства. Если для устройства отсутствует драйвер, он отображается в диспетчере оборудования Windows с желтой восклицательной иконкой.

  1. Откройте свойства неизвестного устройства и перейдите на вкладку Details
  2. В выпадающем списке выберите свойство Идентификаторы оборудования (Hardware IDs)
    Определение VID и PID неизвестного устройства в Device Manager

  3. Скопируйте идентификатор. В нашем примере это VID_2357&PID_010C

В идентификаторе оборудования указан ID производителя (VID) и ID продукта (PID). В нашем случае VID=2357 и PID=010C. Затем на сайте https://devicehunt.com/ определите название устройства по его VID и PID. В этом примере это внешний USB сетевой адаптер TP-Link (TL-WN722N v2/v3 [Realtek RTL8188EUS])

Поиск названия неизвестного устройства

Теперь перейдите на сайт вендора и по модели оборудования найдите драйвер для вашей версии Windows. В моем случае это драйвер для Windows 10/11 (TLWN722N_V4_190409_Win10/11). Скачайте драйвер.

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

Скачать архив с драйверами вручную

Ручная установка драйвера с помощью INF файла в Windows

В нашем примере драйвер упакован в ZIP архив, который содержит автоматический установщик setup.exe. Он используется для автоматической установки драйвера, а также различных дополнительных программ и утилит от вендора (в этом примере мы не будем использовать установку драйверов через такой инсталлятор).

Если же распаковать содержимое архива, можно найти в нем папку, в которой хранятся только файлы драйвера. В каталоге драйвера обязательно должен быть INF файл (текстовый файл с конфигурацией драйвера, описанием зависимых файлов, правилами установки и т.д.), а также CAT и DAT, SYS, DLL файл(ы) (опционально).

Каталог с INF и CAT файлами драйвера

Драйвер из INF файла можно установить несколькими способами.

Установка драйвера из Device Manager.

  1. Щелкните по вашему устройству в диспетчере оборудования и выберите Update Driver
  2. Выберите Browse my computer for driver software
    Поиск драйверов на компьютере

  3. Нажмите кнопку Browse и укажите путь к распакованной папке с драйвером. Включите опцию Include subfolders для автоматического сканирования вложенных папок на наличие драйверов
    Указать путь к каталогу с драйвером

  4. Нажмите Next, чтобы продолжить установку драйвера.

Также можно вручную добавить любой драйвер в хранилище драйверов Windows. Для этого щелкните правой кнопкой по INF файлу драйвера в проводнике и выбрать Install.

Или можно установить драйвер из командной строки с помощью утилиты pnputil.

pnputil /add-driver c:\drivers\windows_10_64bit\netrtwlanu.inf

Можно рекурсивно установить все драйвера хранящиеся в каталоге (включая подпапки) с помощью команды:

pnputil /add-driver C:\Drivers\*.inf /subdirs /install

команда pnputil /add-driver

Это также добавит драйвер в хранилище драйверов Windows (
C:\Windows\System32\DriverStore\FileRepository
). Осталось выбрать пункт Update Driver в диспетчере задач, и драйвер для вашего устройства автоматически будет установлен из локального хранилища драйверов.

После того, как устройство корректно определилось в Device Manager, можно перейти к следующему устройству, для которого отсутствуют драйвера.

Оптимально использовать такой

порядок установки драйверов в Windows

: в первую очередь нужно установить драйвера чипсета и контроллеров материнской карты. Драйвера сетевого адаптера, затем драйвера для видео и аудио карт, и в последнюю очередь для внешних устройств (драйвера принтера, сканера, проектора, других USB устройств).

Экспорт и импорт драйверов в Windows

Можно вывести все сторонние драйвера (кроме встроенных), которые установлены в хранилище драйверов Windows:

DISM /online /get-drivers /format:table

Чтобы удалить любой драйвер из хранилища, нужно указав его INF файл в формате oemxx.inf. Например:

pnputil /delete-driver oem46.inf /uninstall /force

Вывести список установленных драйверов в Windows

Если у вас есть несколько однотипных компьютеров, вы можете экспортировать все установленные драйвера на одном компьютере, а затем импортировать их на другом.

Выгружаем все установленные в Windows драйвера в каталог C:\Drivers:
dism /online /export-driver /destination:C:\Drivers

dism /online /export-driver

Теперь папку Drivers нужно скопировать на другой компьютер и установить (импортировать) все драйвера одной командой:

pnputil.exe /export-driver * c:\drivers

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Размытые окна в windows 11 на ноутбуке
  • Windows xp ошибка подключения сетевого диска
  • Nirsoft produkey windows 10
  • Silent storm не запускается на windows 10
  • Почему не открывается касперский на компьютере windows 10