Настройки реестра для CD/DVD устройств
Обзор
Драйвер CD/DVD имеет ряд настроек в реестре. Изначально они были введены для работы
с устройствами, для которых принципиально невозможно сделать автоопределение. Чтобы не
встраивать список "не таких" приводов в сам драйвер, мы решили вынести список наружу.
Со временем набр настраиваемых параметров (читай - расространенных отклонений от спецификации)
более-менее стабилизировался. На текущий момент добавление очередного устройства в список
поддерживаемых зачастую сводится к подбору правильных настроек. Еще одно важное применение
- отключение драйвера для отдельных устройств (например если есть подозрение, что проблемы
возникают только с вашим старым CD-RW, а с DVD-RW все в порядке).
Если вы чувствуете уверенность, можете попробовать самостоятельно подстроить
драйвер под специфику вашего устройства или отключить подозрительный привод.
В ключе
HKLM\System\CurrentControlSet\Services\dwcdrw
можно создавать следующую иерархию ключей с настройками. Наиболее
глобальные настройки находятся в
HKLM\System\CurrentControlSet\Services\dwcdrw\Parameters
Более специфические настройки располагаются в специальным образом проименованых подключах.
В поисках значения той или иной опции драйвер просматривает ключи в следующем порядке:
Parameters
Parameters\VENDOR[1] (1й символ)
Parameters\VENDOR[1-2] (2 первых символа)
...
Parameters\VENDOR (вся строка, 8 символов)
Parameters\VENDOR\DEVICENAME[1] (1й символ)
Parameters\VENDOR\DEVICENAME[1-2] (2 первых символа)
...
Parameters\VENDOR\DEVICENAME (вся строка, 16 символов)
Parameters\VENDOR\DEVICENAME\REVISION[1] (1й символ)
Parameters\VENDOR\DEVICENAME\REVISION[1-2] (2 первых символа)
...
Parameters\VENDOR\DEVICENAME\REVISION (вся строка, 4 символа)
где
VENDOR - название производителя (Vendor) устройства
DEVICENAME - название модели устройства
REVISION - код версии прошивки
Последнее найденное значение имеет высший приоритет.
Пробелы (в т.ч. в конце, т.е. дополняющие строку до требуемой длины) заменяются на символ подчеркивания '_'.
Сам символ '_', '#', а также непечатные, служебные, кавычки и символы с кодами старше 127 кодируются
как '#hh', где hh - это шестнадцатиричный код символа.
Пример
Если в
Parameters\Toshiba_\DVD-RAM_SD-W
DWORD:NoStartUnitCommand=0
но в
Parameters\Toshiba_\DVD-RAM_SD-W2002
DWORD:NoStartUnitCommand=1
окончательным значением опции
NoStartUnitCommand для устройств Toshiba, модель DVD-RAM_SD-W2002 будет 0.
Для остальных Toshiba, у которых название можели начинается с DVD-RAM_SD-W будет использоваться
значение 1.
Доступные параметры
DWORD:LoadMode (default = 1)
Данный параметр принудительно установливает режим работы драйвера с данным устройством.
Допустимые значения:
LoadMode |
Режим
|
0 |
работать только с пишущими устройствами
|
1 |
работать независимо от типа устройства
|
2 |
не работать с данным устройством
|
DWORD:OldCdRom (default = 0)
Данный параметр указывает драйверу считать данное устройство обычным CD-ROM'ом и не предпринимать попыток
выяснения возможностей. Часто имеет устанавливать в 1 для старых приводов, которые просто повисают при получени
неизвестных (на момент своего создания) команд.
Допустимые значения автоопределения возможностей устройства:
0x00000000 - включить
0x00000001 - выключить
DWORD:NoStartUnitCommand (default = 0)
Данный параметр указывает драйверу не использовать команду START/STOP UNIT. Некоторые устройства
после такой "инициализации" впадают в кому до выключения питания. В то же время, многим другим это
идет на пользу.
0x00000000 - включить
0x00000001 - выключить
DWORD:NoGetConfigCommand (default = 0)
Данный параметр указывает драйверу не использовать команду GET CONFIGURATION. Старые устройства
ее не поддерживают, а некоторые из них даже повисают при ее использовании. В то же время, команда
очень ценна с точки зрения определения способностей современных устройств.
0x00000000 - включить
0x00000001 - выключить
DWORD:DenyGetEvent (default = 0)
Данный параметр указывает драйверу не использовать команду GET EVENT. Старые устройства
ее не поддерживают, а некоторые из них даже повисают при ее использовании. Кроме того, некоторые новые
устройства делают вид, что поддержка есть, но неправильно ее обрабатывают. Команда используется
для определения наличия диска в приводе вместо TEST UNIT READY. Как показал опыт, многие приводы
при виде чистого CD-R или CD-RW диска говорят No Media In Device в ответ на TEST UNIT READY,
а GET EVENT дает правильный ответ. Кроме того, GET EVENT используется для определения нажатия кнопки Eject
на приводе.
0x00000000 - включить
0x00000001 - выключить
DWORD:StdCheckVerify (default = 0)
Данный параметр указывает драйверу использовать стандартную команду TEST UNIT READY для определения наличия диска.
0x00000000 - выключить
0x00000001 - включить
DWORD:ForceStdFormatUnit (default = 0)
Данный параметр указывает драйверу использовать стандартную команду FORMAT UNIT для форматирования дисков.
Многие старые устройства содержали некоректную ее реализацию, поэтому приходилось пользоваться обходными путями.
На многих новых устройствах ситуация прямо противоположная - FORMAT UNIT работает превосходно, а обходные пути - нет.
0x00000000 - выключить
0x00000001 - включить
DWORD:ModePageSize (default = 6)
Данный параметр принудительно установливает используемую модификацию ATAPI/SCSI команды MODE_SENSE для данного устройства.
Допустимые значения:
ModePageSize |
Модификация команды
|
0 |
Автоопределение
|
6 | MODE_SENSE6 |
10 | MODE_SENSE10 |
DWORD:ModeSelectSize (default = 6)
Данный параметр принудительно установливает используемую модификацию ATAPI/SCSI команды MODE_SELECT для данного устройства.
Допустимые значения:
ModeSelectSize |
Модификация команды
|
0 |
Автоопределение
|
6 | MODE_SELECT6 |
10 | MODE_SELECT10 |
|