Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
return 0;
}
/* Считывание координат производим в бесконечном цикле */
for(;;) {
/* Задаём формат адреса LBA и считываем координаты сектора */
sc.cdsc_format = CDROM_LBA;
ioctl(fd, CDROMSUBCHNL, &sc);
current_track = sc.cdsc_trk;
/* Отображаем данные о текущем треке и координате в формате LBA */
printf("Track: %d ", current_track);
printf("LBA: %d ", sc.cdsc_absaddr.lba);
/* То же самое - для формата MSF */
sc.cdsc_format = CDROM_MSF;
ioctl(fd, CDROMSUBCHNL, &sc);
printf("MSF: %d %d %d ", sc.cdsc_absaddr.msf.minute, sc.cdsc_absaddr.msf.second, sc.cdsc_absaddr.msf.frame);
/* Ждем две секунды и повторяем. Выход по Ctrl-C */
sleep(2);
}
return 0;
}
Полный текст программы находится в файле IOCTL2/read_sch.c.
Теперь делаем вот что – в одной консоли запускаем проигрыватель аудиокомпакт-дисков (workbone, например), а в другой – программу read_sch. Через каждые 10-15 секунд воспроизведения переходим к следующему треку на компакте и смотрим на результаты работы read_sch. Получается примерно следующая картина:
Track: 1 LBA: 0 MSF: 0 2 0
Track: 1 LBA: 150 MSF: 0 4 0
Track: 1 LBA: 301 MSF: 0 6 1
Track: 1 LBA: 451 MSF: 0 8 1
Track: 1 LBA: 602 MSF: 0 10 2
Track: 1 LBA: 753 MSF: 0 12 3
Track: 2 LBA: 23962 MSF: 5 21 37
Track: 2 LBA: 24112 MSF: 5 23 37
Track: 2 LBA: 24263 MSF: 5 25 38
Track: 2 LBA: 24414 MSF: 5 27 39
Track: 2 LBA: 24565 MSF: 5 29 40
Track: 3 LBA: 40191 MSF: 8 57 66
Track: 3 LBA: 40342 MSF: 8 59 67
Track: 3 LBA: 40492 MSF: 9 1 67
Track: 3 LBA: 40643 MSF: 9 3 68
Track: 3 LBA: 40794 MSF: 9 5 69
и т. д. Результаты работы программы красноречиво свидетельствуют о постоянном изменении текущей координаты.
И наконец, последний пример, который мы рассмотрим в данной статье, – это еще одна функция, считывающая треки с Audio-CD:
int read_cdda_track()
{
int fd, out, n;
__u32 i, start_lba, end_lba;
__u16 buff[CD_FRAMESIZE_RAW/2];
struct cdrom_tochdr hdr;