переданный функции open, указывает, что
Флаг, переданный функции open, указывает, что файл открыт только для чтения. Дальнейший доступ к устройству будет выполняться с помощью полученного дескриптора cdd. В Linux 2.4.22 каждый процесс может открыть не более 1048576 дескрипторов одновременно []. Нашим программам этого будет вполне достаточно. Мы предполагаем, что устройство /dev/cdrom установлено в системе и работает правильно, однако, в общем случае неплохо проверить значение дескриптора, возвращенное open, на предмет ошибки (в этом случае функция возвращает -1, переменная errno содержит дополнительный код ошибки).
Вызовы ioctl, связанные с воспроизведением Audio CD, приведены в таблице 1.
Вызов Описание Дополнительный параметр
CDROM_DRIVE_STATUS | Получение данных о состоянии устройства | константа CDSL_XXX |
CDROM_DISC_STATUS | Получение данных о диске | константа CDSL_XXX |
CDROMREADTOCHDR | Чтение заголовка оглавления диска | структура cdrom_tochdr |
CDROMREADTOCENTRY | Чтение элемента оглавления диска | структура cdrom_tocentry |
CDROMSUBCHNL | Чтение данных о параметрах воспроизведения | структура cdrom_subchnl |
CDROMPLAYTRKIND, CDROMPLAYMSF | Воспроизведение аудиозаписи | Структуры cdrom_ti и cdrom_msf |
CDROMSTOP | Остановка воспроизведения | значение 0 |
CDROMPAUSE, CDROMRESUME | Приостановка, возобновление воспроизведения | значение 0 |
CDROMEJECT | Открытие лотка устройства | значение 0 |
CDROMCLOSETRAY | Закрытие лотка устройства | значение 0 |
Таблица 1.Вызовы ioctl, связанные с воспроизведением Audio CD
Результат запросов CDROM_DRIVE_STATUS и CDROM_DISC_STATUS возвращается не в параметре-ссылке, а как результат функции ioctl. В качестве третьего аргумента в этих запросах выступает одна из констант CDSL_XXX, определенных в файле cdrom.h. Эти константы предназначены для работы с устройствами автоматической смены компакт-дисков (CD changers). В случае "однодискового" устройства следует использовать CDSL_CURRENT. Результатом вызова CDROM_DRIVE_STATUS могут быть значения CDS_NO_DISC (нет диска в устройстве), CDS_DRIVE_NOT_READY (устройство не готово), CDS_DISC_OK (диск обнаружен), а также некоторые другие константы из файла cdrom.h. Среди значений, возвращаемых вызовом CDROM_DISC_STATUS, следует отметить CDS_NO_DISC (см. выше) CDS_AUDIO (диск опознан как аудио) и CDS_MIXED (диск опознан как "смешанный"). Остальные значения соответствуют не- аудиодискам. Нижеследующий фрагмент программы проверяет, готов ли CD- дисковод к передаче данных:
Содержание Назад Вперед