Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
fd = open(CD_DEVICE, O_RDONLY|O_NONBLOCK);
/* Считываем заголовок TOC */
memset((void *)&hdr, 0, sizeof(struct cdrom_tochdr));
ioctl(fd, CDROMREADTOCHDR, &hdr);
/* Поле cdth_trk0 структуры hdr содержит номер первого трека, а поле cdth_trk1 – номер последнего трека.
* Отобразим эти значения
*/
printf("First: %d ", hdr.cdth_trk0);
printf("Last: %d ", hdr.cdth_trk1);
#define FIRST hdr.cdth_trk0
#define LAST hdr.cdth_trk1
/* Определим формат, в котором мы хотим получить координаты трека. Для этого используется поле cdte_format
* структуры struct cdrom_tocentry
*/
toc.cdte_format = CDROM_LBA;
/* Задавая в поле cdte_track структуры struct cdrom_tocentry последовательно номера треков от первого до последнего,
* мы определяем их стартовые координаты в формате LBA
*/
for(i = FIRST; i <= LAST; i++) {
toc.cdte_track = i;
ioctl(fd, CDROMREADTOCENTRY, &toc);
printf("track: %d ", i); // номер трека
// LBA адрес
printf("lba: %d ", toc.cdte_addr.lba);
}
return 0;
}
Полный листинг программы приведен в файле IOCTL2/get_cd_toc.c.
Рассмотрим программу, которая каждые 2 секунды отслеживает текущее положение оптического элемента, отображает координату текущего сектора (в форматах LBA и MSF) и номер трека.
#define CD_DEVICE "/dev/cdrom"
int main()
{
int fd, current_track;
/* Координаты текущего сектора находятся в Q-субканале. Для чтения данных Q-субканала используется спецификатор
* CDROMSUBCHNL, считанные данные помещаются в структуру struct cdrom_subchnl (см. <linux/cdrom.h>)
*/
struct cdrom_subchnl sc;
/* Открываем файл устройства */
fd = open(CD_DEVICE, O_RDONLY|O_NONBLOCK);
/* Проверяем тип компакт-диска. Это должен быть Audio-CD */
if(ioctl(fd, CDROM_DISC_STATUS) != CDS_AUDIO) {
printf("I need Audio_CD! ");