Alter.Org.UA  
 << Back Home EN en   Donate Donate www/www1/www2

Universal ATA driver for Windows NT3.51/NT4/2000/XP/2003/Vista/7/ReactOS
With PATA/SATA/AHCI 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 - принудительно инициализировать данный контроллер
  • NumberChannels - принудительно ограничить количество каналов на данном контроллере
  • PortMask - инициализировать каналы (порты) AHCI/SATA контроллеров согласно битовой маске.
  • ForceSimplex - поочередная работа каналов контроллера
  • SkipRaids - не инициализировать IDE Raid контроллеры
  • MaxTransferMode - указать максимальный поддерживаемый контроллером или подключенным устройством режим (PIO/DMA/UDMA)
  • PreferedTransferMode - указать желаемый режим (PIO/DMA/UDMA) для контроллера или подключенного устройства
  • Force80pin - не проверять тип PATA шлейфа (80/40 проводников)
  • ReadCacheEnable - включить/выключить аппаратное кеширование операций чтения IDE устройством
  • WriteCacheEnable - включить/выключить аппаратное кеширование операций записи IDE устройством
  • AdvancedPowerMode - управление режимом энергосбережения
  • AcousticMgmt - управление режимом контроля вибрации
  • 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 контроллеров (Compatible, Legacy Mode) или их отдельных каналов
  • IgnoreNativePci - выключить поддержку Native PCI IDE контроллеров
  • IgnoreIsa - выключить поддержку ISA IDE контроллеров
  • IgnoreMca - выключить поддержку MicroChannel (MCA) IDE контроллеров
  • IgnoreAhci - выключить поддержку AHCI PCI IDE контроллеров
  • NativePCIMode - пытаться переключить контроллер из Compatible (Legacy) в Native Mode PCI IDE
  • PortBase - начальный адрес I/O-портов для ISA и MicroChannel (MCA) контроллеров
  • Irq - номер прерывания (IRQ) для ISA и MicroChannel (MCA) контроллеров
  • VirtualBox - включить оптимизацию под VirtualBox (устаревшее)
  • VirtualMachineType - включить оптимизацию под определенную виртуальную машину
  • WaitBusyCount - к-во циклов ожидания BUSY
  • WaitBusyDelay - продолжительность 1го цикла ожидания BUSY в микросекундах.
  • WaitBusyLongCount - к-во циклов ожидания BUSY для длительного ожидания
  • WaitBusyLongDelay - продолжительность 1го цикла ожидания BUSY в микросекундах. (для длительного ожидания)
  • WaitDrqDelay - продолжительность 1го цикла ожидания DRQ в микросекундах.
  • DriveSelectNanoDelay - продолжительность ожидания готовности после выбора устройства (Select) в наносекундах.
  • AtapiSendDisableIntr - не маскировать прерывания во время отправки ATAPI команды
  • AtapiDmaZeroTransfer - оставлять ATAPI устройство в DMA режиме при исполнении команд, не требующих передачи данных
  • AtapiDmaControlCmd - оставлять ATAPI устройство в DMA режиме при исполнении управляющих команд, требующих передачи данных
  • AtapiDmaRawRead - использовать DMA при чтении raw-секторов с CD
  • AtapiDmaReadWrite - использовать DMA при чтении/записи обычных (2048 байт) секторов с CD/DVD
  • AtapiNoDma - не использовать DMA на ATAPI

Option details


DWORD:Exclude (default = 0x00000000)

Установка данного значения в DWORD:0x00000001 запрещает UniATA инициализировать контроллер указанного в имени ключа типа (Ven_VVVV\Dev_DDDD) или производителя (Ven_VVVV). Это значение имеет низший приоритет по сравнению с Include.

Появилось в версии UniATA 0.29a

Установка данного значения в DWORD:0x00000001 запрещает UniATA инициализировать определенный канал указанного в имени ключа контроллера IDE_I\Chan_C. Это значение имеет высший приоритет по сравнению с Include.

Например, IDE_1\Chan_0 или Ven_VVVV\Dev_DDDD\Chan_0 отключает инициализацию 2го канала на Compatible контроллере и освобождает тем самым IRQ 15.

Появилось в версии UniATA 0.45e


DWORD:Include (default = 0x00000000)

Установка данного значения в DWORD:0x00000001 вызывает принудительную инициализацию контроллер, указанного в имени ключа типа (Ven_VVVV\Dev_DDDD) или производителя (Ven_VVVV). Эта установка имеет высший приоритет по отношению к Exclude.

Появилось в версии UniATA 0.29a


DWORD:NumberChannels (default = 0x00000000)

Установка данного значения включает ограничение на количество инициализируемых каналов на контроллере, указанном в имени ключа. Эта установка позволяет только уменишить количество каналов.

Появилось в версии UniATA 0.29a


DWORD:PortMask (default = 0xffffffff)

Данный параметр позволяет выборочно инициализировать каналы/порты SATA/AHCI контроллеров. 0-й бит соответствует 1му каналу. Значение 1 - инициализировать, 0 - не трогать.

Появилось в версии UniATA 0.45e


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
                                   0x48        SATA-300
                                   0x49        SATA-600

Появилось в версии 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:AdvancedPowerMode (default = 0x00000080)

Данный параметр управляет режимом энергосбережения устройства.

0          disable
0x01       min power, standby allowed
...        intermediate power modes with standby
0x80       min power, standby not allowed (default)
...        intermediate power modes without standby
0xfe       max performance

Появилось в версии UniATA 0.43c1


DWORD:AcousticMgmt (default = 0x00000080)

Данный параметр управляет режимом контроля вибрации устройства.

0          disable
0x80       min acoustic level (default)
...        intermediate acoustic levels
0xfe       max performance

Появилось в версии UniATA 0.43c1


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
    
    Сохранить оригинальную геометрию. Есть большая вероятность, что будет виден не весь объем диска, но мало ли, кому и зачем такое может понадобиться...
  • DWORD:GeomType = 0x00000003
    
    Принудительно установить геометрию. Значения C/H/S в этом случае берутся из DWORD:C, DWORD:H, DWORD:S

Появилось в версии 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
5       Bochs

Появилось в версии UniATA 0.40a1


DWORD:HwFlagsOverride    (default = 0x00000000)
DWORD:HwFlagsAdd         (default = 0x00000000)

принудительная установка всех (Override) или отдельных (Add) controller-specific флагов (для отладки)

Ниже приведен перечень доступных значений

UNIATA_SIMPLEX_ONLY     0x40000000
UNIATA_NO_SLAVE         0x20000000
UNIATA_SATA             0x10000000
UNIATA_NO_DPC           0x08000000
UNIATA_NO_DPC_ATAPI     0x04000000
UNIATA_AHCI             0x02000000
UNIATA_NO80CHK          0x01000000

Появилось в версии UniATA 0.30i


DWORD:Force80pin (default = 0x00000000)

Установка данного значения в DWORD:0x00000001 запрещает UniATA производить проверку PATA шлейфа на 80/40 контактов. Позволяет обойти проблему некорректной диагностики.

0x00000000 - включить
0x00000001 - выключить

Появилось в версии UniATA 0.45d


UniATA driver home
Please send your comments and propositions here: Mail to alterX@alter.org.ua (remove X)  
<< Back Автор: Alter (Александр А. Телятников) Сервер: Apache+PHP под FBSD © 2002-2017