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

CD-R/RW & DMA drivers

При работе с CD-R/CD-RW под NT4/W2k существует проблема совместимости с драйверами IDE DMA/BusMaster следующего характера:

Для настройки SCSI/ATAPI устройств (к которым относятся и CD-Recorders) используются управляющие блоки, так называемые MODE PAGEs. Для считывания и передачи уравляющих блоков используются команды MODE_SENSE6/MODE_SENSE10 и MODE_SELECT6/MODE_SELECT10 соответственно. Версии 6 и 10 отличаются длиной заголовка, предшествующего передаваемому блоку параметров (6 и 10 байт соответственно). Как правило, устройства понимают оба варианта.

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

    1. преобразование формата заголовков к фиксированной версии независимо от того, какой формат был использован инициатором запроса. При этом
      a) забывается о том, что ответ от устройства имеет смысл преобразовать к формату, ожидаемому инициатором запроса
      b) заголовки для MODE_SENSE могут конвертироваться в одну версию, а для MODE_SELECT - в другую
      c) преобразование к некому формату (a la MODE_SENSE/SELECT14), который совершенно не пригоден для передачи устройству и может вызывать зависание
    2. Принудительная модификация некоторых полей в управляющем блоке, что не позволяет перевести устройство в требуемый режим записи. Как правило другие поля при этом не страдают. (Прям заговор какой-то... ;)
    3. Неправильная обработка некоторых ошибок устройства
      a) необоснованное возвращение SUCCESS. Как правило наблюдается при использовании MODE_SELECT
      b) неограниченное ожидание с выходом по ошибке Bus reset (минут так через 5) при передаче направильных параметров.
Все это ведет к неизбежным глюкам при работе с CD-R/RW. Например
    невозможность записи на
      CD-R
      CD-RW в пакетном режиме (aka UDF)
    ошибки при попытках сграбить Audio-CD
При этом программы записи могут как выдавать сообщения об ошибках, так и вешать/crash'ить систему.
Лечить это можно следующим образом:
    1. Установить заведомо работоспособные драйвера. Например стандартные (generic) из поставки Windows (без поддержки специфических IDE Controllers) - atapi.sys. Это можно сделать через ControlPanel->Devices, установив режим загрузки в Boot или путем редактирования registry:
    в ключе HKLM/System/CurrentControlSet/Services/atapi значение Start установить в 0.
    2. Отключить/деинсталировать кривой драйвер IDE BusMaster (DMA). Простое отключение режима DMA средствами самого драйвера не помогает. Переходить к этому пункту можно только после успешного выполнения предыдущего, инече рискуете остаться с негрузящейся Windows.
    В случае деинсталяции желательно проверить, включился ли atapi.sys(см. п.1). Авторы драйверов довольно часто забывают это сделать.
Ниже приведены известные мне драйвера, имеющие проблемы с совместимостью:

Driver Info


Intel(r) 82801BA Ultra ATA Controller
Version 6.1.8.0
Files:
idebd.sys, intelata.sys, iata2000.dll
Description:
Когда я пытаюсь сграбить CDDA диск любым cdripperом (я перепробовал множество), то они видят диск, но прочитать нифига не могут... возвращают или ошибку или просто проскакивают слету все дорожки, а последняя версия CD'n'GO (с "улучшенной" поддержкой устройств) вываливает синий экран с IRQ чего то там error... и система наглухо виснет... При этом данные читаются на ура, и музыку тоже можно слушать без проблем если в реальном времени...

Intel(r) 82801AA BusMaster IDE Controller
Version 5.0.21.95.0
Files:
intelide.sys (4304)
Description:
Повисание при попытке записи на CD

ETEQ
?
Files:
viaide.sys
Description:
Запись на CD-R/RW не работает вообще.

ETEQ
?
Files:
viadsk.sys
Description:
Не работает запись на RW в пакетном режиме (UDF). CDFS пишется нормально.

VIA Bus Master Ultra ATA Controller
Version 11/16/2000, 3.01.1
Files:
viadsk.sys (49644)
Description:
Запись на CD-R/RW не работает вообще.

VIA Bus Master Ultra ATA Controller
Version ??/06/2003, 3.20b
Description:
когда я пытаюсь проверить диск с помощью CDSpeed от Ахеадовцев, он мне рисует либо сплошную желтую полосу, либо красные квадратики. И все это за секунду... Гад.
Info from Alex Y. Matiash


Если у вас есть информация о других кривых (или наоборот, ровных) драйверах IDE BusMaster DMA, пишите на Mail to alterX@alter.org.ua (remove X)  
PS. На текущий момент я уже написал "правильный" IDE BusMaster driver для NT4/w2k. Как он поведет себя в XP и .NET я не знаю...
<< Back Автор: Alter (Александр А. Телятников) Сервер: Apache+PHP под FBSD © 2002-2017