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, пишите на
alterX@alter.org.ua (remove X)
PS. На текущий момент я уже написал "правильный" IDE BusMaster driver
для NT4/w2k. Как он поведет себя в XP и .NET я не знаю...
|