Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

    }

 

/* Формируем команду READ CD */

    memset((void *)&cgc, 0, sizeof(struct cdrom_generic_command));

    memset(&sense, 0, sizeof(sense));

    memset(blk_buff, 0, sizeof(blk_buff));

 

    cgc.cmd[0] = GPCMD_READ_CD;

    cgc.cmd[1] = 0; // считывать сектор любого типа

    cgc.cmd[8] = 1; // считывать один сектор

    cgc.cmd[9] = 0xF8; // из сектора считывать все данные (табл.99 INF-8010i)

    cgc.cmd[10] = 2; // считывать данные Q-субканала в общем потоке данных

 

    printf("lba - %d ", lba);

    lba = __swab32(lba);

    memcpy((cgc.cmd + 2), (void *)&lba, 4);

 

    // направление данных – от устройства

    cgc.data_direction = CGC_DATA_READ;

    cgc.buffer = blk_buff; // указатель на буфер для данных

    cgc.buflen = CD_FRAMESIZE_RAW + QSCH_LEN; // размер буфера

    cgc.sense = &sense;

/* Отправляем устройству команду */

    if(ioctl(fd, CDROM_SEND_PACKET, &cgc) < 0) {

           perror("ioctl");

           printf("Sense key - 0x%02x ", sense.sense_key);

           printf("ASC - 0x%02x ", sense.asc);

           printf("ASCQ - 0x%02x ", sense.ascq);

 

           return -1;

    }

 

/* Записываем в файл sector данные основного канала */

    out_f = open("sector", O_CREAT|O_RDWR, 0600);

    write(out_f, blk_buff, CD_FRAMESIZE_RAW);

 

/* В файл qsch - данные Q-субканала */

    out_f = open("qsch", O_CREAT|O_RDWR, 0600);

    write(out_f, blk_buff + CD_FRAMESIZE_RAW, QSCH_LEN);

 

/* Отобразим координаты сектора, находящиеся в заголовке Header */

    printf("Minute - %x ", blk_buff[CD_SYNC_SIZE]);

    printf("Second - %x ", blk_buff[CD_SYNC_SIZE + 1]);

    printf("Frame - %x ", blk_buff[CD_SYNC_SIZE + 2]);

    printf("Mode - %d ", blk_buff[CD_SYNC_SIZE + 3]);

 

    close(fd); close(out_f);

    return 0;

}

Полный листинг программы чтения RAW-секторов компакт-диска с использованием системного вызова IOCTL находится в файле IOCTL/read_sector.c.

После запуска на выполнение программа сохранит данные основного канала в файле sector, данные Q-субканала – в файле qsch и выведет значения координат сектора в MSF формате, считанные из поля Header. Для сектора номер 1001 получим следующий результат:

Minute - 0

Second - 15

Frame - 26

Результаты чтения данных Q-субканала программой read_sector зависят от используемой модели CD-ROM. Для сравнения посмотрим на результаты чтения приводами TEAC и MITSUMI Q-субканала сектора номер 1001.

TEAC:      41 01 01 00 13 27 00 00 15 26 5D 57 00 00 82 00

MITSUMI:      41 01 01 00 13 27 00 00 15 27 5D 57 00 00 82 00


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160]
[161]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100