Universal ATA driver for Windows NT3.51/NT4/2000/XP/Vista/7/ReactOS With PATA/SATA support
UniATA Registry settings
Overview
UniATA driver имеет рад настроек в Registry.
В ключе
HKLM\System\CurrentControlSet\Services\UniATA
можно создавать следующую иерархию ключей с настройками. Наиболее
глобальные настройки находятся в
HKLM\System\CurrentControlSet\Services\UniATA\Parameters
Более специфические настройки располагаются в специальным образом проименованых подключах.
В поисках значения той или иной опции драйвер просматривает ключи в следующем порядке:
Parameters
Parameters\Chan_C
Parameters\Chan_C\Lun_L
Parameters\IDE_I Появилось в версии UniATA 0.38d
Parameters\IDE_I\Chan_C Появилось в версии UniATA 0.38d
Parameters\IDE_I\Chan_C\Lun_L Появилось в версии UniATA 0.38d
for PCI:
Parameters\Ven_VVVV
Parameters\Ven_VVVV\Dev_DDDD
Parameters\Ven_VVVV\Dev_DDDD\Chan_C
Parameters\Ven_VVVV\Dev_DDDD\Chan_C\Lun_L
Parameters\Ven_VVVV\Dev_DDDD\Slot_XXXXXXXX
Parameters\Ven_VVVV\Dev_DDDD\Slot_XXXXXXXX\Chan_C
Parameters\Ven_VVVV\Dev_DDDD\Slot_XXXXXXXX\Chan_C\Lun_L
for ISA: Появилось в версии UniATA 0.38d
Parameters\ISA_X
Parameters\ISA_X\Chan_C
Parameters\ISA_X\Chan_C\Lun_L
for MicroChannel (MCA): Появилось в версии UniATA 0.38d
Parameters\MCA_X
Parameters\MCA_X\Chan_C
Parameters\MCA_X\Chan_C\Lun_L
где
C - канал IDE. 0 - Primary, 1 - Secondary. Максимальное значение - 7.
L - номер устройства на IDE канале. 0 - Master, 1 - Slave).
I - порядковый номер контроллера в системе. Выделяется в процессе поиска контроллеров.
UniATA сначала опрашивает ISA-bridged IDE контроллеры, потом обычные PCI контроллеры,
а потом уже ISA и MicroChannel.
VVVV - код производителя (Vendor ID) (см. PCI Dump)
DDDD - код устройства (Device ID), см. туда же.
XXXXXXXX - адрес на шине PCI в шестнадцатиричной форме.
X - порядковый номер ISA или MCA устройства. 0 и 1 обычно соответствуют Primary и
Secondary IDE контроллерам. Но если они отображаются на PCI шину (bridged),
то 0 и 1 не используются для нумерации ISA устройств. Максимальное значение - 3.
Последнее найденное значение имеет высший приоритет.
Example
Если в
Parameters\Ven_8086
DWORD:Exclude=0x00000001
но в
Parameters\Ven_8086\Dev_7111
DWORD:Exclude=0x00000000
окончательным значением опции
Exclude для устройства Ven_8086\Dev_7111 будет 0x00000000.
Options
- Exclude -
запретить UniATA работу с данным контроллером (или контроллерами)
- Include -
принудительно инициализировать данный контроллер
- ForceSimplex -
поочередная работа каналов контроллера
- SkipRaids -
не инициализировать IDE Raid контроллеры
- MaxTransferMode -
указать максимальный поддерживаемый контроллером или подключенным устройством режим (PIO/DMA/UDMA)
- PreferedTransferMode -
указать желаемый режим (PIO/DMA/UDMA) для контроллера или подключенного устройства
- ReadCacheEnable -
включить/выключить аппаратное кеширование операций чтения IDE устройством
- WriteCacheEnable -
включить/выключить аппаратное кеширование операций записи IDE устройством
- ReorderEnable -
включить/выключить оптимизацию порядка исполнения запросов
- GeomType -
управление способом вычисления логической геометрии жестких дисков
- Hidden -
спрятать устройство
- ReadOnly -
запретить операции записи на HDD
- HwFlagsOverride -
принудительная установка всех controller-specific флагов (для отладки), см. bm_devs.h
- HwFlagsAdd -
принудительная установка отдельных controller-specific флагов (для отладки), см. bm_devs.h
- LogToDisplay -
включить/выключить вывод Debug-сообщений на синий экран в NT4
- PrintLogo -
включить/выключить вывод сообщения о загрузке драйвера на синий экран в NT4
- IgnoreIsaCompatiblePci -
выключить поддержку ISA/PCI совместимых IDE контроллеров или их отдельных каналов
- IgnoreNativePci -
выключить поддержку Native PCI IDE контроллеров
- IgnoreIsa -
выключить поддержку ISA IDE контроллеров
- IgnoreMca -
выключить поддержку MicroChannel (MCA) IDE контроллеров
- IgnoreAhci -
выключить поддержку AHCI PCI IDE контроллеров
- PortBase -
начальный адрес I/O-портов для ISA и MicroChannel (MCA) контроллеров
- Irq -
номер прерывания (IRQ) для ISA и MicroChannel (MCA) контроллеров
- VirtualBox -
включить оптимизацию под VirtualBox (устаревшее)
- VirtualMachineType -
включить оптимизацию под определенную виртуальную машину
- WaitBusyCount -
к-во циклов ожидания BUSY
- WaitBusyDelay -
продолжительность 1го цикла ожидания BUSY в микросекундах.
- WaitDrqDelay -
продолжительность 1го цикла ожидания DRQ в микросекундах.
- AtapiSendDisableIntr -
не маскировать прерывания во время отправки ATAPI команды
- AtapiDmaZeroTransfer -
оставлять ATAPI устройство в DMA режиме при исполнении команд, не требующих передачи данных
- AtapiDmaControlCmd -
оставлять ATAPI устройство в DMA режиме при исполнении управляющих команд, требующих передачи данных
- AtapiDmaRawRead -
использовать DMA при чтении raw-секторов с CD
- AtapiDmaReadWrite -
использовать DMA при чтении/записи обычных (2048 байт) секторов с CD/DVD
Option details
DWORD:Exclude (default = 0x00000000)
Установка данного значения в DWORD:0x00000001 запрещает UniATA инициализировать
контроллер указанного в имени ключа
типа (Ven_VVVV\Dev_DDDD)
или производителя (Ven_VVVV).
Это значение имеет низший приоритет по сравнению
с Include.
Появилось в версии
UniATA 0.29a
DWORD:Include (default = 0x00000000)
Установка данного значения в DWORD:0x00000001 вызывает принудительную инициализацию
контроллер, указанного в имени ключа
типа (Ven_VVVV\Dev_DDDD)
или производителя (Ven_VVVV).
Эта установка имеет
высший приоритет по отношению к Exclude.
Появилось в версии
UniATA 0.29a
DWORD:ForceSimplex
Установка данного значения в DWORD:0x00000001 запрещает UniATA использовать
оба канала одновременно. В simplex-режиме каналы работают поочередно.
Такой режим введен для борьбы с глюками в некоторых контроллерах.
Для всх устройств кроме перечисленных ниже значение по умолчанию DWORD:0x00000000.
Для особо отличившихся - DWORD:0x00000001:
0640/1095 /* CMD 640 known bad, no DMA */
0601/1039
1000/1042 /* RZ 100? known bad, no DMA */
1001/1042
8172/1283 /* IT8172 IDE controller */
Появилось в версии
UniATA 0.29h
DWORD:SkipRaids (default = 0x00000000)
Установка данного значения в DWORD:0x00000001 запрещает UniATA инициализировать
контроллеры. определяющиеся как IDE Raid. Это значение имеет высший приоритет по сравнению
с Include.
Появилось в версии
UniATA 0.26
DWORD:MaxTransferMode (default = 0xffffffff)
Данное значение устанавливает максимальный допустимый режим передачи данных
для указанного контроллера,
IDE канала (Chan_C)
или отдельного IDE/ATAPI устройства (Chan_C\Lun_L).
Снижение скорости относительно номинальной (той, которая прописана во
внутренней таблице драйвера) должно проходить нормально.
А вот повышение... Если у контроллера нет более скоростных старших собратьев,
ничего не произойдет, т.к. в драйвере просто отсутствует код для установки
такого режима и будет выбран максимальный работающий. А если есть -
то это будет чистой воды overclock - может заработает, может и нет, а может
будет изредка поглюкивать.
Ниже приведены допустимые значения. За результаты использования
других значений фирма-изготовитель (то есть я ;) никакой ответственности не несет.
0xffffffff use default 0x20 WDMA/WDMA0
0x00 PIO 0x21 WDMA1
0x01 PIO (no RDY) 0x22 WDMA2
0x08 PIO0 0x40 UDMA/UDMA0 (ATA-16)
0x09 PIO1 0x41 UDMA1 (ATA-25)
0x0a PIO2 0x42 UDMA2 (ATA-33)
0x0b PIO3 0x43 UDMA3 (ATA-44)
0x0c PIO4 0x44 UDMA4 (ATA-66)
0x0d PIO5 0x45 UDMA5 (ATA-100)
0x46 UDMA6 (ATA-133)
0x47 SATA-150
Появилось в версии
UniATA 0.30i
DWORD:PreferedTransferMode (default = 0xffffffff)
Данное значение устанавливает желаемый режим передачи данных
для указанного контроллера, канала или отдельного устройства.
Предназначено для инициализации устройства в более медленном режиме,
чем позволяет контроллер. Не может превышать MaxTransferMode.
Появилось в версии
UniATA 0.30i
DWORD:ReadCacheEnable (default = 0x00000001)
Данный параметр позволяет принудительно включать/выключать аппаратное кеширование данных IDE устройством при чтении с носителя.
0x00000000 - выключить
0x00000001 - включить
Появилось в версии
UniATA 0.30i
DWORD:WriteCacheEnable (default = 0x00000001)
Данный параметр позволяет принудительно включать/выключать аппаратное кеширование данных IDE устройством при записи на носитель.
0x00000000 - выключить
0x00000001 - включить
Появилось в версии
UniATA 0.30i
DWORD:ReorderEnable (default = 0x00000001)
Данный параметр позволяет принудительно включать/выключать оптимизацию порядка исполнения запросов.
0x00000000 - выключить
0x00000001 - включить
Появилось в версии
UniATA 0.31
DWORD:GeomType (default = 0xffffffff)
Данное значение устанавливает желаемый способ вычисления геометрии (к-во цилиндров, головок
и секторов на дорожке). Как известно, эти числа уже давно не имеют физического смысла и определяют
так называемую логическую геометрию (для совместимости). Грабли в том, что жесткие диски
не далеко всегда выдают логическую геометрию, соответствующую их реальному объему.
Поэтому драйвер должен сам эту геометрию придумать. Есть следующие варианты:
-
DWORD:GeomType = 0x00000000
"Стандартный метод" - 63 сектора на дорожке, 255 головок и сколько получится цилиндров (обязательно меньше 65536).
Может применяться на дисках объемом до 502 Gb (или 539 китайских Gb, тех которые 1000000000 байт)
-
DWORD:GeomType = 0x00000001
"метод UniATA" - исторически сложившийся метод. Сначала подбираются значения количества секторов и головок
так, чтобы они были меньше 128, а если не получается, то чтобы были меньше 32768. На количество цилиндров накладывается
ограничение - 65535. Этот метод использовался во всех предыдущих версиях (до 31e). Ограничение на размер
диска при использовании этого метода просто заоблачное - 36000 терабайт.
-
DWORD:GeomType = 0x00000002
Сохранить оригинальную геометрию. Есть большая вероятность, что будет виден не весь объем диска, но мало ли,
кому и зачем такое может понадобиться...
Появилось в версии
UniATA 0.31e
DWORD:Hidden (default = 0x00000000)
Данный параметр позволяет запретить опрос и инициализацию устройства. В последствии
устройство может быть добавлено в систему с помощью atactl.exe.
Спрятаное устройство остается доступным для спец. IOCTL через виртуальное коммуникационное устройство UniATA.
0x00000000 - включить
0x00000001 - выключить
Появилось в версии
UniATA 0.38d
DWORD:ReadOnly (default = 0x00000000)
Данный параметр позволяет запретить запись на HDD.
-
DWORD:ReadOnly = 0x00000000
нормальная работа, никакого read-only.
-
DWORD:ReadOnly = 0x00000001
возвращать ошибку на все операции записи.
-
DWORD:ReadOnly = 0x00000002
игнорировать операции записи и возвращать статус успешного завершения операции
Появилось в версии
UniATA 0.39d
DWORD:LogToDisplay (default = 0x00000000)
Данный параметр позволяет включать вывод Debug-сообщений на синий экран в NT4. Доступен только в Debug-версии. В старших ОС пока не работает.
0x00000000 - выключить
0x00000001 - включить
Появилось в версии
UniATA 0.31b
DWORD:IgnoreIsaCompatiblePci (default = 0x00000000)
Установка данного значения в DWORD:0x00000001 запрещает UniATA производить поиск и инициализацию
PCI IDE контроллера, работающего в режиме совместимости с
ISA (Compatible Mode) или его Primary/Secondary канал. Как правило, это основной OnBoard контроллер.
Это значение имеет высший приоритет по сравнению
с Include.
0x00000000 - включить
0x00000001 - выключить
Появилось в версии
UniATA 0.31b
DWORD:IgnoreNativePci (default = 0x00000000)
Установка данного значения в DWORD:0x00000001 запрещает UniATA производить поиск и инициализацию PCI IDE
контроллеров, работающих в Native режиме. Как правило, это дополнительные IDE/RAID контроллеры.
Это значение имеет высший приоритет по сравнению
с Include.
0x00000000 - включить
0x00000001 - выключить
Появилось в версии
UniATA 0.31b
DWORD:IgnoreIsa (default = 0x00000000)
Установка данного значения в DWORD:0x00000001 запрещает UniATA производить поиск и инициализацию ISA IDE
контроллера. Как правило, это основной OnBoard контроллер на старых материнских платах.
Это значение имеет высший приоритет по сравнению
с Include.
0x00000000 - включить
0x00000001 - выключить
Появилось в версии
UniATA 0.31b
DWORD:IgnoreMca (default = 0x00000000)
Установка данного значения в DWORD:0x00000001 запрещает UniATA производить поиск и инициализацию MCA IDE
контроллера. Как правило, это основной OnBoard контроллер на старых материнских платах.
Это значение имеет высший приоритет по сравнению
с Include.
0x00000000 - включить
0x00000001 - выключить
Появилось в версии
UniATA 0.31b
DWORD:PortBase
DWORD:Irq
Эти значения устанавливает начало диапазона управляющих портов и номер прерывания для ISA и MCA контроллеров.
Ниже приведены более-менее стандартные значения (используются драйвером по умолчанию).
Первые 2 вообще совсем стандартные, вряд ли их придется менять, а вот последующие
могут быть и другие, особенно если вы пытаетесь использовать доп. ISA IDE контроллер,
к примеру от ESS-1868. И конечно же, за результаты игр с этой настройкой фирма-изготовитель
(то есть я ;) никакой ответственности не несет.
ISA_0 PortBase 0x1F0 Irq 14
ISA_1 PortBase 0x170 Irq 15
ISA_2 PortBase 0x1E8 Irq 11
ISA_3 PortBase 0x168 Irq 10
Появилось в версии
UniATA 0.38d
DWORD:VirtualMachineType (default = 0x00000000)
Это значения устанавливает тип используемой виртуальной машины и влияет на оптимизацию драйвера под указанный тип VM.
Ниже приведен перечень доступных значений
0 Autodetect (default)
1 Real PC, not a VM
2 VirtualBox
3 VMWare
4 QEmu
Появилось в версии
UniATA 0.40a1
UniATA driver home
Please send your comments and propositions here: alterX@alter.org.ua (remove X)
|