SYSTEM\CurrentControlSet\ENUM
SYSTEM\CurrentControlSet\Control\Class

Информация обо всём установленном оборудовании и его драйверах


Принцип хранения этой информации:
Все ключи в ключе ENUM - это перечислители. Всё, что находится в этих ключах (перечеслителях) - ID устройств. Ключи, которые находятся в ключах устройств - это коды ParentId, по которым определяется, к какому устройству подключено данное устройство:

"HKLM\SYSTEM\CurrentControlSet\ENUM\<Перечислитель>\<ID устройства>\<ParentId>"

Обратите внимание на ID PCI устройств: он "построен" так: VEN_Код производителя&DEV_Код устройства&Подсистемный идентификатор&REV_Номер ревизии

Параметры, находящиеся в ключе с кодом ParentId:
ИмяОписание
CapabilitiesХарактеристики устройства
ConfigFlagsКонфигурация устройства
ClassКласс, к которому данное устройство принадлежит
ClassGUIDGUID-код класса, к которому данное устройства принадлежит
DeviceDescНазвание устройства, которое мы видим в диспетчере устройств
FriendlyNameТо же самое, что и DeviceDesc, но имеет больший приоритет
DriverСсылка на ключ с информацией о драйвере (по адресу HKLM\System\CurrentControlSet\Control\Class)
HardwareIDАппаратный ID устройства. Обычно это ссылка на ключ, в котором находится этот параметр
MfgПроизводитель устройства
ParentIdPrefixПервые несколько символов из ParentID того устройства, которое подключено к данному
ServiceСсылка на драйвер, прописанный по адресу HKLM\System\CurrentControlSet\Services\

Пример: "DISPLAY\SAM021E\5&1cc2f65d&0&11335587&01&00" - монитор SAMSUNG SM206BW

5&1cc2f65d&0&11335587&01&00 - Это код ParentId

SAM021E - идентификатор устройства (считывается с самого устройства)
DISPLAY - Перечеслитель
Видеокарта (nVidia GeForce 7600):
"PCI\VEN_10DE&DEV_0391&SUBSYS_00000000&REV_A1\4&29dc82a&0&0008"

В ключе видеокарты есть параметр ParentIdPrefix со значением 5&1cc2f65d&0. Это значит, что все устройства, у которых ключ ParentId начинается на 5&1cc2f65d&0, считаются подключенными к этой видеокарте.  Это правило распространяется на все устройства.

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

Однако, если монитор после этих манипуляций физически подключить к другой видеокарте (после того, как попытались "убедить" Windows в этом), то не будет никаких попыток поиска драйверов для этого устройства, поскольку вся информация о них в реестре уже есть. Именно поэтому поиск драйверов для флешки производится только при первом её подключении к одному из разъёмов и более не повторяется, если её подключать только к этому разъёму USB.

Параметры мониторов

Для ограничения разрешения и частоты обновления монитора в ключе MODES, который расположен по адресу  HKLM\System\CurrentControlSet\Control\Class\**** ( **** - четырехзначный порядковый номер драйвера, например, 0002) необходимо создать ключ, в имени которого указать разрешение (пример имени ключа: 1600,1200). Если таких ключей несколько, то в качестве верхнего предела разрешения монитора будет выбрано максимальное из них. Чтобы ограничить частоту обновления, следует создать ключ Mode1 с параметрами минимальной и максимальной частот обновления экрана. Если таких диапазонов несколько, можно создать дополнительные ключи (Mode2, Mode3 и т.д., до 9).
Пример значения такого ключа:: 31.0-60.0,55.0-90.0,+,+

 Здесь частоту обновления экрана ограничивают только последние 2 числа. Первые 2 задают допустимый диапазон строчной развертки. Назначение знаков +, + в данный момент мне неизвестно. Предположительно, последний из них определяет, использовать ли чересстрочный режим. Данные параметры добавляются при установке драйверов монитора от производителя. В драйверах современных мониторов последние 2 знака всегда равны +.

Обычно наличие этих параметров не требуются, поскольку монитор может сообщить видеокарте список поддерживаемых режимов. В таких случаях в диспетчере устройств он отображается как "Модуль подключения монитора", если не установлены драйвера от производителя. Однако, иногда (например, при использовании переходников из DVI в VGA) эти ограничения нужно устанавливать только с помощью этих ключей реестра, поскольку автоматически они не определяются (монитор отображается в диспетчере устройств как "Монитор по умолчанию", а при выборе частоты обновления экрана неактивен флажок "Скрыть режимы, которые монитор не может использовать")

Если вы используете переходник из DVI в VGA и вам нужно скрыть в списке выбора частоты обновления экрана так, чтобы эти ограничения применялись для всех мониторов, подключенных через переходник, тогда требуется изменить секцию Unknown.AddReg файла %SystemRoot%\monitor.inf. Необходимо заменить строку
HKR,"MODES\640,480"
на строку с наиболее универсальными ограничениями для большинства современных мониторов. Например, такая строка
HKR,"MODES\1280,1024",Mode1,,"30.0-60.0,60.0-75.0,+,+" 
при установке драйвера "Монитор по умолчанию" приведёт к внесению изменений в реестр, которые ограничат частоту кадров до 75 Гц и частоту строчной развертки от 30 до 60 кГц.


Параметры дисковых устройств:

Расположены по адресу
IDE\<диск>\<ParentIdPrefix диска>\Device Parameters\Disk

ИмяОписание
UserRemovalPolicyЗначение данного параметра изменяется при помощи переключателя между вариантами "Оптимизировать для выполнения" и "Оптимизировать для быстрого удаления" в свойствах диска
UserWriteCacheSettingЗначение данного параметра изменяется при помощи флажка "разрешить кэширование записи на диск" в свойствах диска.
CacheIsPowerProtectedЗначение этого параметра изменяется при помощи флажка "включить повышенную производительность". Поддержка этой функции есть не на всех HDD.